【发布时间】:2009-05-20 00:02:47
【问题描述】:
我正在开发一个应用程序,它位于系统托盘中,可以在活动窗口上执行操作。但是当单击系统托盘中的图标时,GetForegroundWindow() 会返回任务栏。我需要获取在任务栏出现之前处于活动状态的窗口。
我尝试使用EnumWindows 和GetWindow 枚举桌面窗口,但这通常会显示桌面小工具和其他最后不活动的顶级项目。是否有可能,或者当窗口被停用时信息完全丢失?
【问题讨论】:
我正在开发一个应用程序,它位于系统托盘中,可以在活动窗口上执行操作。但是当单击系统托盘中的图标时,GetForegroundWindow() 会返回任务栏。我需要获取在任务栏出现之前处于活动状态的窗口。
我尝试使用EnumWindows 和GetWindow 枚举桌面窗口,但这通常会显示桌面小工具和其他最后不活动的顶级项目。是否有可能,或者当窗口被停用时信息完全丢失?
【问题讨论】:
我认为获取该信息的唯一方法是在 WH_CALLWNDPROC 上安装系统范围的挂钩 (SetWindowsHookEx) 并捕获所有 WM_ACTIVATEAPP。这甚至可以让您跟踪哪个窗口在何时处于活动状态的完整历史记录。
【讨论】: