Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
¿Está activo FB?

Esta pregunta no sé si debe ir aquí o en el subforo de C++ Builder. Tengo una aplicación hecha en BCB 6 con FB 2.5 y me ha surgido una duda: ¿Hay alguna forma de saber si está instalado y ejecutándose dicho motor? Sobre todo teniendo en cuenta que puede instalarse como servicio o como programa, aunque yo recomiendo instalarlo como servicio. Ahora tengo este código:
Código PHP:
if (GetWindow(GetDesktopWindowGW_HWNDNEXT) == FindWindow("FB_Server""Firebird Server")  && // Ver 1.5
    
GetWindow(GetDesktopWindowGW_HWNDNEXT) == FindWindow("IB_Server""InterBase Server"))    // Ver 1.0
     
return false;
else
     return 
true
pero he comprobado que no funciona bien o no soy capaz de "ejecutarlo" bien.
Responder Con Cita
  #2  
Antiguo 15-11-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Dicho de otra forma: Me da la impresión que si bsucamos un servicio, con ese código no se encuentra si está ejecutándose o no.
Responder Con Cita
  #3  
Antiguo 15-11-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Depende de la versión, tendrás que verificar un servicio u otro:
Código:
Superserver -> fbserver
Classicserver -> fb_inet_server
Superclassic -> fb_smp_server
Responder Con Cita
  #4  
Antiguo 15-11-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Fijate si te sirve esta opción,

checkFirebird.h:
Código PHP:
#ifndef checkFirebirdH
#define checkFirebirdH

bool isFirebirdRunningvoid );

#endif 
checkFirebird.cpp:
Código PHP:
#pragma hdrstop

#include "checkFirebird.h"
#include "WinSvc.hpp"

#pragma package( smart_init )

DWORD ServiceStatus( const char* &sMachine, const char* &sService )
{
  
SC_HANDLE schmschs;
  
TServiceStatus ss;
  
DWORD dwStat 0;

  
schm OpenSCManagersMachineNULLSC_MANAGER_CONNECT );

  if ( 
schm ) {
    
schs OpenServiceschmsServiceSERVICE_QUERY_STATUS );

    if ( 
schs ) {
      if ( 
QueryServiceStatus schs, &ss ) )
        
dwStat ss.dwCurrentState;
      
CloseServiceHandleschs );
    }

    
CloseServiceHandle schm );
  }
  return 
dwStat;
}

