窗口 - POPEN在STARTUPINFO wShowWindow不影响显示器(Windows

2019-07-31 18:27发布

我试图做一些简单的像得到的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

Answer 1:

我想你已经想通了这一点,但对于这里其他读者的利益是我的看法:

这个问题有什么与做专calc.exe程序,而不是Python也不是你的代码。 为了证明这一点,尝试推出“的notepad.exe”(或“wordpad.exe”),也将努力-也注意,您可能需要提供的完整路径目标.exe取决于它是文件。

具体什么是错的,是根据STARTUPINFO结构中, wShowWindow成员:

用于GUI的过程中,第一次的ShowWindow被调用,其参数的nCmdShow忽略wShowWindow指定的默认值。 在后续调用的ShowWindow,如果的ShowWindow的的nCmdShow参数设置为SW_SHOWDEFAULT使用wShowWindow构件。

所以,这是什么意思是,第一次启动程序,并调用ShowWindow()它完全忽略不管你通过在wShowWindowSTARTUPINFO结构。 然后,当再次调用ShowWindow()只会当程序调用使用你提供的价值wShowWindow ShowWindow()与它nCmdShow设为参数SW_SHOWDEFAULT

所以,这似乎是不可能的隐藏GUI窗口,如果程序本身提供了其自身的价值nCmdShowShowWindow()所以它似乎只是试验和错误,查看哪些程序做到这一点,如Notepad.exe,您可以它隐藏,而CALC.EXE你不能。



文章来源: Windows - Popen with wShowWindow in startupinfo not affecting display