当前位置: 首页 > 面试题库 >

Python-使用os.system()或subprocess.call()时如何隐藏控制台?

孟思远
2023-03-14
问题内容

我写了一些如下的语句:

os.system(cmd) #do something
subprocess.call('taskkill /F /IM exename.exe')

两者都会弹出一个控制台。

如何阻止它弹出控制台?


问题答案:

该过程STARTUPINFO可以隐藏控制台窗口:

si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
#si.wShowWindow = subprocess.SW_HIDE # default
subprocess.call('taskkill /F /IM exename.exe', startupinfo=si)

或设置创建标志以禁用创建窗口:

CREATE_NO_WINDOW = 0x08000000
subprocess.call('taskkill /F /IM exename.exe', creationflags=CREATE_NO_WINDOW)

上面仍然是一个控制台进程,具有用于控制台I / O的有效句柄(通过调用GetFileType所返回的句柄进行验证GetStdHandle)。它只是没有窗口,也不继承父级控制台(如果有)。

你可以通过强制孩子完全没有控制台来走得更远:

DETACHED_PROCESS = 0x00000008
subprocess.call('taskkill /F /IM exename.exe', creationflags=DETACHED_PROCESS)

在这种情况下,子级的标准句柄(即GetStdHandle)为0,但你可以将其设置为打开的磁盘文件或管道,例如subprocess.DEVNULL(3.3)subprocess.PIPE



 类似资料:
  • 问题内容: 我正在用Python写一个IRC机器人。 我希望为Linux和Windows制作独立的二进制文件。主要是希望机器人启动时隐藏控制台窗口,而用户则不能看到该窗口。 我该怎么办? 问题答案: 只需将其保存为.pyw扩展名即可。这将阻止控制台窗口打开。 在Windows系统上,没有“可执行模式”的概念。Python安装程序会自动将.py文件与python.exe关联,以便双击Python文件

  • 我用tkinter创建了简单的GUI,然后我用cx_Freeze创建了。exe文件,当我打开。exe文件时,它显示的是控制台而不是GUI窗口。我想要的是隐藏控制台,只是为了显示GUI窗口。 null setup.py文件代码:

  • 问题内容: 我正在尝试做的是: 我正在尝试使用pywinauto在python中创建脚本以在后台自动安装notepad (隐藏或最小化),notepad 只是一个示例,因为我将对其进行编辑以与其他软件一起使用。 问题: 问题是我想在隐藏安装程序或最小化安装程序的情况下执行此操作,但是如果我移动鼠标,脚本将停止工作。 题: 在隐藏或最小化notepad ++安装程序的情况下,如何执行此脚本并使之运行

  • 问题内容: 我有一个简单的Python脚本,该脚本使用selenium和webdriver在Chrome窗口中打开Facebook并自动登录。当我运行它时,Chromedriver控制台窗口将打开并保持打开状态,即使在整个程序执行完毕后,也要自行关闭它。 有没有办法隐藏此控制台窗口?我曾尝试为脚本保留一个“ .pyw”扩展名,但这无济于事,因为它不是脚本的控制台窗口,而是我希望隐藏的Chromed

  • 问题内容: 如何从firebug控制台或显示ajax调用的任何内容隐藏ajax请求? 问题答案: 进行JSONP调用。JSONP调用不是真正的ajax请求(因为它们不使用对象,而只是将脚本标签注入DOM)。但是它们不会在Firebug中显示。

  • 问题内容: 我想隐藏密码输入。我在stackoverflow中看到许多答案,但如果按Backspace键,则无法验证值。条件返回false。 我尝试了几种解决方案来覆盖该函数,但是如果按退格键,则会出现缓冲区问题,我看到了不可见的字符。 我按:“ A”,退格键,“ B”,我的缓冲区中有:“ \ u0041 \ u0008 \ u0042”(toString()=’A \ bB’),而不是“ B”。