Überwachen von Energieanzeigeereignissen unter Windows XP

8

Unter Windows erhält nur die fokussierte Anwendung über die WM_SYSCOMMAND Nachricht (wobei wParam auf SC_MONITORPOWER und lParam auf den neuen Energiezustand gesetzt ist).

Unter Windows Vista und höher kann die Anwendung any über die Anzeigenergnereignisse informiert werden, indem Sie RegisterPowerSettingNotification Funktion mit dem GUID_SESSION_DISPLAY_STATUS GUID.

Gibt es eine Möglichkeit, unter Windows XP auf Anwendungsebene dasselbe Ergebnis zu erzielen (d. h., es wird kein Code verwendet, der im Kernelmodus ausgeführt wird)?

    
Wizard79 20.02.2012, 15:48
quelle

2 Antworten

2

Alles, was Sie tun müssen, ist WM_SYSCOMMAND zu behandeln. Optionen, die ich mir vorstellen kann:

  • Verwenden Sie dazu SetWindowsHookEx (mit WH_CBT ).

  • Injizieren Sie eine DLL in jeden Prozess, der CreateProcess hakt und sich in alle zukünftigen Prozesse einfügt, im Wesentlichen das gesamte System einhakt. Die oben erwähnte DLL wird dann alle Fenster im aktuellen Prozess ableiten, und Sie können WM_SYSMESSAGE von dort aus behandeln.

user2058002 29.02.2012, 22:39
quelle
-1

Kannst du nicht einfach die Nachricht WM_POWERBROADCAST in deinem WindowProc bearbeiten und einmal GetSystemPowerStatus aufrufen?

    
Gunner 25.02.2012 02:02
quelle

Tags und Links