Windows API有一个名为GetForegroundWindow
的方法。 但是,当您点击它时,它会将桌面视为前景窗口。 我们都知道,当它发生时,以前的前景窗口不会被它叠加。 如何获得真正的前景窗口句柄?如何在Windows上获取前景窗口?
回答
我想你是在过度工程你的解决方案。如果您的应用程序窗口在您收到更新时不是前台窗口,请将该窗口刷新。闪烁的目的是捕捉用户的注意力,并且您无法确定您是否以编程方式注意到他们的注意力。
看起来你真正想知道的是:“我的窗口部分是否可以对用户显示?”这是一个相当复杂的问题,即使您正确回答,您也无法知道用户是否会注意到这一变化。
的社区指南是什么,我只是想实现它,因为我测试了另一个应用程序(Google Talk),它的工作原理与我描述的一样。 – 2011-03-02 00:05:03
@Jader:即使你决心要做到这一点,找到“前景”窗口并不是要走的路 - 正如Peter在他对你的问题的评论中指出的那样,可能有不止一个(而且他们可能不是无论如何都会遮住你的*窗口)。如果你只是想知道用户能否看到你的窗口,我怀疑检查剪切区域(对于你的**窗口)是要走的路......但这是另一个问题的主题。 – Shog9 2011-03-04 02:07:36
两个“桌面”(探险桌面上的真正的桌面窗口的顶部列表视图)和任务栏是真正的Windows这里可能是“工作”的用户(Tab'ing左右,使用菜单等)
如果你想找到坏你必须自己找到它的“真正的”前台窗口,最好的办法是在Z顺序的顶部会为窗口,也许是这样的:
... enumfunc(hwnd,...)
{
if (GetClassName(hwnd)!= "Shell_TrayWnd")
{
if (IsWindowEnabled(hwnd) && IsWindowVisible(hwnd) && GetWindow(hwnd,GW_OWNER)==NULL)
{
DoSomethingWithRealForegroundWindow(hwnd)
return FALSE
}
}
}
EnumWindows(enumfunc,0)
TaskSwitchXP是一个开放源替代标签,它可能有一个更好的算法,你可以使用...
- 1. 在Windows 8上设置前景窗口
- 2. 如何在前景窗口获取之前捕获击键?
- 3. 如何不断获取当前的前景窗口?
- 4. 如何在无窗口的Windows窗体上获取Aero Glass?
- 5. 如何在滑动窗口中获取当前窗口时间?
- 6. 如何获取所有用户的前景窗口?
- 7. 如何从Windows服务获取前台窗口?
- 8. 如何强制Mac窗口前景?
- 9. 窗口前景无窗口把手
- 10. 如何在创建任何窗口之前获取窗口框架的宽度?
- 11. SAPUI5:获取存在于当前窗口
- 12. Applescript - 使窗口前景
- 13. Popup只有前景窗口
- 14. 按下热键时获取前景窗口
- 15. 在弹出窗口上获取当前窗口(谷歌浏览器扩展名)
- 16. 在开始之前在窗口上等待Git获取
- 17. 获取背景窗口列表。
- 18. 获取背景窗口的缩略图
- 19. 获取python景的窗口宽度
- 20. 获取窗口背景颜色
- 21. 如何在Python中获取当前活动窗口的名称?
- 22. 获取Windows下的当前窗口位置
- 23. 如何获取当前活动的Windows资源管理器窗口的HWND?
- 24. c# - 将当前窗口设置为前景窗口
- 25. 在python/kivy上获取当前窗口小部件的id
- 26. 如何在UserControl中获取主窗口
- 27. 如何在iOS中获取主窗口?
- 28. 如何在LockScreen中获取窗口()?
- 29. 如何获取当前窗口ID或某个Outlook新电子邮件窗口。
- 30. 如何在子窗口中获取父窗口标签的html?
假设您在桌面上有两个可见的窗口。点击桌面后,哪一个是“真正的”前景窗口? – 2011-03-01 19:29:04
这将有助于知道你想要达到的目标。你写的问题没有意义。 – 2011-03-01 20:03:47
这绝对不是正常的行为,在我的任何机器上都没有见过。注意尝试模拟桌面的'附加组件'。 – 2011-03-01 20:04:38