如何从Windows命令行启动进程时禁止程序GUI?

时间:2013-09-02 18:21:21

标签: python windows subprocess

大家好我不想在这样的网站上提问,所以如果我误入歧途(或需要澄清的话),请帮助我。这是:

我已经构建了一个python脚本,可以在Windows 7中成功启动程序作为新进程(或子进程?这是真实的东西?)。程序及其GUI,打开并运行特定的文本文件,以及何时完成结果数据保存到.csv,程序和进程终止。相关的python代码如下:

import subprocess
import os
pw_directory = r"C:\Program Files (x86)\..." #directory of theProgram.exe
master_directory = r"C:\Users\...." #path to the .txt file that is executed in theProgram.exe
os.chdir(pw_directory)
my_process = subprocess.Popen([r"theProgram.exe", master_directory])

我的问题是:当它作为新进程启动时,有没有办法抑制程序的GUI界面?我只是想加载.txt文件并在后台执行它,因为没有理由与GUI接口,因为一切都是自动化的。

为了使问题一般,我没有包含Program.exe名称,尽管这可能是必要的信息。不确定。谢谢你的任何建议。

1 个答案:

答案 0 :(得分:1)

某些 Windows程序允许它们从命令行运行,而GUI被禁止,程序之间会有所不同。

检查特定程序的网站/帮助/手册/用户组,或尝试使用-h -? -help--help标记从命令行运行允许它通常有命令行帮助 - 并寻找安静选项,(通常使用-q --quiet或--silent)。

另外一些程序实际上是命令行后端处理的GUI前端,因此可能会有一个不同的命令在命令行上运行 - 文档通常是查找它的地方。

对不起,这实际上是 RTFM 的长版本,但我确实没有完全一般的答案。

更新

answer(来自J.F. Sebastian的评论)让我走上了正轨:

startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = SW_HIDE # i.e. 0 you could also try 11 SW_FORCEMINIMIZE
subprocess.call(["theProgram.exe", etc], startupinfo = startupinfo)

这看起来可以满足您的需求。