Windows 10中的这些照片和设置窗口是什么

时间:2018-03-10 03:25:48

标签: winapi

我写了一个小程序来转储我的Windows 10机器上所有可见窗口的窗口大小。我使用EnumWindows / FindWindows以通常的方式检索窗口,并且我只获取了具有非空标题字符串和WS_VISIBLE样式属性的窗口。在大多数情况下,列表生成了我在屏幕上可以看到的所有窗口,在适当的像素位置,具有适当的像素大小(x,y,宽度和高度)。

但是......列出了4个额外的窗口(窗口11到14):两个标题为“照片”,两个标题为“设置”,位置和大小如下:

  11 'Photos'
      Left 0 Top 8 Width 2560 Height 1400
  12 'Photos'
      Left 994 Top 11 Width 561 Height 828
  13 'Settings'
      Left 0 Top 32 Width 1200 Height 900
  14 'Settings'
      Left 355 Top 63 Width 1216 Height 940

即使它们存在且具有VISIBLE窗口属性和标题字符串,它们仍然不可见。

关于我的桌面唯一“不寻常”的是我正在运行一个名为Fences的程序,它将我的图标分组。但是有11个图标组,而不是4.如果是问题,我会期望11个额外的奇怪窗口具有相同的标题,而不是我在列表输出中看到的2xPhotos和2xSettings。因此,小图标分组Fences程序似乎不太可能产生效果。

有谁可以解释发生了什么?他们可能是某种透明的系统窗口,如果是这样,为了什么目的?我在网上搜索但空手而归。谢谢。

更新1:在RbMn的评论指向另一个类似的帖子后

另一篇帖子暗示神秘窗口是Windows Store窗口,并提供了一些屏幕截图,显示一对顶级窗口将ApplicationFrameWindow作为类名和第一个子Windows.UI.Core.CoreWindow.和在我的情况下,帖子的那部分是真的(参见下面的跟踪输出)。

  9 'Photos'
      Left 0 Top 8 Width 2560 Height 1400
      ClassName:  Windows.UI.Core.CoreWindow
  10 'Photos'
      Left 994 Top 11 Width 561 Height 828
      ClassName:  ApplicationFrameWindow
  11 'Settings'
      Left 0 Top 32 Width 1200 Height 900
      ClassName:  Windows.UI.Core.CoreWindow
  12 'Settings'
      Left 355 Top 63 Width 1216 Height 940
      ClassName:  ApplicationFrameWindow

但是,另一篇帖子说“这表明了你的问题的答案:如果顶层窗口是ApplicationFrameWindow类,则迭代它的子节点。如果第一个子节点有类Windows.UI.Core.CoreWindow,窗口是可见的,否则,它不是(即它是幻影)。“我的4个神秘窗口对我来说似乎是“幽灵”,因为我看不到它们,即使它们具有WS_VISIBLE属性。

更新2:DWMWA_CLOAKED

另一篇文章讨论了隐形窗口以及如何从桌面窗口管理器API函数DwmGetWindowAttribute(.... CLOAKED ...)中获取隐形状态。提供了一个代码段。我用它来获取我的4个神秘窗口的隐形状态,但是它们都没有被遮盖(尽管我看不到它们)。如果窗口是隐形的,则状态为非零,可以是1(cloaked_app),2(cloaked_shell)或4(cloaked_inherited)。就我而言,在所有4个案例中,状态为0(无伪装)。

  9 'Photos'
      Left 0 Top 8 Width 2560 Height 1400
      ClassName:  Windows.UI.Core.CoreWindow
      Cloaked:    no
  10 'Photos'
      Left 994 Top 11 Width 561 Height 828
      ClassName:  ApplicationFrameWindow
      Cloaked:    no
  11 'Settings'
      Left 0 Top 32 Width 1200 Height 900
      ClassName:  Windows.UI.Core.CoreWindow
      Cloaked:    no
  12 'Settings'
      Left 355 Top 63 Width 1216 Height 940
      ClassName:  ApplicationFrameWindow
      Cloaked:    no

那么,虽然这些是系统(Windows Store?)窗口,但如果它们具有WS_VISIBLE属性并且没有隐藏,它们仍然是不可见的。 (我猜可能CLOAKED告诉DWM不要在屏幕上渲染窗口?)

0 个答案:

没有答案