我使用的是Windows 11,使用WinKey+TAB,我创建了几个桌面。它们具有非常巧妙的特性,即ALT+TAB只显示给定桌面上的窗口,从而极大地减少了视觉混乱。它还可以在所有桌面上显示选定的窗口。我认为这些虚拟桌面在Windows 11之前也是可用的。
但是,当我使用一个GetProcessWindowStation()和EnumDesktops()调用的简单组合的Win32控制台应用程序枚举桌面时,无论我创建了多少台桌面,我都会得到相同的答案。我有两台台式机名为:DummyDesktopForInstantResume和默认
因此,似乎EnumDesktops()‘桌面’与WinKey+Tab‘桌面’是不一样的。
我对Spy++做了一些额外的挖掘,它只显示了一个根桌面,其中包含属于该桌面的所有窗口。无论在哪个桌面上Spy++“出现”,它总是显示相同的窗口列表。而且,无论应用程序在哪台桌面上显示,它始终具有相同的窗口句柄(如预期的那样)。
有人知道如何枚举Windows 11中由WinKey+TAB创建的虚拟桌面吗?谢谢
发布于 2022-03-09 16:42:03
因此,WinKey+Tab‘桌面’似乎与EnumDesktops()‘桌面’不一样。
不,他们不是。它们是运行在用户当前Win32桌面内部的“虚拟”桌面。虚拟桌面仅仅是一个窗口管理系统,它让用户将多个窗口组合在一起,然后隐藏/显示这些组作为一个整体。雷蒙德·陈在博客上写道:
虚拟桌面是一种窗口管理功能,而不是安全功能或性能特性。此外,它们是为最终用户组织他们的窗口,而不是为其他程序组织窗口。有人知道如何枚举Windows 11中由WinKey+TAB创建的虚拟桌面吗?
不幸的是,没有可用的公共API来枚举这些虚拟桌面(但是有一个内部API可以)。公共IVirtualDesktopManager
接口非常有限,它只允许您查询给定窗口是否属于当前活动的虚拟桌面,并将窗口移动到特定的虚拟桌面。没别的了。
https://stackoverflow.com/questions/71410858
复制相似问题