2016-08-23 23 views
1

在Windows 10中,可以从任务栏打开几个菜单/面板,例如“操作中心”和“音量面板”等。如果我尝试使用EnumWindows(),则未列举这些窗口,我找到了解决方法 - - 而不是使用EnumWindows(),我使用FinWindowEx(),现在我可以枚举这些面板和其他Metro UI特定的菜单。有没有办法找出Metro UI面板在Windows 10中是否可见?

唯一的问题是我无法确定它们是否可见。如果我尝试拨打IsWindowVisible()并将“动作中心”HWND作为参数,则该函数始终返回TRUE。对于其他Metro UI面板(电池使用面板,音量面板,搜索面板等)也有同样的结果。

+1

为什么不问你想解决的实际问题,而不是询问你的解决方案? – IInspectable

+0

我认为这个问题有点复杂,但可能必须是因为它为科学公司试图实现的目标提供了更多背景。此外,它还填补了显示问题的要求和“迄今为止尝试过的内容”的要求。他/她找到了窗户,但正试图了解它们是否真的可见。这是一个有效的问题(我不幸的是没有答案)。 –

+0

@ScienceSE - 你能提供一点点背景知道为什么你需要这些信息吗?像这样的数据点有时可以帮助创建这些API的工程师决定他们是否应该帮助您,或者公开/记录可以实现您所需的API的API。 –

回答

3

我刚刚找到了解决方案。由于到目前为止还没有答案,我认为这是一个最好的解决方案(目前我不知道其他解决问题的方法)。

因此,基本上为了识别窗口是否可见,我们调用DwmGetWindowAttribute()函数(除IsWindowVisible()之外)通过DWMA_CLOAKED作为第二个参数。当那些Windows 10特定面板在屏幕上可见时,此属性设置为0

相关问题