السلام عليكم
حياكم الله
يوجد فى كثير من الأحيان تحتاج إلى ترك شاشة حاسوبك المحمول ليست مطوية و فى نفس الوقت تريد ان تطفئ الشاشة !
يوجد فى بعض الحواسيب زر مخصوص لهذا الأمر و هو مستقل عن نظام التشغيل فى العادة لكى يقوم بهذه الوظيفة
و لكن هب أن هذا الزر غير متوفر فى حاسوبك فما العمل !!!!
فى كثير الكثير من الأحيان أقوم بعمل تحميل من على الشبكة و هذا التحميل قد يأخذ وقت كبير
فلا أنا أستطيع أن أغلق حاسوبى و لا أنا أريد أن أطوى شاشته لكون هذا الأمر يجعل الحرارة المنبعثة منه تمتصها الشاشة و تظل الحارة حبيسة فى الحاسوب لفترة طوية بدون تهوية
و طبعا من يملك حاسوب محمول يعلم أنه فى بعض الأحيان يصلح لكى يتم الشواء عليه :lol:
المهم قمت بالبحث عن كيفية عمل هذا فوجدت الأمر بسيط جدا
فى الكود التالى كيفية عمل هذا ببساطة شديدة للغاية
private [color= #993333;]const [color= #993333;]int MONITOR_OFF [color= #339933;]= [color= #cc66cc;]2;
private [color= #993333;]const [color= #993333;]int SC_MONITORPOWER [color= #339933;]= 0xf170;
private [color= #993333;]const [color= #993333;]int WM_SYSCOMMAND [color= #339933;]= 0x112;
[color= #993333;]static [color= #993333;]void Main[color= #009900;]([color= #993333;]string[color= #009900;][[color= #009900;]] args[color= #009900;])
[color= #009900;]{
System.[color= #202020;]Threading.[color= #202020;]Thread.[color= #202020;]Sleep[color= #009900;]([color= #cc66cc;]100[color= #009900;]);
Program.[color= #202020;]TurnOffLCD[color= #009900;](Console.[color= #202020;]Title[color= #009900;]);
[color= #009900;]}
[color= #009900;][DllImport[color= #009900;]([color= #ff0000;]"user32.dll", SetLastError [color= #339933;]= [color= #000000; font-weight: bold;]true[color= #009900;])[color= #009900;]]
private [color= #993333;]static [color= #000000; font-weight: bold;]extern IntPtr FindWindow[color= #009900;]([color= #993333;]string lpClassName, [color= #993333;]string lpWindowName[color= #009900;]);
[color= #009900;][DllImport[color= #009900;]([color= #ff0000;]"user32.dll"[color= #009900;])[color= #009900;]]
private [color= #993333;]static [color= #000000; font-weight: bold;]extern [color= #993333;]int SendMessage[color= #009900;](IntPtr hWnd, [color= #993333;]int hMsg, [color= #993333;]int wParam, [color= #993333;]int lParam[color= #009900;]);
public [color= #993333;]static [color= #993333;]void TurnOffLCD[color= #009900;]([color= #993333;]string windowName[color= #009900;])
[color= #009900;]{
SendMessage[color= #009900;](FindWindow[color= #009900;]([color= #000000; font-weight: bold;]null, windowName[color= #009900;]), WM_SYSCOMMAND, SC_MONITORPOWER, [color= #cc66cc;]2[color= #009900;]);
[color= #009900;]}نقوم بإرسال رسالة إلى نافذة البرنامج نقول لها أن تقوم بإطفاء الشاشة فقط :D
و ذلك بإستخدام SendMessage الموجودة فى user32
المعامل الأخير من الممكن أن يكون 0 أو 1 أو 2
2 للإطفاء الشاشة
1 لتشغيلها
0 لا أعرفها !!
