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 05-10-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Como arrancar o parara un servicio en funcion de otro servicio ??

Hola grupo !!!

Me gustaria saber, como poder arrancar un servicio o que este se pare en función de la existencia de otro servicio.

Intento explicarme: Quiero desarrollar un servicio, que se instale al poner en marcha el sistema operativo (es decir de arranque automatico). Este servicio realizara consultas a una BD SQL SERVER, y por lo tanto para su correcto funcionamiento precisa, de tener en marcha el servicio sql. Es decir solo se puede ejecutar este servicio si sql esta activo. Y tambien quisiera que este servicio se parara si el servicio de SQL se detiene.

Espero haberme explicado !!!

Saludos a todos y gracias anticipadas por vtra ayuda !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #2  
Antiguo 05-10-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que hay un sistema de definir dependencias entre servicios, de forma que al hacer uno dependiente del otro, el sistema se encargará de controlar lo que necesitas. Busca información por ahí...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 05-10-2007
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Poder: 18
mierda Va por buen camino
Aun asi, desde delphi ...

Hola, 3 servicios, uno pa iniciar servicios, otro pa parar servicios, y otro para saber si esta corriendo un servicio.

Un saludo, espero q te sirva

Código Delphi [-]
 
function TForm1.iniciarServicio(sMachine, sService: String): Boolean;
var
  schm,
  schs: SC_Handle;
  ss: TServiceStatus;
  psTemp: PChar;
  dwChkP: DWord;
begin
//  ss.dwCurrentState := -1;
  schm := OpenSCManager(PChar(sMachine), nil, SC_MANAGER_CONNECT);
  if (schm>0) then
  begin
    schs := OpenService(schm, PChar(sService), SERVICE_START or
      SERVICE_QUERY_STATUS);
    if (schs>0) then
    begin
      psTemp := nil;
      if (StartService(schs, 0, psTemp)) then
        if (QueryServiceStatus(schs, ss)) then
          while (SERVICE_RUNNING<>ss.dwCurrentState) do
          begin
            dwChkP := ss.dwCheckPoint;
            Sleep(ss.dwWaitHint);
            if (not QueryServiceStatus(schs, ss)) then
              Break;
            if (ss.dwCheckPoint < dwChkP) then
              Break;
          end;
      CloseServiceHandle(schs);
    end;
    CloseServiceHandle(schm);
  end;
  Result := SERVICE_RUNNING=ss.dwCurrentState;
end;
 
function TForm1.detenerServicio(sMachine, sService: String): Boolean;
var
  schm,
  schs: SC_Handle;
  ss: TServiceStatus;
  dwChkP: DWord;
begin
  schm := OpenSCManager(PChar(sMachine), nil, SC_MANAGER_CONNECT);
  if (schm>0) then
  begin
    schs := OpenService(schm, PChar(sService), SERVICE_STOP or
      SERVICE_QUERY_STATUS);
    if (schs>0) then
    begin
      if (ControlService(schs, SERVICE_CONTROL_STOP, ss)) then
        if (QueryServiceStatus(schs, ss)) then
          while (SERVICE_STOPPED<>ss.dwCurrentState) do
          begin
            dwChkP := ss.dwCheckPoint;
            Sleep(ss.dwWaitHint);
            if (not QueryServiceStatus(schs, ss)) then
              Break;
            if (ss.dwCheckPoint < dwChkP) then
              Break;
          end;
      CloseServiceHandle(schs);
    end;
    CloseServiceHandle(schm);
  end;
  Result := SERVICE_STOPPED=ss.dwCurrentState;
end;
 
function TForm1.isRunning(Nombre: String): Boolean;
var
 ServiceControlManager: SC_HANDLE;
 Service: SC_HANDLE;
 ServiceStatus: SERVICE_STATUS;
begin
  Result:= FALSE;
  ServiceControlManager:= OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
  if ServiceControlManager <> 0 then
  begin
    Service:= OpenService(ServiceControlManager,PChar(Nombre),GENERIC_READ);
    if Service <> 0 then
    begin
      if QueryServiceStatus(Service, ServiceStatus) then
        Result:= ServiceStatus.dwCurrentState = SERVICE_RUNNING;
      CloseServiceHandle(Service);
    end;
    CloseServiceHandle(ServiceControlManager);
  end;
