4

calc.exeを最小化して開始するなどの簡単なことをしようとしていますが、実行されていません。

import subprocess
import win32gui
import win32con

info = subprocess.STARTUPINFO()
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = win32con.SW_SHOWMINIMIZED
x = subprocess.Popen("calc.exe", startupinfo = info)

何を提供しても、いつもと同じようにポップアップしwShowWindowます。

4

1 に答える 1

2

あなたはすでにこれを理解していると思いますが、他の読者の利益のために、ここに私の見解があります:

この問題はcalc.exe、Pythonやコードではなく、プログラムに特に関係しています。それを証明するには、「notepad.exe」(または「wordpad.exe」)を起動してみてください。動作します。また、ターゲットファイルの.exe場所によっては、ターゲットファイルへのフルパスを指定する必要がある場合もあります。

具体的に何が悪いのかは、STARTUPINFO構造、wShowWindowメンバーによると:

GUIプロセスの場合、ShowWindowが初めて呼び出されると、そのnCmdShowパラメーターは無視されます。wShowWindowはデフォルト値を指定します。以降のShowWindowの呼び出しでは、ShowWindowのnCmdShowパラメーターがSW_SHOWDEFAULTに設定されている場合、wShowWindowメンバーが使用されます。

つまり、これが意味するのは、プログラムが最初に起動してを呼び出すとき、構造体でShowWindow()渡されたものはすべて完全に無視されるということです。次に、をもう一度呼び出すと、プログラムがパラメータをに設定して呼び出す場合にのみ、wShowWindowに指定された値が使用されます。wShowWindowSTARTUPINFOShowWindow()ShowWindow()nCmdShowSW_SHOWDEFAULT

nCmdShowしたがって、プログラム自体がinの独自の値を提供する場合、GUIウィンドウを非表示にすることは不可能であるように思われるためShowWindow()、notepad.exeのように、どのプログラムがそれを非表示にできるかを確認するのは試行錯誤のようです。 calc.exeはできません。

于 2012-09-23T18:37:37.197 に答える