【问题标题】:Killing the background window when running a .exe from a Python program从 Python 程序运行 .exe 时终止后台窗口
【发布时间】:2010-11-24 12:12:24
【问题描述】:

以下是调用“demo.exe”文件的python程序中的一行。调用 demo.exe 时会打开一个窗口,demo.exe 有什么方法可以在“后台”运行?也就是说,我不想显示它的窗口,我只想运行 demo.exe。


p = subprocess.Popen(args = "demo.exe", stdout = subprocess.PIPE)

python程序实时使用demo.exe的输出,所以demo.exe不是我可以在运行python程序之前运行的东西。 demo.exe 处理大量动态后端计算。我用的是windows xp。

提前致谢!

【问题讨论】:

    标签: python executable


    【解决方案1】:

    感谢another StackOverflow thread,我想这就是你所需要的:

    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    p = subprocess.Popen(args = "demo.exe", stdout=subprocess.PIPE, startupinfo=startupinfo)
    

    我在 XP 上的 Python 2.6 上进行了测试,它确实隐藏了窗口。

    【讨论】:

    • 如果您设置了STARTF_SHOWWINDOW,您还需要将startupinfowShowWindow 成员初始化为SW_* 常量之一。此方法依赖于您实际运行的程序,它作用于wShowWindow 标志;不需要这样做。
    【解决方案2】:

    试试这个:

    from subprocess import Popen, PIPE, STARTUPINFO, STARTF_USESHOWWINDOW
    startupinfo = STARTUPINFO()
    startupinfo.dwFlags |= STARTF_USESHOWWINDOW
    p = Popen(cmdlist, startupinfo=startupinfo, ...)
    

    【讨论】:

    • 如果您设置了STARTF_SHOWWINDOW,您还需要初始化startupinfowShowWindow 成员。此方法依赖于您运行的程序实际作用于wShowWindow 标志;不需要这样做。
    • 我对这两个答案都投了赞成票并掷硬币获得最佳答案,ewall 赢了。
    • 嗯嗯。我首先得到了答案(至少 8 分钟!),但我仍然没有得到分数。 :-) 不用担心,ewall 比我更需要支持。
    • 啊,不好意思,没注意时间。这里还是新的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多