2012-05-26 107 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)