2012-05-26 23 views
6

Ich führe ein Python-Skript in Windows 7 aus, das alle paar Sekunden einen Unterprozess öffnet. Dieser Subprozess öffnet ein Fenster und greift den Fokus, wodurch jeder Versuch des Benutzers, während der Ausführung des Skripts normale Arbeit zu verrichten, unterbrochen wird. Ich habe nicht die Möglichkeit, den Subprozesscode selbst zu ändern. Gibt es eine Möglichkeit, alle von einem Python-Skript geöffneten Unterprozesse als nicht fokussiert zu bezeichnen?Verhindern, dass Python-Fenster fokussiert werden

KLARIFIZIERUNG: Ich brauche das Fenster zu öffnen und sichtbar/wählbar zu sein, einfach nicht sofort auf alles andere, was vor sich geht, springen. Mit anderen Worten, es muss sich im Hintergrund öffnen, sich nicht in den Vordergrund drängen.

Antwort

3

Hier ist, wie ich das tat letzte

# 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, benutze 'startupinfo.wShowWindow = 4' (getestet nur unter Windows 7) Der wShowWindow-Wert kann anscheinend mehr Werte als annehmen einfach subprocess.SW_HIDE. Die verfügbaren Werte sind in den Windows-Dokumenten für [ShowWindow] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548 (v = vs.85) .aspx) dokumentiert. Der relevante Wert ist SW_SHOWNOACTIVATE und der Wert für diese Aufzählung ist 4. –

1

Sie können auch immer ohne UI mit subprocess.call

Diese Probe führt die Konsolenanwendung mit einer Vielzahl von Fahnen Prozesse laufen:

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