在 Windows 10 中将应用程序固定到多个桌面

在 Windows 10 中将应用程序固定到多个桌面

Windows 的一大新功能是它现在原生支持多个“虚拟”桌面,让您可以将多个窗口集合在一起并区分任务组。

这很好。

您可以通过单击“任务”按钮,然后右键单击应用程序窗口并选择“移动到......”在桌面之间移动窗口。

这有点笨重而且不太好。

我有两个显示器,经常喜欢在第二台显示器上播放电影,无论是在网络浏览器还是媒体播放器中,而主屏幕上则有一个浏览器和其他一些应用程序。在我当前的设置中,这样做不是问题,它就是有效。

随着虚拟桌面的出现,我希望将浏览器放在一个虚拟桌面上,将另一个应用程序放在另一个虚拟桌面上,这样在切换桌面时仍然能够观看视频,从而有效地让视频在两个都虚拟桌面。使用默认的电影和电视应用程序播放视频,然后移动到另一个桌面只会导致视频停止,没有任何警告。

不是很好。

我希望的是这两个显示器要么有自己的虚拟桌面,要么有“固定到所有桌面”选项,类似于我在许多基于 Linux 的窗口管理器中看到的“粘性窗口”功能。

有没有什么方法可以实现这个目的?

答案1

该功能现已发布,作为“虚拟桌面改进”在里面Windows 10 周年更新(内部版本 14316):

您现在可以固定窗口,以便该窗口在每个桌面上都可用。为此,请启动任务视图,然后右键单击要固定的窗口并选择“在所有桌面上显示此窗口”。尝试固定 Skype 或 Groove Music,以便它们始终触手可及。如果您有多显示器设置,您可能会喜欢将电子邮件应用程序放在第二台显示器上,无论您切换到哪个桌面。

在此处输入图片描述

答案2

是的。[几乎:)] 每个具有 WS_EX_TOOLWINDOW 属性的窗口在所有桌面上都可见。

Autohotkey 在这方面有很大帮助。示例脚本 - MyLoop.ahk:

WS_EX_TOOLWINDOW := 0x00000080
环形
{
   WinSet,ExStyle,+%WS_EX_TOOLWINDOW%,ahk_class Chrome_WidgetWin_1
   睡眠,100
}

在 Windows 启动时放入此功能,Google Chrome 窗口就会“粘贴”到所有虚拟桌面。

或者将其指定为热键:示例脚本 - MyHotkeys.ahk:

WS_EX_TOOLWINDOW := 0x00000080
+MButton::WinSet,ExStyle,^%WS_EX_TOOLWINDOW%,A
^MButton::WinSet,AlwaysOnTop,切换,A

将其放在 Windows 启动中,您可以通过按 Shift + 鼠标中键单击任何窗口来切换“粘性”状态。

加法键 - Ctrl+鼠标中键单击将切换至“最顶部”状态。非常有用。

PS:现代应用程序(例如 Windows 10 计算器)不知何故忽略了这一点。不知道为什么。但对于 Windows 资源管理器窗口和大多数“旧应用程序”来说 - 它工作正常

答案3

根据上面的@idj 解决方案,以下是在 C 中执行的方法:

exstyle = GetWindowLongPtr(hwndPtr, GWL_EXSTYLE);
exstyle |= WS_EX_TOOLWINDOW
SetWindowLongPtr(hwndPtr, GWL_EXSTYLE, exstyle);

相关内容