Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Dom 23 Ene, 2005 6:28 am Asunto: Detectar cualquier Version de FireBird |
|
|
Esta funcion detecta, si se encuentra corriendo en nuestro sistema alguna version de Firebird la 1.0 o la 1.5
| Código: | bool __fastcall Esta_FireBird_Corriendo()
//********FUNCIONES PARA ARRANCAR EL SERVIDOR DE FIREBIRD, SI NO SE ENCUENTRA....
//REALIZADAS POR CESAR. C. SALAZAR GONZALEZ.
//
bool __fastcall Esta_FireBird_Corriendo()
{
bool resultado;
if (GetWindow(GetDesktopWindow,GW_HWNDNEXT)==FindWindow("FB_Server", "Firebird Server") && // Ver 1.5
GetWindow(GetDesktopWindow,GW_HWNDNEXT)==FindWindow("IB_Server", "InterBase Server") // Ver 1.0
)
{
resultado=false;
}
else
{
resultado=true;
}
return(resultado);
}
//---------------------------------------------------------------------------
//ESTA FUNCION INICIA EL SERVIDOR DE FIREBIRD, NO IMPORTANDO
// SI ES LA VERSION 1.0.5 o LA 1.0.3
bool __fastcall Iniciar_FB_Server(const char *Msg, const char *NombreServidor,AnsiString Tipo)
{
TRegistry *lRegistry = new TRegistry();
STARTUPINFO lStartUpInfo;
SECURITY_ATTRIBUTES lSecurityAttr;
PROCESS_INFORMATION lProcessInfo;
AnsiString ruta_al_fbserver;
bool resultado,F15,F10;
lRegistry->RootKey=HKEY_LOCAL_MACHINE;
F15 = lRegistry->OpenKey("SOFTWARE\\Firebird Project\\Firebird Server\\Instances", false);
F10 = lRegistry->OpenKey("SOFTWARE\\Borland\\InterBase\\CurrentVersion\\",false);
try {
if ( !F15 && !F10 ) // si no estan instalada firebird 1.5 y firebird 1.0
{
if(MessageDlg(Msg,mtConfirmation,TMsgDlgButtons() << mbYes <<mbNo>ReadString("DefaultInstance") + "\\bin\\fbserver.exe" + " -a";
ruta_al_fbserver=lRegistry->ReadString("DefaultInstance") + "\\bin\\fbguard.exe" + " -a";
}
if(F10)
{
ruta_al_fbserver=lRegistry->ReadString("ServerDirectory") + "ibserver.exe" + " -a";
ruta_al_fbserver=lRegistry->ReadString("ServerDirectory") + "ibguard.exe" + " -a";
}
ZeroMemory(&lStartUpInfo, sizeof(lStartUpInfo));
ZeroMemory(&lProcessInfo, sizeof(lProcessInfo));
lStartUpInfo.cb=sizeof(lStartUpInfo);
lSecurityAttr.nLength= sizeof (lSecurityAttr);
lSecurityAttr.lpSecurityDescriptor=NULL;
lSecurityAttr.bInheritHandle=true;
if (CreateProcess(0, ruta_al_fbserver.c_str(), &lSecurityAttr, NULL, false, 0, 0, 0, &lStartUpInfo, &lProcessInfo)!= NULL) {
resultado=true;
} else {
resultado=false;
}
} catch (const Exception &e) {
delete lRegistry;
}
return(resultado);
}
//-----------------------------------------------------------------
|
realmente, no fue mucho, lo que se hizo, simplemente, buscar un rato con findwindow y listo. _________________
 |
|