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 22-09-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Servicios de Windows

Si, yo tengo un servidor con windows 2003 server como RAS y entonces pasado un tiempo este serviicio se bloquea y me deja a todos los clientes sin RAS, entonces cuando llego al trabajo me doy cuenta de que esta bloqueado, voy al administrador de servicio , lo reinicio y ya, entonces mi idea es que delphi haga una consulta al servicio, si esta bloqueado, lo reinicie.

Me explique bien, tendras algun ejemplo que me sirva, he visto varios y niguno trabaja.

Saludos de antemano Jocey
Responder Con Cita
  #2  
Antiguo 22-09-2008
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.275
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
Parar un servicio y reiniciarlo es sencillo en Delphi; Es un tema que ya hemos tratado varias veces y además creo que hay algun truco en la sección de Trucos de clubDelphi donde podrás encontrar en código para hacerlo (sino en algun hilo ya se ha añadido).

En cuanto a saber si un servicio está bloqueado, creo que debes probar a hacer un programa que intente "consumir" de ese servicio; Si el resultado no es el esperado, actuar en consecuencia.
__________________
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 22-09-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Servicio con windows

Si, ya he encontrado dos trucos y ninguno me funciona.....
Responder Con Cita
  #4  
Antiguo 22-09-2008
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.275
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
Deberías dar alguna explicación más. En mi caso tengo dos programas que utilizan ese código y funcionan perfectamente parando, arrancando y testeando el estado del servicio.
__________________
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
  #5  
Antiguo 22-09-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Servicio con windows

Eso es lo que necesito un programa que testee el servicio y lo arranque o reinicie en caso de que el servicio este detenido o bloqueado.... no se que mas puedo explicar.... si fueras tan amable.

Saludos
Responder Con Cita
  #6  
Antiguo 22-09-2008
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.275
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 jocey Ver Mensaje
... y ninguno me funciona.....
Cita:
Empezado por jocey Ver Mensaje
.... no se que mas puedo explicar...
Podrías explicar ¿Qué es lo que no funciona? ¿Parar? ¿Arrancar? ¿Que te devuelva el estado?
¿No te compilan los trucos? ¿Sí compilan, pero no ejecutan?
¿Algun error?
¿No funcionan con tu servicio concreto o no funcionan con ninguno?
¿qué llamada estás haciendo? ¿Qué parrémetro pasas para identificar el servicio?
...

A eso me refería.
__________________
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
  #7  
Antiguo 22-09-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Servicio con windows

No compilan, por ejemplo este
Código Delphi [-]
function 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;

la parte sudbrayada en rojo, ojo, se que es un cardinal y el valor esta fuera de rango, ahora, asi estaba en el truco que encontre... esto es lo que me pasa
Responder Con Cita
  #8  
Antiguo 22-09-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Servicio con windows

en este si compila, pero el valor que le subrayo siempre esta en cero....

Código Delphi [-]
   procedure StartSrv(Nombre: String);
var
 ServiceControlManager: SC_HANDLE;
 Service: SC_HANDLE;
 ServiceStatus: SERVICE_STATUS;
 Argv: PChar;
begin
  ServiceControlManager:= OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
  if ServiceControlManager <> 0 then
  begin
    Service:= OpenService(ServiceControlManager,PChar(Nombre),SERVICE_ALL_ACCESS);
    if Service <> 0 then
    begin
      if QueryServiceStatus(Service, ServiceStatus) then
      begin
        if ServiceStatus.dwCurrentState <> SERVICE_RUNNING  then
        begin
          Argv:= nil;
          StartService(Service,0,Argv);
        end;
      end;
      CloseServiceHandle(Service);
    end;
    CloseServiceHandle(ServiceControlManager);
  end;
end;

entonces nunca entra, sale al final de la aplicacion...
Responder Con Cita
  #9  
Antiguo 22-09-2008
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.275
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
¿Puedes poner con qué parámetros los llamas?
¿Cómo identificas el servicio?
__________________
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
  #10  
Antiguo 22-09-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Servicio con windows

en el caso del segundo ejemplo que es el que más se me ajusta:

servicio : Enrutamiento y acceso remoto
llamada : StartSrv('Enrutamiento y acceso remoto');

el nombre del servicio lo saque de la consola services.msc.
Responder Con Cita
  #11  
Antiguo 23-09-2008
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.275
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 jocey Ver Mensaje
en el caso del segundo ejemplo que es el que más se me ajusta:
servicio : Enrutamiento y acceso remoto
llamada : StartSrv('Enrutamiento y acceso remoto');
Si accedes a la consola de servicios y accedes a las propiedades de ese servicio deberías ver algo así:



Ahora prueba lo mismo que estás haciendo, pero con el Nombre del servicio, no con el nombre a mostrar; A ver qué resultado da.

Código Delphi [-]
StartSrv('RemoteAccess');
__________________
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
  #12  
Antiguo 23-09-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Solo una reflexion ... que facil es decir que algo no funciona
Responder Con Cita
  #13  
Antiguo 23-09-2008
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.275
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 seoane Ver Mensaje
...que facil es decir que algo no funciona
Bueno, iba a decir que al ser nuevo en el club (aunque veo que no lo es -con más 100 mensajes-) tal vez no conoce mucho a los integrantes.
De ser así, sabría que los "códigos" de Domingo -Seoane- no suelen fallar ("no funcionar").
__________________
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
  #14  
Antiguo 23-09-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Servicio con windows

Es verdad tienen razon, es mas facila decir que no funciona y esperar a que te lo haga otro, tendre mas precaucion para la proxima, 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
Servicios de Windows Eklypsex API de Windows 3 31-10-2008 19:30:13
Listar los servicios instalados en Windows XP fide API de Windows 2 01-03-2008 17:05:11
programar servicios en WINDOWS-XP jesusid Servers 3 20-01-2007 02:25:32
Servicios en windows vista seoane Noticias 10 08-06-2006 02:52:35


La franja horaria es GMT +2. Ahora son las 08:25:43.


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