【问题标题】:How to run an external program on a second screen?如何在第二个屏幕上运行外部程序?
【发布时间】:2015-03-24 10:41:13
【问题描述】:

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

到目前为止,我使用了 subprocess 模块和 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

我没有回答自己,因为这不是我所要求的。对于我的需要,解决方案就足够了,但我很乐意提供进一步的建议。

【问题讨论】:

  • 这个问题是关于双显示器设置还是命令行工具screenSTARTUPINFO 是什么?
  • 你指的是控制台窗口吗?如果是这样,请参阅 STARTUPINFO 的创建标志中的 CREATE_NEW_CONSOLE
  • 我更新了问题。很抱歉不准确
  • 为什么是屏幕而不是窗口?
  • 我对窗口也很好,我是 GUI 编程新手,对术语还不太熟悉。

标签: python subprocess


【解决方案1】:

我不知道在 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 上,您的应用程序需要为此提供特殊支持,或者您需要外部工具(参见上面的链接)。

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    相关资源
    最近更新 更多