私は自分の質問に答えるために次のAHKスクリプトを作成しましたここ:
NumpadEnter::
Process, Exist, httpd.exe
If ErrorLevel = 0
{
Run, C:\XAMPP\apache_start.bat,,Hide
Run, C:\XAMPP\mysql_start.bat,,Hide
}
Else
{
Run, C:\XAMPP\apache_stop.bat
Run, C:\XAMPP\mysql_stop.bat
Sleep, 2000
Run, C:\XAMPP\apache_start.bat,,Hide
Run, C:\XAMPP\mysql_start.bat,,Hide
}
Return
ただし、スクリプトは完璧ではありません。現在、Apache プロセスの存在のみをチェックしますhttpd.exe
が、XAMPP は Apache サーバーと、そのmysqld.exe
プロセスを使用する MySQL データベースの両方を起動します。Apache がダウンしていても MySQL が起動しているシナリオでは、スクリプトのロジックが失敗すると思われるので、次の行を修正したいと思います。
Process, Exist, httpd.exe
...存在を確認するどちらか httpd.exe
またはmysqld.exe
。
or
AHK には OR 演算子があり、または を使用できます||
が、次のようにします。
Process, Exist, httpd.exe || mysqld.exe
...サーバーの起動を試行するだけです (つまり、コードの最初のブロックを実行し、ロジックや構文に障害があることを示します)。言い換えると、OR は のような条件と組み合わせて使用することはできないようですProcess, Exist
。
AHK でこれは可能ですか?
答え1
式ではIF
、AHKは演算子or
(ドキュメンテーション)。 を 2 回呼び出してProcess
、そのたびに結果を保存し、どちらかが であるかどうかを確認できます0
。
Process, Exist, httpd.exe
errHTTPD := ErrorLevel
Process, Exist, mysqld.exe
errMYSQLD := ErrorLevel
If (errHTTPD = 0 or errMYSQLD = 0)
{
...
}
else
{
...
}
代わりに、あなたの質問に直接答えるわけではありませんが、あなたの特定のケースではうまくいくと思います:
Process, Exist, httpd.exe
IfEqual, ErrorLevel, 0
Process, Exist, mysqld.exe
まず、 を確認しますhttpd.exe
。 がErrorLevel
に設定されたら0
、 を探しますmysqld.exe
。