Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-10-2007
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Question Trabajando con TServiceApplication

Hola. Alguien me puede ayudar acerca de como Inicio un servicio desde una aplicacion delphi?

El problema es que cuando yo creo una application de tipo TService tengo que instalarla manualmente en el services.msc de Windows mediante la ejecucion de lo siguiente:

"DireccionDelService.exe" /Install /Silent

y luego Iniciarla manualmente tambien. Lo que necesito es saber como hacer estas dos cosas desde delphi, o por favor si pueden me dan alguna referencia que no sea la ayuda del delphi para crear y gestionar servicios. Gracias por la ayuda de antemano.
Responder Con Cita
  #2  
Antiguo 25-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
con ShellExecute puedes mandarlo a instalar, iniciar, pausar, desintalar, etc.., pero es una cosa "rustica",

¿por que no le hechas un ojo a esto?

saludos!
Responder Con Cita
  #3  
Antiguo 25-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
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
  #4  
Antiguo 25-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
ahhh! no he probado aun, pienso que sea así:

mira, para paralo, continuar, pausarlo, etc.. puedes hacer esto:

Código Delphi [-]
procedure TForm1.Button3Click(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);  CloseServiceHandle(vService);
  CloseServiceHandle(vSCManager);
end;

en la linea roja, la funcion ControlService, en el segundo parámtro puedes usar lo siguiente, segun lo que quieras hacer

Cita:
SERVICE_CONTROL_STOP
SERVICE_CONTROL_PAUSE
SERVICE_CONTROL_CONTINUE
SERVICE_CONTROL_INTERROGATE
SERVICE_CONTROL_SHUTDOWN

ahora, para iniciarlo nuevamente, prueba con la función *StartService(...)*, y si te quedas con dudas o no entiendes, entonces "tira pa' acá", que aqui hay un equipo que de seguro te ayudará

saludos!
Responder Con Cita
  #5  
Antiguo 25-10-2007
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Question Delphi y TService

Oye albertico, yo lo entendi todo y esta ok. Gracias por la ayuda. Ha una duda...

en uno de los codigos que publicaste esta la instruccion

Código Delphi [-]
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);

Eso que tu instalas, el decir el aeff.exe tiene que ser un tservice creado en delphi verdad?

Solo eso es lo que me tiene con dudas!
Responder Con Cita
  #6  
Antiguo 10-02-2008
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Cita:
Empezado por fide Ver Mensaje
Oye albertico, yo lo entendi todo y esta ok. Gracias por la ayuda. Ha una duda...

en uno de los codigos que publicaste esta la instruccion

Código Delphi [-]
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);

Eso que tu instalas, el decir el aeff.exe tiene que ser un tservice creado en delphi verdad?

Solo eso es lo que me tiene con dudas!
Por favor que alguien me diga por que esto no quiere funcionar...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
trabajando en red jdg C++ Builder 2 18-02-2007 16:10:48
trabajando con 2 listbox gsilvei Varios 1 13-09-2006 12:24:39
trabajando con 2 listbox gsilvei Varios 3 04-09-2006 03:44:30
Trabajando con dlls Novás Varios 2 23-08-2006 17:35:41
Trabajando con DLL b3nshi Varios 1 16-03-2005 18:21:55


La franja horaria es GMT +2. Ahora son las 09:29:35.


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
Copyright 1996-2007 Club Delphi