对于Windows 10,任务管理器是一种特殊的"永远在线"窗口吗?

The*_*ook 4 c++ windows winapi windows-7 windows-10

如果我的窗口有"永远在线"的扩展样式集,我希望它在所有没有"Always on top"样式集的窗口之上,以及那些具有"Always on top"样式集的窗口但是在我的窗口被激活之前被激活了.

要测试此功能,我打开任务管理器窗口 - 将其设置为始终在顶部,然后打开我的窗口(myWindow).

在Windows 7中,我观察到了预期的行为 - myWindow来自任务管理器.

但是,在Windows 10中,情况并非如此.任务管理器"始终位于其他窗口的顶部",即使这些窗口本身具有"始终在线"样式集.

他们在Windows 10中的任务管理器有什么特别之处吗?如果是,是否有一些工作可以将我的窗口置于任务管理器之上?我试过简单地使用该BringWindowToTop功能,但这不起作用.无论是不setWindowPosHWND_TOP作为一个值hWndInsertAfter的论点.

Cod*_*ray 9

在Windows 8中对任务管理器进行了大量更改.在这些更改中,特殊情况代码确保它始终位于所有其他始终在顶部的窗口之上,这一点都不奇怪.由于任务管理器是操作系统的内置部分,因此Microsoft不会违反任何合同保证.它可以随意使用OS组件.

要回答您的实际问题,没有针对此的文档API.WS_EX_TOPMOST是你得到的最好的.它意味着对用户的帮助,而不是在他们的视网膜上蚀刻应用程序窗口的方法.

当两个不同的窗口设置了此样式时,该行为与实现有关.你得到的唯一保证是具有WS_EX_TOPMOST风格的窗户总是在其他窗口的顶部,没有这种风格的Z顺序.系统可以在其认为合适的情况下自由解决冲突,包括将最近活动的最顶层窗口保持在最顶层,通过强制属于系统组件的窗口到顶部来打破平局,甚至惩罚具有多个窗口的窗口.这种风格通过强制他们的窗口到"最顶层"堆栈的底部.

相关阅读:


Pau*_*aul 5

根据我前一段时间做的一项小型研究:

  • 任务管理器的确是“特殊的”“永远在线”。
  • 正在使用以下未记录的功能创建“任务管理器”窗口:CreateWindowInBand
  • 尝试从另一个进程使用此功能会导致ERROR_ACCESS_DENIED。也许只有经过签名的Microsoft进程才能使用它。

  • @TheBlueNotebook 尝试“USER32.GetWindowBand”。 (2认同)