Utilice O con condición en el script AutoHotkey

Utilice O con condición en el script AutoHotkey

Creé el siguiente script AHK para responder mi propia preguntaaquí:

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

Sin embargo, el script no es perfecto: actualmente, solo verifica la existencia del proceso Apache httpd.exe, pero XAMPP inicia tanto el servidor Apache como la base de datos MySQL, que utiliza el mysqld.exeproceso. En el caso de que Apache esté inactivo pero MySQL esté activo, parece que la lógica del script fallaría, por lo que me gustaría corregir esta línea:

Process, Exist, httpd.exe

...para comprobar la existencia decualquiera httpd.exeo mysqld.exe.

AHK tiene un operador OR, para el cual puedes usar oro ||, pero haciendo:

Process, Exist, httpd.exe || mysqld.exe

...solo intenta iniciar los servidores (es decir, ejecutar el primer bloque de código, lo que indica una falla en la lógica y/o sintaxis). En otras palabras, no parece que OR pueda usarse junto con una condición como Process, Exist.

¿Es esto posible con AHK?

Respuesta1

En una IFexpresión, AHK usa el operador or(Documentación). Puede llamar Processdos veces, almacenar el resultado cada vez y luego verificar si cualquiera de los dos es 0.

Process, Exist, httpd.exe
errHTTPD := ErrorLevel
Process, Exist, mysqld.exe
errMYSQLD := ErrorLevel
If (errHTTPD = 0 or errMYSQLD = 0)
{
   ...
}
else
{
   ...
}

Como alternativa que no responde directamente a tu pregunta pero sí creo que funcionará en tu caso particular:

Process, Exist, httpd.exe
IfEqual, ErrorLevel, 0
    Process, Exist, mysqld.exe

Primero, verifique httpd.exe. Si eso es ErrorLevelasí 0, busque mysqld.exe.

información relacionada