Mensaje    Asunto: Detectar cualquier Version de FireBird Responder citando

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.
_________________
Cool