Ir al contenido


Foto

[TRUCO DELPHI] Verificar si un Servicio se esta Ejecutando.


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 29 agosto 2016 - 08:33

[TRUCO DELPHI] Verificar si un Servicio se esta Ejecutando.


delphi
  1. uses
  2. WinSvc;
  3.  
  4. function ServiceGetStatus(sMachine, sService: PChar): DWORD;
  5. {******************************************}
  6. {*** Parametros: ***}
  7. {*** sService: Especifica el nombre del servicio
  8. {*** sMachine: Especifica el nombre de la Computadora
  9. {*** ***}
  10. {*** Return Values: ***}
  11. {*** -1 = Error iniciando el Servicio ***}
  12. {*** 1 = SERVICE_STOPPED ***}
  13. {*** 2 = SERVICE_START_PENDING ***}
  14. {*** 3 = SERVICE_STOP_PENDING ***}
  15. {*** 4 = SERVICE_RUNNING ***}
  16. {*** 5 = SERVICE_CONTINUE_PENDING ***}
  17. {*** 6 = SERVICE_PAUSE_PENDING ***}
  18. {*** 7 = SERVICE_PAUSED ***}
  19. {******************************************}
  20. var
  21. SCManHandle, SvcHandle: SC_Handle;
  22. SS: TServiceStatus;
  23. dwStat: DWORD;
  24. begin
  25. dwStat := 0;
  26.  
  27. SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
  28. if (SCManHandle > 0) then
  29. begin
  30. SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
  31.  
  32. if (SvcHandle > 0) then
  33. begin
  34.  
  35. if (QueryServiceStatus(SvcHandle, SS)) then
  36. dwStat := ss.dwCurrentState;
  37. CloseServiceHandle(SvcHandle);
  38. end;
  39. CloseServiceHandle(SCManHandle);
  40. end;
  41. Result := dwStat;
  42. end;
  43.  
  44. function ServiceRunning(sMachine, sService: PChar): Boolean;
  45. begin
  46. Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService);
  47. end;

Ejemplo de uso:


delphi
  1. //Verificar si el Eventlog esta ejecutandose
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. begin
  4. if ServiceRunning(nil, 'Eventlog') then
  5. ShowMessage('Eventlog ejecutandose')
  6. else
  7. ShowMessage('Eventlog no ejecutandose')
  8. end;

Saludos!


  • 2




IP.Board spam blocked by CleanTalk.