[英]Windows 7/10 - Make Application launch on a different display
我正在将Linux应用程序移植到Windows上,有两个可执行文件需要分别在主显示器和辅助显示器上启动。
在Linux中,它是通过#!/ bin / sh脚本完成的,类似于
display_start_dualhead LVDS 800480 DVI 1024768768 24导出screen_main = $ LVDS导出screen_secondary = $ DVI
在Windows中如何在监视器1中启动exe1并在监视器2中启动exe 2来完成此操作?
尝试这个:
function void showOnMonitor1()
{
Screen[] sc;
sc = Screen.AllScreens;
//get all the screen width and heights
Form2 f = new Form2();
f.FormBorderStyle = FormBorderStyle.None;
f.Left = sc[0].Bounds.Width;
f.Top = sc[0].Bounds.Height;
f.StartPosition = FormStartPosition.Manual;
f.Location = sc[0].Bounds.Location;
Point p = new Point(sc[0].Bounds.Location.X, sc[0].Bounds.Location.Y);
f.Location = p;
f.WindowState = FormWindowState.Maximized;
f.Show();
}
function void showOnMonitor2()
{
Screen[] sc;
sc = Screen.AllScreens;
//get all the screen width and heights
Form2 f = new Form2();
f.FormBorderStyle = FormBorderStyle.None;
f.Left = sc[1].Bounds.Width;
f.Top = sc[1].Bounds.Height;
f.StartPosition = FormStartPosition.Manual;
f.Location = sc[1].Bounds.Location;
Point p = new Point(sc[1].Bounds.Location.X, sc[1].Bounds.Location.Y);
f.Location = p;
f.WindowState = FormWindowState.Maximized;
f.Show();
}
要么
if (System.Windows.Forms.SystemInformation.MonitorCount != 1)
{
Form form2 = new Form();
form2.Left = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width + 1;
form2.Top = 0;
form2.ShowDialog();
}
Windows上的进程创建是通过CreateProcess API执行的,该API传递了STARTUPINFO结构。 这种结构允许将初始可见性和位置信息传递给启动的过程,以使该过程在创建并显示其初始窗口时将使用此信息。
我不知道有一个内置的命令行工具会用每个监视器的坐标填充位置字段,尽管可以指示start
命令以最大化或最小化方式启动窗口。
尽管如此,制作一个枚举监视器并填充这些字段的应用程序应该是不费吹灰之力的。也就是说,这样做之后,您可能会发现应用程序会忽略这些字段并直接将其窗口定位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.