Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Saber el estado de un Servicio (https://www.clubdelphi.com/foros/showthread.php?t=66531)

mcsebas 24-02-2010 23:09:16

Saber el estado de un Servicio
 
Holas a todos estoy con el siguiente problema, resulta que estoy haciendo un pequeño programilla que cuando arranca me pide el logeo de un usuario y deseo de antemano chequear si el estado del servicio de MySQL esta activo o detenido o no esta.

Gracias. :)

white_zombie 25-02-2010 08:16:37

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.

Neftali [Germán.Estévez] 25-02-2010 10:43:33

Otra opción es usar el componete CServiceinfo de las Librerías GlibWMI.
Además de darte las propiedades de todos los servicios instalados en el sistema, te permite cabiar el estado (START, STOP, PAUSE, RESUME,...)



Puedes descargarla desde SourceForge o desde mi página.

mcsebas 25-02-2010 19:15:32

Gracias white_zombie funciona de maravilla y a Neftali quisiera probar la opcion que me decis pero tengo un problema como hago para instalarlas porque sigo la instrucciones del paquete y nada che.

Gracias :)

Neftali [Germán.Estévez] 26-02-2010 09:54:56

Deberías bastar con cargar el DPK/DPROJ (segun version de Delphi) en Delphi (directorio packages) y compilar e instalar.
Si te sale algun error, colócalo aquí y revisamos.


La franja horaria es GMT +2. Ahora son las 22:15:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi