![Verwenden Sie „ODER“ mit Bedingung im AutoHotkey-Skript](https://rvso.com/image/1642370/Verwenden%20Sie%20%E2%80%9EODER%E2%80%9C%20mit%20Bedingung%20im%20AutoHotkey-Skript.png)
Ich habe das folgende AHK-Skript erstellt, um meine eigene Frage zu beantwortenHier:
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
Das Skript ist jedoch nicht perfekt – derzeit prüft es nur, ob der Apache-Prozess vorhanden ist httpd.exe
, aber XAMPP startet sowohl den Apache-Server als auch die MySQL-Datenbank, die den mysqld.exe
Prozess verwendet. In dem Szenario, in dem Apache ausgefallen, MySQL jedoch aktiv ist, scheint die Logik des Skripts zu versagen, daher möchte ich diese Zeile korrigieren:
Process, Exist, httpd.exe
...zur Überprüfung der Existenz vonentweder httpd.exe
oder mysqld.exe
.
AHK hat einen ODER-Operator, für den Sie entweder or
oder verwenden können ||
. Gehen Sie dazu wie folgt vor:
Process, Exist, httpd.exe || mysqld.exe
...versucht lediglich, die Server zu starten (d. h. den ersten Codeblock auszuführen, was auf einen Fehler in der Logik und/oder Syntax hinweist). Mit anderen Worten, es scheint nicht so, als ob OR in Verbindung mit einer Bedingung wie verwendet werden kann Process, Exist
.
Ist das mit der AHK möglich?
Antwort1
In einem IF
Ausdruck verwendet AHK den Operator or
(Dokumentation). Sie könnten Process
zweimal aufrufen, jedes Mal das Ergebnis speichern und dann prüfen, ob eines davon ist 0
.
Process, Exist, httpd.exe
errHTTPD := ErrorLevel
Process, Exist, mysqld.exe
errMYSQLD := ErrorLevel
If (errHTTPD = 0 or errMYSQLD = 0)
{
...
}
else
{
...
}
Eine Alternative, die Ihre Frage zwar nicht direkt beantwortet, von der ich aber glaube, dass sie in Ihrem speziellen Fall funktionieren wird:
Process, Exist, httpd.exe
IfEqual, ErrorLevel, 0
Process, Exist, mysqld.exe
Suchen Sie zunächst nach httpd.exe
. Wenn dies der Fall ErrorLevel
ist 0
, suchen Sie nach mysqld.exe
.