我正在开发的桌面应用程序需要知道运行该应用程序时哪些窗口处于活动状态。目前,它每250毫秒执行一次GetForegroundWindow()呼叫user32.dll。该方法不是很准确。
GetForegroundWindow()
user32.dll
是否有任何Windows(WINAPI?)事件会在每次更改活动(聚焦)窗口时触发?我想订阅我的回调函数。
谢谢。
是的,您可以使用SetWinEventHook函数。
hEvent = SetWinEventHook(EVENT_SYSTEM_FOREGROUND , EVENT_SYSTEM_FOREGROUND , NULL, WinEventProcCallback, 0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS); ....... VOID CALLBACK WinEventProcCallback ( HWINEVENTHOOK hWinEventHook, DWORD dwEvent, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime) { /* your code here */ }