os.system() または subprocess.call() 中にコンソール ウィンドウを非表示にする
os.system() または subprocess を使用してコマンドを実行する場合.call() を実行すると、コンソール ウィンドウが表示され、プログラムのフローが中断される場合があります。これは、特定のシナリオでは望ましくない場合があります。
コンソール ウィンドウを非表示にする方法
コンソール ウィンドウがポップアップ表示されないようにするには、いくつかの方法を使用できます。
STARTUPINFO の使用
subprocess.STARTUPINFO オブジェクトを使用すると、子プロセスのコンソール ウィンドウの表示設定など、さまざまな属性をカスタマイズできます。 dwFlags フィールドを subprocess.STARTF_USESHOWWINDOW に含めるように設定し、wShowWindow を subprocess.SW_HIDE (デフォルト) に設定すると、コンソール ウィンドウを非表示にすることができます。
作成フラグの設定
または、 Creationflags パラメータを使用すると、コンソール ウィンドウの作成を直接無効にすることができます。 Creationflags を subprocess.CREATE_NO_WINDOW に設定すると、子プロセスがコンソール ウィンドウを持つことができなくなります。
強制的な切り離し
より包括的な制御のために、サブプロセスにコンソール ウィンドウを持たないようにすることができます。作成フラグを subprocess.DETACHED_PROCESS に設定することでまったく可能になります。この場合、子プロセスの標準ハンドルは 0 ですが、必要に応じて、開いているディスク ファイルまたはパイプに明示的に設定できます。
例:
import subprocess # Using STARTUPINFO si = subprocess.STARTUPINFO() si.dwFlags |= subprocess.STARTF_USESHOWWINDOW subprocess.call('taskkill /F /IM exename.exe', startupinfo=si) # Using creation flags subprocess.call('taskkill /F /IM exename.exe', creationflags=subprocess.CREATE_NO_WINDOW) # Forcing detachment subprocess.call('taskkill /F /IM exename.exe', creationflags=subprocess.DETACHED_PROCESS)
以上が`os.system()` または `subprocess.call()` を使用するときにコンソール ウィンドウを非表示にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。