如何在第二个屏幕上运行外部程序?

时间:2015-03-24 10:41:13

标签: python subprocess

如何从我的python应用程序中运行外部应用程序并在第二个屏幕上显示外部程序?不幸的是,我的主GUI和外部GUI不适合单个屏幕。

到目前为止,我使用了子进程模块和Popen构造函数,但我觉得没有提供所需的功能。

我考虑在子进程中加入STARTUPINFO(https://docs.python.org/2/library/subprocess.html#windows-popen-helpers)帮助器,但我找不到符合我问题的选项。

外部应用程序是用C ++和C#编写的,如果感兴趣的话。

谢谢大家!

编辑:我使用Windows 7和双显示器设置(确切地说是笔记本电脑+显示器)。

第二次编辑:我自己找到了一个可能的答案:

from win32api import GetSystemMetrics
import win32gui
import win32con 

window = win32gui.GetForegroundWindow() # retrieves the freshly opened window
win32gui.MoveWindow(window, GetSystemMetrics(0), 0, 0, 0, True) # translates it about the main monitor width
win32gui.ShowWindow(window, win32con.SW_MAXIMIZE) # maximizes the window

我没有回答自己,因为这不是我要求的。根据我的需要,解决方案已经足够,但我很乐意提供进一步的建议。

1 个答案:

答案 0 :(得分:0)

我不知道在Windows中强行操作系统以某种方式放置窗口的好方法。有一些外部工具可能会有所帮助:https://superuser.com/questions/250334/utility-to-lock-window-position-size-of-windows-in-windows-7

下一个问题是如何将窗口移动到第二个监视器。这取决于您设置桌面的方式。通常的模式是“跨越桌面”,您可以在其中获得虚拟桌面,每个监视器都会显示其中的一部分。意味着一个监视器的上/左边缘位于'0,0',另一个位于'1920,0'。要在第二个窗口上放置一个窗口,您只需将窗口的左上角设置为“1920,0”。

在使用X11的系统上,大多数程序都支持-geometry选项,这使得这非常简单,但在Windows上,您的应用程序需要特殊支持,或者您需要外部工具(请参阅上面的链接)。