2015-04-07 126 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); 
    } 
}