【问题标题】:How to suppress a program GUI when starting a process from Windows command line?从 Windows 命令行启动进程时如何抑制程序 GUI?
【发布时间】:2013-09-02 18:21:21
【问题描述】:

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

我已经构建了一个 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 名称,尽管这可能是必要的信息。没有把握。感谢您的建议。

【问题讨论】:

  • 它没有回答你的问题,但它是相关的:How do I hide the console when I use os.system() or subprocess.call()?
  • 绝对相关,如果我错了,请纠正我......在这种情况下,他们似乎试图抑制执行程序或脚本时弹出的命令行窗口。这是否适用于抑制实际程序的 GUI 界面?
  • 是的,startupinfo 用于隐藏控制台。我不知道是否可以使用类似的技术来抑制实际程序的窗口(可能不会)。

标签: python windows subprocess


【解决方案1】:

一些 Windows 程序允许它们从命令行运行,而 GUI 被抑制它因程序而异。

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

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

抱歉,这实际上是 RTFM 的长版本,但据我所知,确实没有完全通用的答案。 p>

更新

这个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)

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

【讨论】:

  • 我将与该计划的管理员取得联系。该程序本身是一个带有专有脚本语言的 GUI 前端,可以“在后台”执行所有操作。也许有一个命令我错过了。我很惊讶没有一种通用的方法可以“在后台”在 Windows 中运行任何程序。
  • 微软从来没有提供过我听说过的,这取决于个人开发人员。有一些技巧适用于某些程序。您还可以寻找“最小化运行”作为选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多