gpt4 book ai didi

c++ - 如何使用 SetWinEventHook() 函数获取事件窗口更改消息

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:04 26 4
gpt4 key购买 nike

我一直在做一个需要检测当前事件窗口并连续获取事件窗口标题的项目。谁能解释一下如何使用 SetWinEventHook() 函数获取 Active Window changed 消息。[ 我使用带有计时器的 GetForegroundWindow() 函数来获取事件窗口。由于计时器的原因,该方法不是很准确。所以我需要将它与 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)
{
/* how to get active window message */
}

最佳答案

我找到了解决方案。 EVENT_SYSTEM_FOREGROUND事件是缺失的部分。即使前景窗口已更改为另一个窗口,系统也会发送此事件。我们可以使用此事件来获取当前事件窗口。

VOID CALLBACK WinEventProcCallback ( HWINEVENTHOOK hWinEventHook, DWORD dwEvent, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime)
{
if (dwEvent == EVENT_SYSTEM_FOREGROUND)
{
/* do something */
}
}

关于c++ - 如何使用 SetWinEventHook() 函数获取事件窗口更改消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30999516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com