我正在使用 Windows 11 并使用 WinKey TAB 創建多個桌面。它們具有非常漂亮的功能,即 ALT TAB 僅顯示給定桌面上存在的視窗,從而大大減少了視覺混亂。它還能夠在所有桌面上顯示選定的視窗。我認為這些虛擬桌面在 Windows 11 之前也可用。
但是,當我使用 Win32 控制臺應用程式列舉桌面時,執行GetProcessWindowStation()的簡單組合,然后呼叫EnumDesktops(),無論我創建了多少桌面,我都會得到相同的答案。我有兩個桌面名為:DummyDesktopForInstantResume和Default
因此,WinKey Tab 的“桌面”似乎與EnumDesktops()的“桌面”不同。
我用 Spy 做了一些額外的挖掘,它只顯示了一個根桌面,所有的視窗都屬于那個桌面。無論 Spy “出現”在哪個桌面上,它總是顯示相同的視窗串列。而且無論應用程式出現在哪個桌面上,它總是具有相同的視窗句柄(如預期的那樣)。
有誰知道我們如何列舉 Windows 11 中 WinKey TAB 創建的虛擬桌面?謝謝
uj5u.com熱心網友回復:
因此,WinKey Tab 的“桌面”似乎與 EnumDesktops() 的“桌面”不同。
不,他們不是。它們是在用戶當前的 Win32 桌面內運行的“虛擬”桌面。虛擬桌面只是一個視窗管理系統,一種讓用戶將多個視窗組合在一起然后將這些組作為一個整體隱藏/顯示的方法。Raymond Chen 在博客中寫道:
虛擬桌面是最終用戶視窗管理功能,而不是程式化功能
虛擬桌面是一種視窗管理功能,而不是安全功能或性能功能。此外,它們是供最終用戶組織他們的視窗的,而不是供其他程式組織視窗的。
有誰知道我們如何列舉 Windows 11 中 WinKey TAB 創建的虛擬桌面?
不幸的是,沒有可用于列舉這些虛擬桌面的公共API(但有一個未記錄的內部 API可以)。公共IVirtualDesktopManager介面非常有限,它只允許您查詢給定視窗是否屬于當前活動的虛擬桌面,并將視窗移動到特定的虛擬桌面。而已。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/450491.html
標籤:温纳皮
上一篇:在等待輸入時避免浪費CPU周期
