是否有活动窗口的Windows系统事件改变了吗? [英] Is there Windows system event on active window changed?

查看:245
本文介绍了是否有活动窗口的Windows系统事件改变了吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

桌面应用程序我开发需要知道什么窗户是活跃的,而应用程序运行。目前,它执行 GetForegroundWindow()通话( user32.dll中)的每250毫秒。这种方法不是很准确。

The desktop application I'm developing need to know what windows were active while the application was run. Currently it performs GetForegroundWindow() call (of user32.dll) every 250 msec. The approach is not very accurate.

是否有任何的Windows(WINAPI?)事件而触发每一个活动(聚焦)窗口中更改时间?我要订阅我的回调函数。

Is there any Windows (WINAPI?) event which fires every time the active (focused) window changed? I'd like to subscribe with my callback function.

感谢。

推荐答案

是的,你可以使用的 SetWinEventHook 功能。

Yes, you can use SetWinEventHook function.

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 */
}

这篇关于是否有活动窗口的Windows系统事件改变了吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