我正在尝试做一些简单的事情,例如让 calc.exe 启动最小化,但它没有发生。
import subprocess
import win32gui
import win32con
info = subprocess.STARTUPINFO()
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = win32con.SW_SHOWMINIMIZED
x = subprocess.Popen("calc.exe", startupinfo = info)
无论我提供什么,它都会像往常一样弹出wShowWindow
.
我想你已经明白了这一点,但为了其他读者的利益,我的看法是:
这个问题与具体有关calc.exe
程序,而不是 Python 或您的代码。为了证明这一点,请尝试启动“notepad.exe”(或“wordpad.exe”),它将起作用 - 另请注意,您可能需要提供目标的完整路径.exe
文件取决于它所在的位置。
具体错误是什么,根据STARTUPINFO
结构, 的wShowWindow
member:
对于GUI进程,第一次调用ShowWindow时,其nCmdShow参数被忽略,wShowWindow指定默认值。在对 ShowWindow 的后续调用中,如果 ShowWindow 的 nCmdShow 参数设置为 SW_SHOWDEFAULT,则使用 wShowWindow 成员。
所以这意味着,程序第一次启动时,并调用ShowWindow()
,它完全忽略你传入的任何内容wShowWindow
in the STARTUPINFO
结构。然后,再次致电ShowWindow()
, 它会only如果程序调用,则使用您为 wShowWindow 提供的值ShowWindow()
以其nCmdShow
参数设置为SW_SHOWDEFAULT
.
因此,如果程序本身提供了自己的值,则隐藏 GUI 窗口似乎是不可能的nCmdShow
in ShowWindow()
,所以看起来就像是反复试验来看看哪些程序可以做到这一点,例如 notepad.exe 允许您隐藏它,而 calc.exe 则不能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)