微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Windows – 在startupinfo中使用wShowWindow的Popen不会影响显示

我正在尝试做一些简单的事情,比如让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成员:

For GUI processes, the first time ShowWindow is called, its nCmdshow parameter is ignored wShowWindow specifies the default value. In subsequent calls to ShowWindow, the wShowWindow member is used if the nCmdshow parameter of ShowWindow is set to SW_SHOWDEFAULT.

所以这意味着,当程序第一次启动并调用ShowWindow()时,它完全忽略了你在STARTUPINFO结构中为wShowWindow传递的内容.然后,在另一次调用ShowWindow()时,如果程序调用ShowWindow()并将其nCmdshow参数设置为SW_SHOWDEFAULT,它将仅使用您提供的值为wShowWindow.

因此,如果程序本身在ShowWindow()中为nCmdshow提供了自己的值,那么似乎不可能隐藏GUI窗口,所以看起来似乎是试错了,看看哪个程序可以做到这一点,例如notepad.exe允许你隐藏它,而calc.exe你不能.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