如何在双监视器上打开进程

本文关键字:进程 监视器 | 更新日期: 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。