Chcę otworzyć Eksploratora Windows i wybrać konkretny plik. To jest API: explorer /select,"PATH"
. W związku z tym w wyniku następującej kodu (stosując pytona 2,7)Uruchomienie procesu GUI bez wystawiania czarnego okna powłoki
import os
PATH = r"G:\testing\189.mp3"
cmd = r'explorer /select,"%s"' % PATH
os.system(cmd)
Kod działa dobrze, ale po przełączeniu trybu bez powłoki (z pythonw
), wyświetlany jest czarny okna powłoki na chwilę przed badaczem jest uruchomiona.
Tego można się spodziewać z os.system
. Stworzyłem następującą funkcję do uruchamiania procesów bez pojawiania się okna:
import subprocess, _subprocess
def launch_without_console(cmd):
"Function launches a process without spawning a window. Returns subprocess.Popen object."
suinfo = subprocess.STARTUPINFO()
suinfo.dwFlags |= _subprocess.STARTF_USESHOWWINDOW
p = subprocess.Popen(cmd, -1, stdout=subprocess.PIPE, stderr=subprocess.PIPE, startupinfo=suinfo)
return p
Działa to dobrze w przypadku plików wykonywalnych powłoki bez GUI. Jednak nie uruchomi się explorer.exe
.
Jak mogę uruchomić proces bez wcześniejszego uruchamiania czarnego okna?
zaskakujące: Próbowałem z WinExec i ShellExec na C/C++ kod i daje moje takie samo zachowanie. – lucasg