在特定屏幕上启动流程

时间:2014-06-04 09:46:37

标签: c# windows process pinvoke multiple-monitors

我正在编写一个在特定屏幕上打开程序的小工具,以便我可以设置我们的监控屏幕(1台机器有2个屏幕),以便在一夜之间重新启动并让它在启动时将监控网页恢复到正确的屏幕。我想通过使用.NET的System.Diagnostics.Process类来实现这一目标。

我已经看到可以打开一个进程,然后使用P / Invokes(Open notepad to specific location on the screen, and to desired size?)将其移动到某处, 但是我想在应用程序打开之前设置目标屏幕,以便例如在Kiosk模式下使用此设置正确启动Chrome。

有谁知道怎么做?

1 个答案:

答案 0 :(得分:2)

我们不久前使用user32.dll的SetWindowPos创建了一个类似的解决方案。虽然它不能在所需的窗口上打开程序,但这需要花费几毫秒的时间,因此对您的要求来说并不是真正的问题!

您可以查看以下要点:
https://gist.github.com/reinhardholl/013a7c3fa319beeaf534#file-display-cs

特别关注Display班级:

    private void ShowAppOnDisplay(App app)
    {
        SetWindowPos(app.Process.MainWindowHandle, 0, _screen.WorkingArea.Left, _screen.WorkingArea.Top, _screen.WorkingArea.Width, _screen.WorkingArea.Height, SWP_SHOWWINDOW);
    }

如果您需要更多帮助,请告诉我们!