end;
Responder Con Cita
  #4  
Antiguo 09-10-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Muchas gracias a todos por vtra ayuda !!!

Probaré el código que me has facilitado.

Saludos a todos !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #5  
Antiguo 24-10-2007
SOAD_ SOAD_ is offline
Miembro
 
Registrado: ene 2007
Ubicación: sdfs
Posts: 13
Poder: 0
SOAD_ Va por buen camino
Interesante Codigo

Eso te puede ser muy util si lo personalizas a tu caso y si el servico SQL el q realiza las consultas estan en maquinas distintas...

si estan en la misma maq con una simple dependencia resuelves el problema sin mas complicacion.....
Responder Con Cita
  #6  
Antiguo 28-10-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Y como se hace para controlar esa dependencia ??

Gracias de nuevo !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #7  
Antiguo 04-11-2007
SOAD_ SOAD_ is offline
Miembro
 
Registrado: ene 2007
Ubicación: sdfs
Posts: 13
Poder: 0
SOAD_ Va por buen camino
control de las dependencias

Pues si estas programado tu servicio en delphi, en el object inspector encontraras una property para las dependencias, es una simple lista de dependencias con los nombre de los servicios de los cual depende... pienso q te sera facil usarla.
Responder Con Cita
  #8  
Antiguo 05-11-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Gracias de nuevo por tu ayuda !!!

Saludos !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #9  
Antiguo 07-05-2011
lenier.perna lenier.perna is offline
Registrado
 
Registrado: dic 2009
Posts: 2
Poder: 0
lenier.perna Va por buen camino
Man

[quote=QuarkBcn;237107]
Man como puedo crear un servicio en delphi32
Me podrias mandar un tutorial mi correo es XXXXXXXX
Cualquir cosa de servico

Última edición por Neftali [Germán.Estévez] fecha: 09-05-2011 a las 08:57:58. Razón: Eliminada la dirección de correo
Responder Con Cita
  #10  
Antiguo 09-05-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por lenier.perna Ver Mensaje
Man como puedo crear un servicio en delphi32
Me podrias mandar un tutorial mi correo es XXXXXXXX
Cualquir cosa de servico
Hola.
Antes de nada bienvenido a los foros.
Te reciomiendo que revises la Guía de estilo.

He eliminado tu dirección de correo, porque colocándola en un mensaje de esa forma sólo conseguirás que los robots te llenen el buzón de SPAM.

Por lo demás revisa el FTP del foro, donde hay bastante manuales. Si haces una búsqueda también encontrarás mucha información; Es un tema que ya se ha tratado otras veces.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 09-05-2011
lenier.perna lenier.perna is offline
Registrado
 
Registrado: dic 2009
Posts: 2
Poder: 0
lenier.perna Va por buen camino
Man como puedo crear un servicio en delphi32
Me podrias mandar un tutorial mi correo es XXXXXXXX
Cualquir cosa de servico
Que alguien me ayude
Por favor ayudaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Responder Con Cita
  #12  
Antiguo 10-05-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Revisa esto a ver si te sirve.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #13  
Antiguo 15-06-2011
XcamX XcamX is offline
Miembro
 
Registrado: may 2006
Posts: 21
Poder: 0
XcamX Va por buen camino
bibliotecas

Hola
me podrias decir que bibliotecas hay que agregar ya que me da error en esta linea por el momento

Código Delphi [-]
 
var
schm, schs: SC_Handle

desde ya muchas gracias
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
Mi Firebird intenta arrancar como servicio y también como aplicación Héctor Randolph Firebird e Interbase 1 30-11-2006 09:47:13
Como correr un servicio en XP? JuanErasmo C++ Builder 3 11-11-2005 16:32:25
Arrancar servicio MySQL? davezf MySQL 9 14-05-2005 19:01:32
Aplicación como servicio Oskar API de Windows 3 13-09-2004 12:35:34
Interbase como servicio cmgenny Firebird e Interbase 1 21-07-2003 11:16:27


La franja horaria es GMT +2. Ahora son las 17:48: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
Copyright 1996-2007 Club Delphi