Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Reiniciar servicio (https://www.clubdelphi.com/foros/showthread.php?t=29472)

Alfers 23-01-2006 15:48:12

Reiniciar servicio
 
Hola que tal, estoy necesitando reiniciar un servicio de windows, en realidad lo que tenemos es un programa del cual no tenemos el codigo fuente, este programa que corre como servicio (lo hacemos correr como servicio para evitar el error entre el teclado y la silla) despues de un tiempo en funcionamiento genera un error de desbordamiento, lo que encontramos es que seguramente esta saturando una variable, entonces lo que hacemos es reiniciar el servicio, lo que estoy buscando es que este servicio se reinicie en forma automatica cada 6Hs, alguien sabe si existe alguna forma de lograr esto?

roman 23-01-2006 16:18:32

Podrías simplemente agregar una tarea programada a Windows que reinicie el servicio, por ejemplo con un archivo bat:

reiniciar.bat
Código:

net stop servicio
net start servicio

// Saludos

seoane 23-01-2006 17:02:59

La respuesta de roman me parece la mas sencilla en tu caso, pero si quieres hacerlo mas complicado aqui te dejo el codigo para hacerlo desde un programa de Delphi.

Código Delphi [-]
var
 scm: SC_HANDLE;
 srv: SC_HANDLE;
 status: SERVICE_STATUS;
 arg: PAnsiChar;
begin
  scm:= OpenSCManager(nil,nil,GENERIC_EXECUTE or GENERIC_READ);
  if scm > 0 then
    begin
      srv:= OpenService(scm, 'NombreDelServicio', GENERIC_EXECUTE or GENERIC_READ);
      if srv > 0 then
        begin
          // Si no esta parado lo paramos
          if QueryServiceStatus(srv,status) then
            if status.dwCurrentState <> SERVICE_STOPPED then
              if ControlService(srv, SERVICE_CONTROL_STOP, status) then
                Sleep(500);  // Le damos un tiempito para que se pare
          arg:= nil;
          // Lo volvemos a iniciar
          StartService(srv,0,arg);
          CloseServiceHandle(srv);
        end;
      CloseServiceHandle(scm);
    end;
end;

No te olvides de agregar "WinSvc" a las uses.

S8VK 05-09-2017 09:46:27

Hola,

Agrego ese código para reiniciar el servicio desde Delphi y en la línea "StartService(srv,0,arg);" me da el siguiente error: "E2033 Types of actual and formal var parameters must be identical" :confused:


La franja horaria es GMT +2. Ahora son las 03:55:08.

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