所以,我认为这很简单,而且我错了.以下是该问题的简要说明:
我正在为我们的制造人员编写一个小应用程序,当他们单击系统托盘中的应用程序图标时,将抓取整个桌面和前台窗口的屏幕截图.目前,我在NotifyIcon的MouseMove事件中使用Win32方法"GetforegroundWindow"来保存前景窗口句柄并在Click事件中截取屏幕截图.
这有时会起作用,但是如果我很快点击图标,我实际上会捕获任务栏而不是前景窗口.我不知道为什么会发生这种情况(我明白任务栏是一个窗口,我不明白为什么有时它似乎在我点击之前在MouseMove中有焦点),而且我没有运气使用EnumWindows方法同样,可能是因为我不完全理解它是如何工作的.
看来,如果我能够仅使用窗口句柄获得每个窗口的z位置,那么使用EnumWindows解决这个问题就很容易了.然而,我还没有找到一种方法.
所以,我问你们; 你会如何写一个方法来可靠地定位前景窗口,因为它当时可能没有焦点?要么我的google-fu失败了,要么关于这方面的信息很少.提前致谢.
任务栏与任何前台窗口一样有效。当您单击它时,它将暂时成为前台窗口。例如,如果您单击“开始”并按 Esc 键,它将成为前台窗口,直到您单击它为止。
您可以将GetWindow与 HWND_NEXT 一起使用,传入任务栏的窗口句柄。
没关系,由于任务栏是最顶层的窗口,GetWindow(或 GetNextWindow 等)的操作方式会有所不同。我建议重新审视EnumWindows解决方案,这可能是您最好的选择。
| 归档时间: |
|
| 查看次数: |
2303 次 |
| 最近记录: |