一尘不染

启动应用程序并将其发送到第二台显示器?

c#

有什么方法可以通过另一个屏幕中的“处理”来启动/提供程序吗?

有人在这里问,但没有答案。

注意:这不是我的应用程序中的表单,我询问的是在另一个屏幕上运行外部程序!


阅读 562

收藏
2020-05-19

共1个答案

一尘不染

由于该窗口不是您的窗口,因此只能通过调用Windows API来移动它。您将必须执行以下操作:

  • 启动该过程。

  • 使用FindWindow检索的窗口句柄。如果该窗口尚不存在,则表明该进程尚未创建。睡眠500毫秒,然后重试。(但是不要进入无限循环;如果在合理的超时后找不到窗口,请停止。)

  • 使用SetWindowPos改变窗口的位置。

如果您不知道窗口的标题,则不能使用FindWindow。在这种情况下,

  • 启动流程并通过检索获取流程句柄Process.Handle

  • 使用EnumWindows检索所有窗口。对于每个窗口,用于GetWindowThreadProcessId检查它是否属于您的进程。如果没有任何窗口属于您的进程,请等待并继续尝试。

  • 使用SetWindowPos改变窗口的位置。

当然,您可以Screen.AllScreens[n].WorkingArea用来检索所需屏幕的位置和大小,然后可以相对于该窗口定位窗口。

2020-05-19