加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Windows – 在startupinfo中使用wShowWindow的Popen不

发布时间:2020-12-20 13:30:14 所属栏目:Python 来源:网络整理
导读:我正在尝试做一些简单的事情,比如让calc.exe开始最小化,但它没有发生. import subprocessimport win32guiimport win32coninfo = subprocess.STARTUPINFO()info.dwFlags |= subprocess.STARTF_USESHOWWINDOWinfo.wShowWindow = win32con.SW_SHOWMINIMIZEDx =
我正在尝试做一些简单的事情,比如让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你不能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读