windows – 在我的应用程序激活之前检测哪些窗口处于活动状态
发布时间:2020-12-14 01:52:01 所属栏目:Windows 来源:网络整理
导读:在Delphi XE中,我尝试使用GetForegroundWindow来检测在应用程序激活之前立即激活的窗口. “已激活”表示应用程序可能已从标志状态恢复,或者已通过alt选项卡切换,或通过激活热键等启动. 问题是所有可用的应用程序事件(OnActivate,OnRestore)来得太晚,因此GetF
在Delphi XE中,我尝试使用GetForegroundWindow来检测在应用程序激活之前立即激活的窗口. “已激活”表示应用程序可能已从标志状态恢复,或者已通过alt选项卡切换,或通过激活热键等启动.
问题是所有可用的应用程序事件(OnActivate,OnRestore)来得太晚,因此GetForegroundWindow返回我自己的表单的句柄.主要形式的事件甚至没那么有用.在主窗体中处理WM_ACTIVATEAPP也发生得太晚了. 一种方法是在我的应用程序未激活时继续检查计时器上的活动窗口,但这似乎相当浪费.一个更好的解决方案是继承TApplication.WndProc并在处理WM_ACTIVATEAPP之前完成我的工作,但我不认为TApplication可以是子类. 有没有更好的办法? 解决方法
当您的应用程序激活时,它将成为最顶层的窗口. IOW,它跳到顶部Z顺序位置.
有了这个,之前的最顶层窗口被降级为“正好在新的最顶层窗口下方”位置. IOW,它在Z顺序位置成为第二位. 调用GetNextWindow并传递表单句柄和GW_HWNDNEXT可能会给你所需的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读