我已经检查过了问题但我的情况略有不同。
我有一台工作电脑,配有 2 台显示器,每台显示器的分辨率为 1650x1050。我在家里有 3 台显示器。两个系统都运行 Windows 7。家庭系统上的所有三台显示器都以 1920x1080 的分辨率运行,其中一台显示器单独设置,另外两台配置为单个 3840x1080 显示器。我想让我的 RDP 会话在一台 3840x1080 显示器上运行,但有一个问题。
我已将家用电脑的 RDP 会话配置为以 3840x1080 的分辨率运行:
mstsc.exe default.rdp /w:3840 /h:1080
这种方法大约有一半的时间是有效的。另一半时间,远程窗口的分辨率为 4096x1080(我认为这可能是默认的“最大”分辨率或其他)。
这似乎与会话是在我的一台“单”显示器还是另一台“双”显示器上启动有关。不幸的是,我在 Windows 中将“单”显示器设置为“主”显示器,因此它想从那里启动。我必须摆弄桌面快捷方式的位置,并将登录窗口移到另一台显示器,但它仍然只有大约一半的时间有效。
是否有人有办法(1)让 RDP 强制接受这个 3840x1080 分辨率或(2)强制它在辅助显示器上启动?
答案1
winposstr
您可以通过调整rdp 文件本身内部的值来实现此目的。以下是详细解释
计算 winposstr 的值
您使用的数字取决于您有多少台显示器、每台显示器的屏幕分辨率以及您选择哪台显示器作为主显示器。
左边缘位置决定显示器
最后四个数字中的第一个数字是最重要的,它表示窗口左边缘的位置。如果您的主显示器位于中间,而左右两侧都有显示器,则左侧显示器应使用负数,右侧显示器应使用正数。
例如,如果左侧有两个显示器,每个显示器的分辨率均为 1680 x 1050,则使用 -1680 将会话窗口放在紧靠左侧的显示器上,将其加倍(-3360)将窗口放在最左侧的显示器上。
胜利者:s:0,1,-1680,0,0,1050
胜利者:s:0,1,-3360,0,-1680,1050
如果您的主显示器分辨率为 1200 x 1920,则使用 1200 将窗口放置在紧靠右侧的显示器上。这样做是可行的,因为该像素位置是主显示器的结束位置(右侧显示器的开始位置)。
胜利者:s:0,1,1200,0,2880,1050
如果右侧有两台显示器,分辨率为 1680 x 1050,并且想要将窗口放在最右侧的显示器上,则只需将 1200 添加到 1680 即可得到 2880。
胜利者:s:0,1,2880,0,4560,1050
顶部和底部边缘
其他数字仅在窗口恢复(未最大化)时才真正发挥作用,并且可以根据需要进行调整。第二个数字(从末尾开始第三个数字)表示窗口的最上边缘,因此,除非您有特殊要求,否则您可以将此数字保留为 0。第四个(最后一个)数字是窗口的垂直分辨率(=底部)。您可以将其保留为显示器的最大垂直分辨率,如上例所示。
winposstr:s:0,1,1200,0,2880,1050
右边缘
窗口的右边缘用倒数第二个数字表示。除非您另有要求,否则可以将其设置为与最大化窗口相同的大小。
╔═══════════════════╦══════════════════════════════╦══════════════════════════════════════════╗ ║ 监视 ║ 右边缘计算 ║ Winposstr 值 ║ ╠════════════════════╬═══════════════════════════════╬═══════════════════════════════════════════╣ ║ 最左边 ║ -3360 + 1680 = -1680 ║ winposstr:s:0,1,-3360,0,-1680,1050 ║ ║ 立即左移 ║ -1680 + 1680 = 0 ║ winposstr:s:0,1,-1680,0,0,1050 ║ ║ 立即向右 ║ 1200 + 1680 = 2880 ║ winposstr:s:0,1,1200,0,2880,1050 ║ ║ 最右边 ║ 1200 + 1680 + 1680 = 4560 ║ winposstr:s:0,1,2880,0,4560,1050 ║ ╚═══════════════════╩════════════════════════════════╩═══════════════════════════════════════════╝
答案2
我发现这些说明有点令人困惑,或者我可能只是太懒了,不想全部读完。我只是将第三个值设置为我想要的总“x”值(在我的例子中,我希望右侧的显示器显示连接,而左侧的显示器的分辨率为 1280x800,所以我在那里输入了 1280)。然后我将其后面的所有数字都设为 0。这似乎奏效了。
winposstr:s:0,1,<your x value>,0,0,0