2009-05-20 134 views
3

我正在开发一个位于系统托盘中的应用程序,并且可以在活动窗口上执行操作。但是当系统托盘中的图标被点击时,GetForegroundWindow()返回任务栏。我需要获取在任务栏之前处于活动状态的窗口。获取上次激活窗口的窗口句柄

我试着用EnumWindowsGetWindow来枚举桌面窗口,但是这往往会导致桌面小工具和其他不活跃的顶级项目。甚至有可能,或者窗口停用时信息完全丢失?

回答

2

我想获得这些信息的唯一途径就是通过WH_CALLWNDPROC安装系统全局钩子(SetWindowsHookEx)和捕捉所有WM_ACTIVATEAPP。这甚至可以让你跟踪哪个窗口处于活动状态时的完整历史记录。

+0

这工作得很好。不过,我有一个关于某些应用程序未受影响的问题,因为它们是64位(如果我为64位编译,则为32位)。有任何想法吗? – 2009-05-20 00:24:02