タスク:Sikuliを使用してexplorer.exeプロセスを再起動する必要があります。Sikuli(Jython)を使用してexplorer.exeプロセスを再起動するには?
私の解決策は、「RestartExplorerProcess.batを」バッチファイルを作成することでした:
@echo off
echo Your desktop is being restored, Please wait. . .
ping -n 5 127.0.0.1 > NUL 2>&1
echo Killing process Explorer.exe. . .
taskkill /f /im explorer.exe
cls
echo Explorer.exe is killed!
echo.
echo Your desktop is now loading. . .
ping -n 5 127.0.0.1 > NUL 2>&1
echo.
ping -n 5 127.0.0.1 > NUL 2>&1
start %windir%\explorer.exe
echo Explorer.exe was successfully started!
exit
し、私は使用してそれを呼ばれる:
subprocess.Popen(Path)
問題は、私は再起動の終了を待つ必要があるということですexplorer.exeを実行してください。 私はこのために3つの解決策が見つかりました:
1. p = subprocess.Popen(Path)
p.wait()
2. subprocess.check_call(Path)
3. os.system(Path)
しかし、それらのすべてが同じ効果を持っている - Sikuliはすべてのエラーを表示し、ちょうどハングしませんが。たぶん私は間違っていますが、explorer.exeプロセスを再起動しているときに、参照が緩くなっているように見えます。バッチファイルの終了に関するイベントは決して実行できません。
だから私の質問は以下のとおりです。
- どのように私は、共通のSikuli(Jythonの)メソッドを使用してExplorer.exeプロセスを再起動することができますか?
- そして、私のバッチファイルの終了を、どのような方法で説明していますか?
ハングの原因は何ですか? 'Popen'または' p.wait() '? 'p.wait()'ならば、デフォルトの 'wait()'関数を使い、 'explorer.exe'を起動するのにかかる時間よりも長いタイムアウトを指定してください。 explorer.exeが再起動したときに一意のイメージを使用するだけです。 – DuckPuncher