2012-05-26 17 views
6

W systemie Windows 7 uruchamiam skrypt w języku Python, który otwiera podproces co kilka sekund. Podproces ten otwiera okno i przenosi fokus, zakłócając wszelkie próby wykonania normalnej pracy podczas działania skryptu. Nie mam możliwości modyfikowania samego kodu podprocesu. Czy istnieje sposób na oznaczenie wszystkich podprocesów otwartych przez skrypt Pythona jako nieostre?Zapobieganie skupianiu się okien Pythona

WYJAŚNIENIE: Potrzebuję okna do otwarcia i wyświetlania/wyboru, po prostu nie od razu przeskoczyć na wszystko, co się dzieje. Innymi słowy, musi otworzyć się w tle, a nie narzucać się na pierwszy plan.

Odpowiedz

3

Oto jak zrobiłem to ostatni

# 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, użyj 'startupinfo.wShowWindow = 4' (testowane tylko w systemie Windows 7) Wartość wShowWindow może najwyraźniej zająć więcej wartości niż po prostu podproces.S.S_HIDE. Dostępne wartości są udokumentowane w dokumentach systemu Windows dla [ShowWindow] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548 (v = vs.85) .aspx). Odpowiednia wartość to SW_SHOWNOACTIVATE, a wartość tego wyliczenia wynosi 4. –

1

można uruchomić procesy z różnymi flagami z subprocess.call

tej próbki wykonuje aplikację konsoli bez UI ogóle:

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