bool isFirebirdRunningvoid )
{
  return 
ServiceStatus"""FirebirdServerDefaultInstance" ) == SERVICE_RUNNING;

Ejemplos de uso:
Código PHP:
...

#include "checkFirebird.h"

...

void __fastcall TForm1::ButtonCheckClickTObject *Sender )
{
  
ShowMessage( (isFirebirdRunning() ? "Servicio de Firebird activo" "Servicio de Firebird inactivo") );
  ...
  if ( 
isFirebirdRunning() )
  ... 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 16-11-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias a los dos. En cuanto pueda lo probaré y os diré como ha ido.
Responder Con Cita
  #6  
Antiguo 22-11-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
ecfisa: Gracias. Funciona a la perfección.
Responder Con Cita
  #7  
Antiguo 23-11-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Estuve haciendo pruebas que como os he dicho funcionan a la perfección. Sin embargo he pensado que tal vez sea más efectivo preguntar por el servicio Firebird Guardian
Código PHP:
bool isFirebirdRunningvoid )
{
  return 
ServiceStatus"""FirebirdGuardianDefaultInstance" ) == SERVICE_RUNNING;

ya que si se lanza este, automátciamente se arranca el servidor. No sé que os parece.
Responder Con Cita
  #8  
Antiguo 24-11-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No veo buena idea preguntar solamente por Firebird Guardian, de echo se usa cuando Firebird es ejecutado como aplicación no como servicio y era esencial en Windows 9x/MS por ejemplo.
Pero con seguridad en los S.O. mas actuales la mayoría opte por no ejecutarlo, lo que no lo haría un indicador fiable de que Firebird esté activo o no.

( What is the Firebird Guardian ? )

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 24-11-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias por la observación; la tendré en cuenta. Sin embargo yo tengo instalado FB como servicio y tengo lanzados ambos; no sé si estaré de alguna forma interfiriendo en el buen rendimiento del motor.
Responder Con Cita
  #10  
Antiguo 24-11-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Angel.

No no creo que degrade el rendimiento, al menos no lo he escuchado.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 25-11-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Guardian se usaba en win95/98, versión superserver y ejecutándose como aplicación, no como servicio.
Después de eso no es necesario para nada realmente, aunque muchas veces se instala por la "sensación extra" de seguridad que da.
No afecta casi para nada al rendimiento porque básicamente solo está pendiente de que esté andando el server, para lanzarlo si no se está ejecutando.
Responder Con Cita
  #12  
Antiguo 25-11-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Perfecto. Muchas gracias por las aclaraciones.
Responder Con Cita
  #13  
Antiguo 01-12-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Voy un pasito más allá con este hilo.

Igual que me habéis enseñado a averiguar si un servicio está o no activo, ¿se podría saber si está instalado FB? He estado viendo la ayuda sobre OpenService pero no me queda muy claro si existe algún comando que averigüe ese punto.
Responder Con Cita
  #14  
Antiguo 01-12-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

En un parrafo de este enlace Testing your installation dice:
Cita:
If everything works as designed, the Firebird server process will be running on your server upon completion of the installation. It will start up automatically whenever you restart your server.
por lo que controlando los puntos anteriores debería bastar. (creo que algo similar ya comentaste en un mensaje anterior)

Algo que se me ocurre para verificar si existe alguna versión de Firebird instalada es revisar si el nombre existe en la lista de programas instalados, ejemplo:
Código PHP:
...
#include <registry.hpp>

bool isFirebirdInstalled()
{
  
AnsiString CKEY "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
  
TRegistry   *rg = new TRegistry;
  
TStringList *ts = new TStringList;
  
bool found false;

  
rg->RootKey HKEY_LOCAL_MACHINE;
  if( 
rg->OpenKeyReadOnlyCKEY ) )
    
rg->GetKeyNamests );
  
rg->CloseKey();

  for ( 
int i 0ts->Count && !foundi++ ) {
    
rg->RootKey HKEY_LOCAL_MACHINE;
    
rg->OpenKeyReadOnlyCKEY '\\'ts->Strings[i] );
    
AnsiString str rg->ReadString"DisplayName" );
    
found str.Pos"Firebird" ) != 0;
    
rg->CloseKey();
  }

  
delete rg;
  
delete ts;
  return 
found;
}

void __fastcall TForm1::Button1ClickTObject *Sender )
{
  if ( 
isFirebirdInstalled() )
    
ShowMessage"Instalado" );
  else
    
ShowMessage"No instalado" );

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 02-12-2016 a las 02:40:35.
Responder Con Cita
  #15  
Antiguo 02-12-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Muchas gracias ecfisa. No se me había ocurrido lo de buscar en el registro, pero lo cierto es que le tengo mucho respeto a meterme con él.
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
Detectar si un proceso esta activo. deliriun Varios 3 22-09-2015 12:25:54
Saber si un proceso esta activo Anel Hernandez Varios 3 17-01-2012 19:17:16
Como saber si mi servidor de MySQL esta activo o corriendo. rgstuamigo MySQL 5 19-11-2008 22:54:01
Cómo comprobar que el servidor está activo. afxe Conexión con bases de datos 2 09-05-2006 19:31:17
Pregunta básica. Como saber si un valor está activo o no. gluglu Varios 3 16-09-2004 18:34:53


La franja horaria es GMT +2. Ahora son las 16:46:15.


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