Programa na inicialização

Delphi

31/10/2008

Boa tarde amigos

Tenho um software que funciona como servidor que está na inicialização da maquina (C:\Documents and Settings\Alexandre\Menu Iniciar\Programas\Inicializar), para que toda vez que o computador for desligado ele seja executado.

O problema é que ele usa BD (Firebird 2.1), e na maioria das vezes ele entra antes do firebird startar, conseqüentemente dando erro na hora de abrir.

Ai, muitas vezes o meu cliente reclama que a aplicação não está funcionando e quando vou ver o software servidor não abrir por causa do erro citado.

Alguém teria uma idéia para solucionar esse problema????


Japa192

Japa192

Curtidas 0

Respostas

Wdrocha

Wdrocha

31/10/2008

O seu programa está em rede??

caso não esteja...tente usar o Firebird Embedded....


GOSTEI 0
Japa192

Japa192

31/10/2008

sim....está em rede


GOSTEI 0
Nerdex

Nerdex

31/10/2008

Olá Japa,

Cara, para isso você deveria implementar um controle para capturar o estado sobre o status do serviço do FireBird.
Veja na unit WinSvc do teu Delphi as especificações ([b:9baa94e5f0]windows services[/b:9baa94e5f0]), como esta:

function ServiceGetStatus(sMachine, sService : string) : DWord;
var
 schm   : SC_Handle;       //service control manager handle
 schs   : SC_Handle;       // service handle
 ss     : TServiceStatus;  // service status
 dwStat : DWord;           // current service status
begin
  dwStat := -1;
  // connect to the service control manager
  schm := OpenSCManager( PChar(sMachine), Nil,
                         SC_MANAGER_CONNECT);
  // if successful...
  if(schm > 0)then
  begin
    // open a handle to the specified service
    // we want to query service status
    schs := OpenService( schm, PChar(sService),
                         SERVICE_QUERY_STATUS);
    // if successful...
    if(schs > 0)then
    begin
      // retrieve the current status
      //of the specified service   
      if (QueryServiceStatus( schs, ss)) then
      begin
        dwStat := ss.dwCurrentState;
      end;
      // close service handle
      CloseServiceHandle(schs);
    end;
    // close service control manager handle
    CloseServiceHandle(schm);
  end;
  Result := dwStat;
end;


[size=9:9baa94e5f0][color=darkblue:9baa94e5f0]Código de exemplo:[/color:9baa94e5f0][/size:9baa94e5f0]
[size=9:9baa94e5f0][color=green:9baa94e5f0][url]http://www.infojet.cz/program/delphi/tips/tip0027.html[/url][/color:9baa94e5f0][/size:9baa94e5f0]


GOSTEI 0
POSTAR