Fórum detectar se ib está rodando no SYSTRAY do PC #149405

25/03/2003

0

Alguém com uma rotina para detectar se ib está rodando na máquina?
E se não estiver para abri-lo?

Desde já agradeço...
Renato


Anonymous

Anonymous

Responder

Posts

25/03/2003

Anonymous

Por Favor, alguem me ajuda!!


Responder

Gostei + 0

25/03/2003

Anonymous

Ja tentei usar o comando:

WinExec(´C:\Arquivos de programas\Borland\InterBase\bin\Ibserver.exe´, sw_show);

mas acontece que, se o Ibserver ja estiver sendo executado, aparece uma mensagem de erro..

:(


Responder

Gostei + 0

25/03/2003

Anonymous

Será que é tao dificil assim??


Responder

Gostei + 0

25/03/2003

Anonymous

Este codigo testa se o IBGuard ou o IBServer estão rodando e se nenhum deles estiver rodando chama o IBGuard (Se for encontrado na pasta apropriada..., senao chama o IBServer).

Se nenhm dos dois estiver rodando e nenhum deles for encotrado para ser iniciado, entao da mensagem de erro.

Note q o caminho de instalacao do IB pode variar de Maquina pra Maquina... Crie um padrao e use sempre o mesmo.... Ou faça uma alteracao na rotina para localizar os arquivos do IB.

Um Abraço
Werlon Goulart



// Testa se o Interbase esta rodando no momento se nao estiver Inicia o Servidor IB.
procedure TForm1.FormCreate(Sender: TObject);
Var OK : Boolean;
begin
OK:=True;
// Testa se o Interbase esta rodando no momento se nao estiver Inicia o Servidor IB.
if (FindWindow(´IB_Server´,´InterBase Server´)=0) and
(FindWindow(´IB_Guard´,´InterBase Guardian´)=0) then begin //Nenhum Server Rodando.
if ((Not FileExists(´C:\Arquivos de programas\Borland\interbase\Bin\IBGuard.EXE´) And
(Not FileExists(´C:\Arquivos de programas\Borland\interbase\Bin\IBServer.EXE´)))
OR (Not FileExists(´C:\Arquivos de programas\Borland\interbase\Bin\IBServer.EXE´))) then begin
Showmessage(´Atenção : O Servidor do Banco de Dados InterBase não pôde ser iniciado.´
+chr(13)+ chr(13)+ ´Solução : Execute o arquivo IBGuard.exe ou IBServer.exe na pasta onde foi instalado o InterBase e tente novamente.´);
OK:=False;
end
else begin //Inicia o Servidor do Banco de Dados InterBase (IBGuard ou IBServer).
if FileExists(´C:\Arquivos de programas\Borland\interbase\Bin\IBGuard.EXE´) then
WinExec(PChar(´C:\Arquivos de programas\Borland\interbase\Bin\IBGuard.EXE´),SW_SHOWNORMAL)
else
if FileExists(´C:\Arquivos de programas\Borland\interbase\Bin\IBServer.EXE´) then
WinExec(PChar(´C:\Arquivos de programas\Borland\interbase\Bin\IBServer.EXE´),SW_SHOWNORMAL);
end;
end;
if Not OK then
showmessage(´O InterBase não esta rodando nem foi possivel inicia-lo.´);


Responder

Gostei + 0

25/03/2003

Renatoricci

Valeu Werlon, estou indo almoçar agora,mas quando chegar vou testar..
Obrigado pela ajuda..

Renato


Responder

Gostei + 0

25/03/2003

Anonymous

vc pode fazer assim:


procedure TForm1.AplicativosRodando;
const
MAX_WINDOW = 16364;
var
I : Integer;
PCaption : array[0..255] of char;
Achou : boolean;
begin
Achou := false;
for I:=1 to MAX_WINDOW do
begin
if((GetWindowText(I,PCaption,255)<>0)and
(GetWindowLong(I,GWL_EXSTYLE)<>0) and
(GetWindowLong(I,GWL_HWNDPARENT)=0)and
(GetWindowLong(I,GWL_HINSTANCE)<>0)) then
if not((IsWindowVisible(I))) then
if String(PCaption) = ´InterBase Server´ then
begin
ShowMessage(´Interbase Carregado´);
Achou := true;
break;
end;
end;
if not(Achou) then
WinExec(´C:\Arquivos de programas\Borland\InterBase\bin\ibguard.exe´, sw_show);


end;


Leandro

ICQ 128124370


Responder

Gostei + 0

25/03/2003

Renatoricci

Valeu pela dica Leandro..


Responder

Gostei + 0

25/03/2003

Anonymous

Faça o seguinte:

//Verifica se o Interbase esta rodando (Precisa da Unit IBIntf)
if not TryIBLoad then begin
showmessage(´O Interbase/FireBird não esta rodando´);
Application.Terminate;
end;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar