如何在双监视器上打开进程
本文关键字:进程 监视器 | 更新日期: 2023-09-27 18:10:31
我有一个c#应用程序,如果有多个屏幕,应该在第二个屏幕上打开一个进程。我就是弄不动它。什么好主意吗?
Array screens = Screen.AllScreens;
if (screens.Length > 1)
{
// open in the second monitor
}
else
{
System.Diagnostics.Process.Start(InputData);
}
它应该与else
中的数据相同,但只需在现在为空的if
中的第二个监视器上打开它。
没有标准的方法来指定应用程序在启动时将出现在哪个屏幕上。但是,您可以:
- 在启动的应用程序中处理这个问题(当然,如果你有它的代码)
- 在进程启动后找到主窗口的句柄,并使用Win32互操作将其移动到第二个屏幕
您可以通过更改输入过程的MainForm来实现这一点,如下所示
public Form1()
{
this.StartPosition =FormStartPosition.Manual;
InitializeComponent();
Screen sndSc = Screen.AllScreens[1];
if (sndSc.Primary)
{
sndSc = Screen.AllScreens[0];
}
this.Height = sndSc.WorkingArea.Height;
this.Width = sndSc.WorkingArea.Width;
this.Location = sndSc.WorkingArea.Location;
}
你应该做同样的事情当你定位你的窗口
要在任何显示器上显示一个窗口,您应该根据显示器的坐标重新定位它。
假设你有两个显示器,都是1920x1080的结果,它们并排排列。在这种情况下,要在第二个屏幕上显示表单,您必须设置表单的X坐标(或Left
属性,我猜)大于1920。