2015-04-07 123 views
1

是否有可能創建一個偵聽程序,該窗口每次在WindowsOS中丟失窗口焦點然後運行回調函數?我使用win32api,win32net,wmi,win32gui,win32process。我正在使用GetActiveWindow()獲取我需要的信息,但是我正在使用睡眠定時器進行此操作,我想知道是否有一個列表程序可以附加處理程序來處理每次窗口焦點在WindowsOS中的任何窗口發生更改。如何在使用win32的窗口中創建窗口焦點偵聽器

回答

1

SetWinEventHook(EVENT_OBJECT_FOCUS, EVENT_OBJECT_FOCUS, 0, HandleWinEvent, 0, 0, WINEVENT_OUTOFCONTEXT)

void CALLBACK HandleWinEvent(HWINEVENTHOOK /*hook*/, DWORD event, HWND hwnd, 
          LONG /*idObject*/, LONG /*idChild*/, 
          DWORD dwEventThread, DWORD dwmsEventTime) 
{ 
    if (event == EVENT_OBJECT_FOCUS) 
    { 
     DbgPrint("%u:%x %p\n", dwmsEventTime, dwEventThread, hwnd); 
    } 
}