我在windows 7上运行一个Python脚本,每隔几秒钟打开一个子进程。这个子进程打开一个窗口并抓住焦点,中断用户在脚本运行时正常工作的任何尝试。我无法修改子进程代码本身。有没有办法将python脚本打开的所有子进程指定为不重点?防止关注python窗口
CLARIFICATION:我需要打开窗口并可以查看/选择,只是不会立即跳到所有正在发生的事情上。换句话说,它需要在后台打开,而不是强迫自己进入前台。
我在windows 7上运行一个Python脚本,每隔几秒钟打开一个子进程。这个子进程打开一个窗口并抓住焦点,中断用户在脚本运行时正常工作的任何尝试。我无法修改子进程代码本身。有没有办法将python脚本打开的所有子进程指定为不重点?防止关注python窗口
CLARIFICATION:我需要打开窗口并可以查看/选择,只是不会立即跳到所有正在发生的事情上。换句话说,它需要在后台打开,而不是强迫自己进入前台。
这里是我是如何做到这最后
# Hide the cmd prompt window
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = subprocess.SW_HIDE
p = subprocess.Popen(args, startupinfo=startupinfo)
此示例运行与各种标志的过程中,没有UI任何执行控制台应用程序:
>>> import shlex, subprocess
>>> subprocess.call("C:\Windows\some_console_app.exe", shell=True)
TL; DR,使用'startupinfo.wShowWindow = 4'(仅在Windows 7上测试) wShowWindow值显然可能比只是subprocess.SW_HIDE。可用值记录在[ShowWindow]的Windows文档中(https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v = vs.85).aspx)。相关值为SW_SHOWNOACTIVATE,该枚举的值为4。 –