Hola, creo que esto te puede servir
Código Delphi
[-]
function StateSrv(Host:string; SrvName: String):string;
var
ServiceControlManager: SC_HANDLE;
Service: SC_HANDLE;
ServiceStatus: SERVICE_STATUS;
begin
ServiceControlManager:= OpenSCManager(Pchar(Host), nil, SC_MANAGER_CONNECT);
if ServiceControlManager <> 0 then
begin
Service:= OpenService(ServiceControlManager,PChar(SrvName),SERVICE_ALL_ACCESS);
if Service <> 0 then
begin
QueryServiceStatus(Service, ServiceStatus);
case ServiceStatus.dwCurrentState of
SERVICE_CONTINUE_PENDING:result:='El servicio está pendiente de continuar';
SERVICE_PAUSE_PENDING:result:='El servicio está pendiente de pausa ';
SERVICE_PAUSED:result:='El servicio está pausado';
SERVICE_RUNNING:result:='El servicio se está ejecutando';
SERVICE_START_PENDING:result:='El servicio se está iniciando ';
SERVICE_STOP_PENDING:result:='El servicio se está deteniendo';
SERVICE_STOPPED:result:='El servicio está detenido';
end;
CloseServiceHandle(Service);
end
else result:='Desconocido';
CloseServiceHandle(ServiceControlManager);
end
else result:='Desconocido';
end;
Ejemplo de uso:
Código Delphi
[-]
var
estado:string
begin
estado:=StateSrv('127.0.0.1','MySql');
end;
Esta función podrías usarla para saber el estado de un servicio en tu maquina o en cualquier otra de la red, el nombre del servicio de MySql tendrías que mirar cual es exactamente.
Un saludo.