在特定屏幕上启动进程

Ale*_*nfi 5 c# windows pinvoke multiple-monitors process

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

我已经看到可以打开一个进程,然后使用 P/Invokes 将其移动到某处(打开记事本到屏幕上的特定位置,并达到所需的大小?),但是我想在应用程序打开之前设置目标屏幕,以便例如,Kiosk 模式下的 Chrome 通过此设置可以正常启动。

有谁知道如何做到这一点?

小智 4

不久前我们使用 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);
    }
Run Code Online (Sandbox Code Playgroud)

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