Ver Mensaje Individual
  #3  
Antiguo 25-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Reputación: 20
aeff Va camino a la fama
mira fide, ahora me he puesto a "cacharrear" un poco y hice lo siguiente,


primero defino esto:

Código Delphi [-]
uses WinSvc;
...
const
  svName = 'MySrv';
  svDisplayName = 'Servicio de Alberto Enrique Franco Ferreiro';
...


mira, para instalar un servicio, hago esto en el onClick de un Button:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  vSCManager, vServiceCreated: Cardinal;
begin
  vSCManager := 0;
  vSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);

  vServiceCreated := 0;
  vServiceCreated :=
  CreateService(vSCManager, svName, svDisplayName, SERVICE_ALL_ACCESS,
                SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS,
                SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, 'C:\aeff.exe', nil, nil, nil, nil, nil);


  CloseServiceHandle(vServiceCreated);
  CloseServiceHandle(vSCManager);
end;

y para desintalarlo, entonces hago lo siguiente:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  vSCManager, vService : Cardinal;
  sstatus: TServiceStatus;
begin
  vSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  vService := OpenService(vSCManager, svName, SERVICE_ALL_ACCESS);
  ControlService(vService, SERVICE_CONTROL_STOP, sstatus);
  Sleep(500);
  DeleteService(vService);
  CloseServiceHandle(vService);
  CloseServiceHandle(vSCManager);
  RaiseLastWin32Error;
end;

espero que te sirva de algo

saludos, aeff!
Responder Con Cita