Hola.
Fijate si te sirve esta opción,
checkFirebird.h:
Código PHP:
#ifndef checkFirebirdH
#define checkFirebirdH
bool isFirebirdRunning( void );
#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 schm, schs;
TServiceStatus ss;
DWORD dwStat = 0;
schm = OpenSCManager( sMachine, NULL, SC_MANAGER_CONNECT );
if ( schm > 0 ) {
schs = OpenService( schm, sService, SERVICE_QUERY_STATUS );
if ( schs > 0 ) {
if ( QueryServiceStatus ( schs, &ss ) )
dwStat = ss.dwCurrentState;
CloseServiceHandle( schs );
}
CloseServiceHandle ( schm );
}
return dwStat;
}
bool isFirebirdRunning( void )
{
return ServiceStatus( "", "FirebirdServerDefaultInstance" ) == SERVICE_RUNNING;
}
Ejemplos de uso:
Código PHP:
...
#include "checkFirebird.h"
...
void __fastcall TForm1::ButtonCheckClick( TObject *Sender )
{
ShowMessage( (isFirebirdRunning() ? "Servicio de Firebird activo" : "Servicio de Firebird inactivo") );
...
if ( isFirebirdRunning() )
...
Saludos