我想你已经想通了,但为了其他读者的利益,这是我的看法:
问题与calc.exe
程序有关,与 Python 或您的代码无关。为了证明这一点,请尝试启动“notepad.exe”(或“wordpad.exe”),它会起作用——还请注意,您可能需要.exe
根据目标文件的位置提供目标文件的完整路径。
具体是什么问题,根据STARTUPINFO
结构,wShowWindow
成员:
对于 GUI 进程,第一次调用 ShowWindow 时,它的 nCmdShow 参数被忽略 wShowWindow 指定默认值。在随后对 ShowWindow 的调用中,如果 ShowWindow 的 nCmdShow 参数设置为 SW_SHOWDEFAULT,则使用 wShowWindow 成员。
所以这意味着,程序第一次启动并调用ShowWindow()
时,它会完全忽略你wShowWindow
在STARTUPINFO
结构中传入的任何内容。然后,在再次调用 时,如果程序调用其参数设置为ShowWindow()
,它只会使用您为 wShowWindow 提供的值。ShowWindow()
nCmdShow
SW_SHOWDEFAULT
nCmdShow
因此,如果程序本身为in提供了自己的值,似乎不可能隐藏 GUI 窗口ShowWindow()
,因此查看哪些程序执行此操作似乎是反复试验,例如 notepad.exe 允许您隐藏它,而calc.exe 你不能。