如何使用win32在Windows中创建窗口焦点监听器

时间:2015-04-07 06:55:58

标签: python winapi pywin32 win32-process

是否有可能创建一个侦听器,每次窗口在WindowsOS中失去焦点时都会监听,然后运行回调函数?我正在使用win32api,win32net,wmi,win32gui,win32process。我正在使用GetActiveWindow()获取我需要的信息,但我正在使用睡眠计时器这样做,我想知道可能有一个列表器,我可以附加一个处理程序来处理每次窗口焦点更改为WindowsOS中的任何窗口时

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

这是在Python中使用SetWinEventHook的更详细示例:How to use winapi SetWinEventHook in python?