副屏编号必须为2或更高,需先在系统显示设置中标识并正确排列显示器;通过修改快捷方式目标添加“-monitor 2”参数可强制软件启动于副屏;手动拖拽关闭法要求在副屏内调整并关闭窗口三次以增强记忆;PowerShell脚本适用于不支持-monitor的顽固程序。

你想让某个软件(比如记事本、Chrome 或 VS Code)每次启动都自动出现在副显示器的窗口模式下,而不是默认挤在主屏左上角再手动拖动调整——这需要绕过系统默认窗口定位逻辑,直接干预程序启动时的屏幕归属和窗口状态。
确认副屏编号与物理布局是否正确
所有后续操作的前提是系统准确识别并固定了副屏编号。打开“设置 → 系统 → 显示”,点击“标识”按钮,副屏上必须清晰显示数字(如“2”);若显示“1”或无反应,说明副屏被误判为主屏,需检查线缆连接、显卡驱动版本,并重启电脑。在同一页面中,用鼠标拖拽两个显示器缩略图,使其左右/上下排列顺序与你真实桌面摆放完全一致——例如外接显示器实际在笔记本右侧,则将编号“2”的缩略图拖至编号“1”的正右侧。【副屏编号必须为2或更高,不能是1】。
修改快捷方式目标添加-monitor 2参数
这是最稳定、重启后仍生效的方法,适用于 Chrome、Edge、Notepad++、VS Code 等绝大多数桌面应用,无需管理员权限,且不依赖系统记忆机制。
第一步:在桌面或开始菜单中找到该软件的快捷方式(带小箭头图标),右键 → “属性”。
第二步:切换到“快捷方式”选项卡,在“目标”文本框末尾光标定位到最后一个英文引号内侧,紧贴引号前输入一个半角空格,然后粘贴:-monitor 2。
例如原目标为:"C:Program FilesMicrosoftEdgeApplicationmsedge.exe",修改后应为:"C:Program FilesMicrosoftEdgeApplicationmsedge.exe" -monitor 2。
第三步:点击“确定”保存。下次双击此快捷方式启动,窗口将强制出现在编号为2的显示器上。注意:若副屏编号不是2,请先执行“标识”操作确认实际编号——编号错会导致窗口彻底不可见。
利用系统窗口记忆功能(手动拖拽+关闭)
该方法对 Word、Excel、SnippingTool、Edge(Win32版)等传统桌面程序有效,但必须严格按顺序操作,否则系统不会记录位置。
方法一:
① 关闭所有该程序的运行实例(包括后台进程,可在任务管理器中结束)。
② 双击快捷方式启动程序,待窗口完全出现后,立即将其完整拖入副显示器可视区域(不要只拖标题栏,要确保整个窗口边界都在副屏内)。
③ 在副显示器上调整好窗口大小(可最大化,也可自定义尺寸),然后直接在副屏内点击右上角“×”关闭——【必须在副屏内关闭,不能拖回主屏再关】。
④ 下次通过任意方式(开始菜单、任务栏固定图标、快捷方式)启动,多数程序会复用上次关闭时的屏幕位置和尺寸。
方法二(补救用):若第③步忘记在副屏关闭,或窗口仍弹回主屏,可重复①→②→③三次以上。Windows 对同一程序的位置记忆有容错阈值,连续三次在副屏关闭能显著提高成功率。
用 PowerShell 脚本强制定位副屏(顽固程序专用)
适用于不响应 -monitor 参数的程序(如某些 Java 应用、旧版 ERP 客户端),或你想保留原始启动方式(比如从开始菜单点击)又要求 100% 落地到副屏。
第一步:以记事本新建一个文本文件,输入以下内容(将 notepad.exe 替换为你实际的程序路径):
$proc = Start-Process "notepad.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); $size = New-Object System.Drawing.Size($screen.Bounds.Width, $screen.Bounds.Height); $win = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Shell.Application"); $win = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Shell.Application"); [System.Windows.Forms.NativeWindow]::FromHandle($hwnd).Handle = $hwnd; $win = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Shell.Application"); } }
第二步:将文件另存为 move-to-monitor2.ps1(扩展名必须是 .ps1),保存路径不含中文或空格。
第三步:右键该 .ps1 文件 → “使用 PowerShell 运行”(首次需在 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 允许脚本运行)。


















