كيف استيقظ مراقبي بلدي ويندوز تحولت مرة واحدة من قبل إعدادات الطاقة؟

StackOverflow https://stackoverflow.com/questions/332649

  •  22-07-2019
  •  | 
  •  

سؤال

وهكذا تم تعيين الجهاز الخاص بي ويندوز فيستا لإيقاف ذلك المراقبين في الدقيقة 10. (ملاحظة: لم يتم إيقاف الجهاز، أو سبات)

ولدي تطبيق صافي التوالي، التي تحتاج إلى "أعقاب" النظام في وقت محدد. كإنسان، كنت مجرد تحريك الماوس أو الضغط على مفتاح. كيف أفعل هذا برمجيا؟

ولقد حاولت: وضع برمجيا المؤشر. باستخدام "SendKeys". وحتى pinvoking CreateWaitableTimer إلغاء تعليق (على الرغم من انها ليست مع وقف التنفيذ) على أمل أن ذلك من شأنه أن يؤدي شيئا.

ومن الناحية المثالية أن التعليمات البرمجية في ج # يكون كبيرا، إلا أن فوز API الصحيح كافيا.

وشكرا جزيلا مقدما.

هل كانت مفيدة؟

المحلول

ويجب أن تكون قادرة على السيطرة على مراقبة السلطة عن طريق إرسال رسائل قيادة النظام كما يلي. لاحظ أن هذا هو اختبار ويندوز إكس بي، ويندوز فيستا قد تغيرت الأمور نوعا ما لذلك ستحتاج لاختباره وإعلامنا.

وهذا الرمز هو في VB لكن يمكنك أن ترى الدعوة API Win32 الذي يستخدم. تحتاج إلى تمرير مقبض نافذة على وظيفة حتى الشفرة سوف تحتاج إلى النافذة التي أنشئت لمعالجة الرسالة (فقط تمر من خلال لوظيفة معالجة الإطار الافتراضي).

Const SC_MONITORPOWER As Integer = &HF170
Const WM_SYSCOMMAND As Short = &H112S
Private Function SendMessage(
    ByVal Handle As Int32,
    ByVal wMsg As Int32,
    ByVal wParam As Int32,
    ByVal lParam As Int32) As Int32
End Function
Sub MonStandBy(hWnd as Int32)
    SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 1)
End Sub
Sub MonOff(hWnd as Int32)
    SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2)
End Sub
Sub MonOn(hWnd as Int32)
    SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1)
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top