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


73

Windows的一项重大新功能是事实,即本机支持多个“虚拟”桌面,使您可以将Windows集合组织在一起,并以单独的任务组进行组织。

很好

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

这有点笨拙,不太好。

我有两个监视器,通常喜欢在第二个监视器上(在Web浏览器或媒体播放器中)播放电影,而我在主屏幕上有一个浏览器和一些其他应用程序。在我当前的设置中,这样做不是问题,它可以正常工作。

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

不是很好。

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

有什么办法可以做到这一点?


并不是我所知道的,尽管我有使用工作空间的多个系统(不同的linux系统)的经验,但从未有过此功能,这打破了拥有多个工作空间的概念。
丹尼尔(Daniel)

2
@丹尼尔我已经和几个人交谈过,他们称其为“粘性窗户”
Mokubai

2
@Psychogeek我指的是多监视器和虚拟桌面,多监视器方面很好。我可以打开视频,将其放在第二个屏幕上,一切都很好,但是如果我使用新的虚拟桌面功能切换到另一个桌面,则视频窗口消失,并且(在某些情况下)完全停止播放。我想有一种方法可以将窗口固定到多个虚拟桌面。
Mokubai

知道了,许多虚拟桌面程序都具有该功能,您可以在其中将程序分配给特定的虚拟机,根据方法的不同,仍然存在许多小的错误问题。
Psycogeek

6
我认为满足此需求的标准示例几乎是任何通信应用程序。我想为正在处理的不同项目使用单独的虚拟桌面,但我想固定/粘贴IM客户端和电子邮件。对于我来说,这似乎是一个非常标准的用例,我可能想分隔我的工作空间而不必为了获得电子邮件警报而进行桌面交换!
Colin K

Answers:


100

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

现在,您可以固定窗口,以便在每个桌面上都可以使用。为此,请启动任务视图,然后右键单击要固定的窗口,然后选择“在所有桌面上显示此窗口”。尝试固定Skype或Groove音乐,使它们始终在您的指尖。而且,如果您设置了多星期一设置,则无论切换到哪个桌面,都可以在第二台显示器上使用电子邮件应用程序。

在此处输入图片说明


这篇文章谈到Windows Insider Fast Ring上可用的内容,您是否有时间表确定普通用户何时才能使用?
Mokubai

1
@Mokubai据我所知,还没有确定的公开发布日期。只是一个模糊的“这个[北半球]夏天”。
Daniel Ballinger

但是您如何取消固定呢?
Mikey '18

@Mikey取消选中“在所有桌面上显示X”选项对您不起作用吗?
Daniel Ballinger

在我可以单击的窗口上工作,问题是当它们在任务视图中不可见时。当然,在我打开它之前就可以看到它,但是现在每当进入任务视图时,该窗口就会消失。那么禁用它的另一种方法是什么?有注册码吗?目前,我在电报中遇到这个问题,我认为这是QT(跨平台应用程序)。只是为了清楚起见,该窗口在所有桌面上都可见,但是当我进入任务视图时消失了
Mikey

18

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

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

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

将其放在Windows启动中,Google Chrome窗口将“粘贴”到所有虚拟桌面。

或将其分配为热键:示例脚本-MyHotkeys.ahk:

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

将其放在Windows启动中,您可以通过按Shift +中间按钮在其上切换来切换任何窗口的“粘滞”状态。

添加键-Ctrl +中键单击将切换到“最高”状态。很有用。

PS:现代应用程序(例如Windows 10 Calculator)以某种方式忽略了这一点。不知道为什么。但是对于Windows资源管理器窗口和大多数“旧应用程序”来说,一切正常


我尝试了单击中键+热键的脚本。Ctrl +中间按钮效果很好。但是,我无法使整个虚拟桌面正常工作。我没有尝试过的所有窗户都已过渡。
Daniel Ballinger

为我工作。就我而言,我想始终将其设置为显示,因此^用加号(+)切换插入符号()。
ohaal

1

基于上面的@idj解决方案,这是在C语言中的操作方法:

exstyle = GetWindowLongPtr(hwndPtr, GWL_EXSTYLE);
exstyle |= WS_EX_TOOLWINDOW
SetWindowLongPtr(hwndPtr, GWL_EXSTYLE, exstyle);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.