有没有办法让远程桌面 v6 在双显示器设置中的特定显示器上打开?
我知道它支持双显示器,而且很容易让它同时使用两个显示器,但我真正想要的是让我的所有 RDP 会话都在我的辅助显示器上打开。我将所有常用的连接都保存在 .RDP 文件中,目前我有一个混乱的情况,有些在我的主显示器上打开,而其他的在我的辅助显示器上打开。
在浏览 RDP 文件时,我无法辨别出哪个设置正在控制它(我怀疑它不在这个文件中)。
那么,我该如何控制呢?顺便说一下,我运行的是 Win7 作为客户端,并且几乎只连接到 Server 2008 R2 机器。
答案1
RDP 文件中有屏幕位置和模式选项,可通过设置 RDP 客户端窗口位置和大小来控制这一点,但没有明确指定哪个显示器的选项,您必须使用设置并选择能够在显示器组合上提供所需结果的设置。您还可以在定义的窗口区域内独立设置远程桌面的宽度和高度。
关键设置如下
winposstr:s:0,m,l,t,r,b
m = mode ( 1 = use coords for window position, 3 = open as a maximized window )
l = left
t = top
r = right (ie Window width)
b = bottom (ie Window height)
l,t 坐标相对于标准 Windows 原点,其中 (0,0) 是虚拟桌面的左上角,r,b 值是绝对宽度和高度,因此:
winposstr:s:0,1,100,100,800,600
打开一个 800x600 的窗口,距离最左侧显示器的左边缘向内 100 像素,距离上边缘向下 100 像素。
屏幕模式选项指示 TS 客户端以窗口模式或全屏模式打开
screen mode id:i:x
将 x 设置为 1 表示窗口模式,将 x 设置为 2 表示 RDP“全屏”模式。TS 客户端将根据哪个物理显示器与 winposstr 设置中的 t、l、r、b 要求具有最佳重叠性,在后一种模式下选择最佳显示器。
远程桌面大小由以下两个 rdp 文件设置来设置。
desktopwidth:i:x
desktopheight:i:y
其中 x 和 y 是您想要的桌面尺寸(以像素为单位)。显然,如果该尺寸大于您选择的窗口尺寸,您将需要处理滚动条,如果该尺寸小于您选择的窗口尺寸,则桌面周围将有未使用的空间。如果您选择窗口模式,则您选择的窗口尺寸必须比远程桌面尺寸大一些像素,这些像素将根据您桌面的 dpi 而变化,但传统上,宽度大约为 6 个额外像素,高度大约为 27 个像素(对于标题栏)。
远程桌面博客上有一篇关于此问题的文章,您可以找到这里. 对这些设置之间的相互关系进行了一些详细的额外深入分析Ohman Automation Corp 网站上的这篇文章。
答案2
分析.rdp 文件
这.rdp文件内容如下:
screen mode id:i:2
use multimon:i:0
desktopwidth:i:1680
desktopheight:i:1050
session bpp:i:32
winposstr:s:0,1,-1680,0,-115,1050
[….]
寻找关键字输进。最重要的参数是 winposstr 后面的数字。忽略开头的“:s:0,1”,关注最后四个逗号分隔的数字。
最后四个数字以像素为单位表示左、上、右, 和底部远程会话窗口的边缘。
这些数字实际上是指窗口恢复时的窗口位置,但窗口左边缘的像素位置很重要,因为它还决定了窗口最大化时远程会话将使用的显示器。
计算 winposstr 的值
您使用的数字取决于您有多少台显示器、每台显示器的屏幕分辨率以及您选择哪台显示器作为主显示器。
左边缘位置决定显示器
最后四个数字中的第一个数字是最重要的,它表示窗口左边缘的位置。如果您的主显示器位于中间,而左右两侧都有显示器,则左侧显示器应使用负数,右侧显示器应使用正数。
例如,如果你左边有两个显示器,每个显示器的分辨率都是 1680 x 1050,则使用-1680将会话窗口放在显示器左侧,并将其翻倍(-3360)将窗口放在最左侧的显示器上。
winposstr:s:0,1,**-1680**,0,0,1050
winposstr:s:0,1,**-3360**,0,-1680,1050
如果您的主显示器分辨率为 1200 x 1920,则使用 1200 将窗口放置在紧靠右侧的显示器上。这样做是可行的,因为该像素位置是主显示器的结束位置(右侧显示器的开始位置)。
winposstr:s:0,1,**1200**,0,2880,1050
如果右侧有两台显示器,分辨率为 1680 x 1050,并且想要将窗口放在最右侧的显示器上,则只需将 1200 添加到 1680 即可得到 2880。
winposstr:s:0,1,**2880**,0,4560,1050
顶部和底部边缘其他数字仅在窗口恢复(未最大化)时才真正发挥作用,并且可以根据需要进行调整。
第二个数字(从末尾开始第三个数字)表示窗口的最上边缘,因此,除非您有特殊要求,否则您可以将此数字保留为 0。第四个(最后一个)数字是窗口的垂直分辨率(=底部)。您可以将其保留为显示器的最大垂直分辨率,如上例所示。
winposstr:s:0,1,1200,**0**, 2880,**1050**
右边缘 窗口的右边缘用倒数第二个数字表示。除非您另有要求,否则可以将其设置为与最大化窗口相同的大小。按照上面的显示器分辨率示例,计算如下:
Monitor Right Edge Calculation Winposstr Value
Leftmost -3360 + 1680 = -1680 winposstr:s:0,1,-3360,0,**-1680**,1050
Immediate left -1680 + 1680 = 0 winposstr:s:0,1,-1680,0,**0**,1050
Immediate right 1200 + 1680 = 2880 winposstr:s:0,1,1200,0,**2880**,1050
Rightmost 1200 + 1680 + 1680 = 4560 winposstr:s:0,1,2880,0,**4560**,1050
答案3
我今天尝试自己修复同样的问题,并不断找到这些说明的变体,但无法使它们工作。对于其他遇到困难的人'Winposstr'解决方案我发现了一个更简单的解决方法,到目前为止没有给我带来任何问题,并且完成了相同的事情。我正在使用 Windows 10。
span monitors:i:1
multimon:i:1
selectedmonitors:s:0,1,2
查找或添加‘选定监视器:s:’行到您的 RDP 配置文件,然后先进入主显示器。
要获取显示器的显示 # 打开命令提示符并运行命令“mstsc /l”。这将返回一个窗口,列出您的显示器 ID 号和位置 -请注意,这些数字与您在显示设置中看到的数字不同。
就我而言,我有三个显示器并收到:
0: 1024 x 768; (-1024, 11, -1, 778)
1: 1920 x 1080; (2560, 11, 4479, 1090)
2: 2560 x 1440; (0, 0, 2559, 1439)
因为我只想对这个特定的连接使用两个特定的监视器(0 和 2),并且我想将监视器‘2’设为主监视器,因此我的配置现在显示:
selectedmonitors:s:2,0
答案4
使用屏幕坐标的答案实现起来很麻烦,如果您频繁地在不同的屏幕设置之间切换(例如,热办公或混合工作)或者想要与他人共享 RDP 文件,那么就无法很好地工作。
以下设置来自Scott Hanselman 的博客对我来说效果很好:
screen mode id:i:2
span monitors:i:1
use multimon:i:1
selectedmonitors:s:1,2
最后一行是唯一需要根据您的情况进行调整的行。我有 3 个屏幕,通过在运行菜单中运行“mstsc /l”,我可以看到它从左到右按 0、1、2 进行编号,因此我可以在以下选项之间进行选择:
selectedmonitors:s:0,1 //first 2 screens
selectedmonitors:s:1,2 //last 2 screens
selectedmonitors:s:0,1,2 //all 3 screens
selectedmonitors:s:0 // first screen only
selectedmonitors:s:1 // second screen only
selectedmonitors:s:2 // third screen only
selectedmonitors:s:0,2 //this doesn't work so just does second screen