我知道 Windows 7 有一些内置功能可以控制在特定显示器上打开应用程序。事实证明,这在仅使用两个显示器时效果很好。在显示器 1 上打开 chrome,将其拖到显示器 2,关闭 chrome,打开 chrome,它会在显示器 2 上打开。
我的问题是,我在四显示器显示站上运行了 4 个软件,而结果却很混乱,Windows 7 无法记住哪个软件放在哪里。
冒着提出“购物”问题的风险,是否有第三方实用程序可以更好地完成这项特定任务?
我需要能够重新启动机器,并且我的 4 个应用程序始终在同一个位置启动,而无需任何用户交互。目前,我的测试显示,此功能仅按预期工作了 7/10 次。如果不是因为客户的设施,这是可以接受的。
此时我唯一的其他选择是编写一个控制台应用程序来启动进程,但我不太确定它是否支持 process.start 重载中的 x/y 坐标偏移。
谢谢阅读。
答案1
这可能与打开设备的顺序有关。确保在启动计算机之前打开所有屏幕。如果在 Windows 启动后打开某些屏幕,Windows 可能会重置每个应用程序必须启动的默认位置,以确保它不会超出范围。如果您想确保应用程序始终在正确的屏幕上启动,最好的办法是为其制作一个启动器,但必须打开所有屏幕。
答案2
我昨晚做了一些挖掘,并得到了一些可用于控制台应用程序的可用代码。
sFileName 是从数据库抓取的进程名称
属性 me.xcoord 和 me.ycoord 是根据正在启动的 sFileName 进程来计算的。
Dim myExe As New Process
myExe.StartInfo.FileName = String.Format("{0}{1}{2}", My.Settings.programsdirectory, sFileName, My.Settings.buildextension)
myExe.StartInfo.UseShellExecute = True
myExe.StartInfo.Arguments = String.Format("{0} {1}", Me.XCOORD, Me.YCOORD)
Try
Process.Start(myExe.StartInfo.FileName, myExe.StartInfo.Arguments)
Catch ex As Exception
ApplicationInfo.ExceptionHandler(ex)
End Try