要让软件每次启动都自动出现在副显示器上,必须通过修改快捷方式目标路径添加“-monitor 2”参数或用PowerShell脚本强制移动窗口,前提是副屏编号固定为2且物理布局与系统设置一致;手动拖拽仅部分有效且不可靠。

你想让某个软件每次启动都自动出现在副显示器上,而不是默认挤在主屏左上角,就得绕过系统默认行为直接干预程序启动参数——这和调整窗口大小或拖动位置无关,必须从.exe文件的启动命令入手。
确认副屏编号与物理布局
先确保系统准确识别并稳定编号副屏,否则后续所有设置都会失效。打开“设置 → 系统 → 显示”,点击“标识”按钮,副屏上会短暂显示数字(如“2”);若无反应,说明编号未固定,需先检查线缆、信号源及显卡驱动状态。
在同一页面中,拖拽两个显示器缩略图,使其左右/上下排列顺序与你实际桌面物理摆放完全一致——鼠标从主屏右边缘移出后,必须精准进入副屏左边缘,否则窗口位置计算会错乱。
【副屏编号必须为2或更高,不能是1】。Windows默认将最先识别的显示器设为1号主屏,后续识别的依次为2、3……若副屏被标为1,则主屏反成2,所有定向启动参数都将指向错误屏幕。
修改快捷方式目标路径添加启动参数
这是最稳定、重启后依然生效的方法,适用于绝大多数桌面应用程序(如Chrome、Notepad++、Photoshop等)。
第一步:在桌面或开始菜单中找到该软件的快捷方式,右键 → 属性。
第二步:切换到“快捷方式”选项卡,在“目标”文本框末尾光标定位到最后一个引号内侧,紧贴引号前输入空格,然后粘贴:-monitor 2(注意:前面有空格,且数字2必须与副屏实际编号一致)。
例如原目标为:"C:Program FilesNotepad++ otepad++.exe",修改后应为:"C:Program FilesNotepad++ otepad++.exe" -monitor 2。
第三步:点击“确定”保存。下次双击此快捷方式启动程序时,窗口将强制出现在编号为2的显示器上。
用PowerShell脚本强制移动窗口到副屏
适用于不接受命令行参数的程序(如某些Java应用、旧版ERP客户端),或你想保留原始启动方式(比如从开始菜单点击),又要求100%落地到副屏。
① 以记事本新建一个文本文件,输入以下内容:
$proc = Start-Process "C:PathToYourApp.exe" -PassThru
Start-Sleep -Milliseconds 300
$hwnd = $proc.MainWindowHandle
If ($hwnd -ne 0) {
$screen = [System.Windows.Forms.Screen]::AllScreens | Where-Object {$_.DeviceName -eq "\.DISPLAY2"}
if ($screen) {
$pos = New-Object System.Drawing.Point($screen.Bounds.X, $screen.Bounds.Y)
[System.Windows.Forms.NativeMethods]::SetWindowPos($hwnd, 0, $pos.X, $pos.Y, 0, 0, 0x43)
}
}
② 将其中 C:PathToYourApp.exe 替换为该软件真实安装路径(如 C:Program FilesMicrosoft VS CodeCode.exe)。
③ 将文件另存为 move-to-monitor2.ps1,右键 → “使用PowerShell运行”。
④ 若提示执行策略受限,以管理员身份打开PowerShell,执行:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,再运行脚本。
手动拖拽+记住位置(仅限部分程序)
对不支持命令行参数的老旧软件或UWP应用(如邮件、天气),只能靠系统记忆窗口位置。
启动软件 → 拖动窗口到副屏任意位置 → 调整好大小 → 关闭软件。Windows 11 会尝试记住这次的位置。
但这个方法不可靠:部分软件(尤其是全屏游戏、某些Java应用)会忽略历史位置;系统更新或显卡驱动重装后记忆常被清空;副屏断连再重连时位置大概率丢失。
【关闭前不能最大化,也不能最小化,必须是普通窗口状态关闭】,否则系统不会保存坐标。

















