Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Saber si un servicio esta corriendo en una IP REMOTA

Buenas tardes.

Hay alguna manera de saber si un servicio esta iniciado en una IP Remota a la cual debo conectarme pero solo si el servicio está iniciado, algo que sea rápido de comprobar y mi aplicación no demore tanto en abrir
Porque actualmente tengo un código que lo verifica pero se demora 30 segundos en saber si está iniciado y es demasiada espera para un usuario iniciar una aplicación.

Código Delphi [-]
// 26/02/2016 Verifica el estado del servicio, si esta ensendido, apagado, sin instalar, instalado ...
//sMachine --> IP Donde se verifica el servicio
//sService --> Nombre del servicio
//Si lo que retorna es diferente de 4 es porque el servicio no está corriendo
//Posibles resultados.
{******************************************}
  {*** Parameters: ***}
  {*** sService: specifies the name of the service to open
  {*** sMachine: specifies the name of the target computer
  {*** ***}
  {*** Return Values: ***}
  {*** -1 = Error opening service ***}
  {*** 1 = SERVICE_STOPPED ***}
  {*** 2 = SERVICE_START_PENDING ***}
  {*** 3 = SERVICE_STOP_PENDING ***}
  {*** 4 = SERVICE_RUNNING ***}
  {*** 5 = SERVICE_CONTINUE_PENDING ***}
  {*** 6 = SERVICE_PAUSE_PENDING ***}
  {*** 7 = SERVICE_PAUSED ***}
  {******************************************}
function ServiceGetStatus(sMachine, sService: PChar): DWORD;
var
  SCManHandle, SvcHandle: SC_Handle;
  SS: TServiceStatus;
  dwStat: DWORD;
begin
  dwStat := 0;
  // Open service manager handle.
  SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
  if (SCManHandle > 0) then
  begin
    SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
    // if Service installed
    if (SvcHandle > 0) then
    begin
      // SS structure holds the service status (TServiceStatus);
      if (QueryServiceStatus(SvcHandle, SS)) then
        dwStat := ss.dwCurrentState;
      CloseServiceHandle(SvcHandle);
    end;
    CloseServiceHandle(SCManHandle);
  end;
  Result := dwStat;

Gracias.

Última edición por Soa Pelaez fecha: 30-05-2017 a las 23:27:58.
Responder Con Cita
  #2  
Antiguo 02-06-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Como saber el estado de un servicio en una IP REMOTA

Buenas tardes.

Hay alguna manera de saber si un servicio esta iniciado en una IP Remota a la cual debo conectarme pero solo si el servicio está iniciado, algo que sea rápido de comprobar y mi aplicación no demore tanto en abrir
Porque actualmente tengo un código que lo verifica pero se demora 30 segundos en saber si está iniciado y es demasiada espera para un usuario iniciar una aplicación.

Código Delphi [-]
// 26/02/2016 Verifica el estado del servicio, si esta ensendido, apagado, sin instalar, instalado ...
//sMachine --> IP Donde se verifica el servicio
//sService --> Nombre del servicio
//Si lo que retorna es diferente de 4 es porque el servicio no está corriendo
//Posibles resultados.
{******************************************}
{*** Parameters: ***}
{*** sService: specifies the name of the service to open
{*** sMachine: specifies the name of the target computer
{*** ***}
{*** Return Values: ***}
{*** -1 = Error opening service ***}
{*** 1 = SERVICE_STOPPED ***}
{*** 2 = SERVICE_START_PENDING ***}
{*** 3 = SERVICE_STOP_PENDING ***}
{*** 4 = SERVICE_RUNNING ***}
{*** 5 = SERVICE_CONTINUE_PENDING ***}
{*** 6 = SERVICE_PAUSE_PENDING ***}
{*** 7 = SERVICE_PAUSED ***}
{******************************************}
function ServiceGetStatus(sMachine, sService: PChar): DWORD;
var
SCManHandle, SvcHandle: SC_Handle;
SS: TServiceStatus;
dwStat: DWORD;
begin
dwStat := 0;
// Open service manager handle.
SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
if (SCManHandle > 0) then
begin
SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
// if Service installed
if (SvcHandle > 0) then
begin
// SS structure holds the service status (TServiceStatus);
if (QueryServiceStatus(SvcHandle, SS)) then
dwStat := ss.dwCurrentState;
CloseServiceHandle(SvcHandle);
end;
CloseServiceHandle(SCManHandle);
end;
Result := dwStat;

Gracias.
Responder Con Cita
  #3  
Antiguo 02-06-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No crees un hilo nuevo para preguntar lo mismo que en el otro.
Y no olvides usar las etiquetas para el código.
Saludos.
PD: Los he unido.
Responder Con Cita
  #4  
Antiguo 02-06-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Me disculpo es que no me deja eliminar el primer hilo.
Responder Con Cita
  #5  
Antiguo 02-06-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Soa Pelaez Ver Mensaje
Me disculpo es que no me deja eliminar el primer hilo.
Hola, es que no hay que eliminarlo, solamente debes escribir un nuevo post en el mismo hilo, tal y como he hecho, así se continua con el mismo
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
Saber el estado de un Servicio mcsebas API de Windows 4 26-02-2010 09:54:56
saber el estado de los botones del ratón droguerman API de Windows 2 13-04-2007 05:29:57
Cómo saber el "nombre real" de un servicio Casimiro Notevi Windows 10 11-04-2007 20:13:58
Saber el estado de un Trigger muli Firebird e Interbase 4 28-08-2006 12:20:49


La franja horaria es GMT +2. Ahora son las 01:34:50.


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