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)?
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.
Tags und Links windows winapi windows-xp