2012-05-26 110 views
6

我在windows 7上运行一个Python脚本,每隔几秒钟打开一个子进程。这个子进程打开一个窗口并抓住焦点,中断用户在脚本运行时正常工作的任何尝试。我无法修改子进程代码本身。有没有办法将python脚本打开的所有子进程指定为不重点?防止关注python窗口

CLARIFICATION:我需要打开窗口并可以查看/选择,只是不会立即跳到所有正在发生的事情上。换句话说,它需要在后台打开,而不是强迫自己进入前台。

回答

3

这里是我是如何做到这最后

# Hide the cmd prompt window 
startupinfo = subprocess.STARTUPINFO() 
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
startupinfo.wShowWindow = subprocess.SW_HIDE 
p = subprocess.Popen(args, startupinfo=startupinfo) 
+0

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。 –

1

您可以subprocess.call

此示例运行与各种标志的过程中,没有UI任何执行控制台应用程序:

>>> import shlex, subprocess 
>>> subprocess.call("C:\Windows\some_console_app.exe", shell=True)