ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Testar conexão com Firebird

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
LordeMorpheus
Novato
Novato


Registrado: Domingo, 7 de Março de 2010
Mensagens: 38

MensagemEnviada: Seg Jul 26, 2010 11:04 am    Assunto: Testar conexão com Firebird Responder com Citação

Olá a todos, estou tentando implementar no meu software o seguinte:

Ao executá-lo, se o servidor Fireberd não estiver ativo, o programa inicia o serviço.

Pesquisei bastante e já tentei diversos códigos, mas até agora não funcionaram.

Atualmente uso Firebird 2.5 e para conexão, o driver nativo do Delphi 2010...

Desde já agradeço...

Até mais...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Seg Jul 26, 2010 2:29 pm    Assunto: Responder com Citação

coloque no na Uses as unit

Registry, ShellAPI;


Código:

Function ControlFBSvr(bStart: Boolean): Boolean;
var
  szBuff: String;
begin
  with TRegistry.Create do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    Result := OpenKey('SOFTWARE\Firebird Project\Firebird Server\Instances', False);
    if Result then
    begin
      szBuff := ReadString('DefaultInstance') + 'bin\instsvc.exe';
      Result := FileExists(szBuff);
      if Result then
      case bStart of
      True: ShellExecute(0, nil, PChar(szBuff), '-s start', nil, SW_HIDE);
      False: ShellExecute(0, nil, PChar(szBuff), '-s stop', nil, SW_HIDE);
      end;
      CloseKey;
    end;
    Free;
  end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
LordeMorpheus
Novato
Novato


Registrado: Domingo, 7 de Março de 2010
Mensagens: 38

MensagemEnviada: Seg Jul 26, 2010 3:19 pm    Assunto: Responder com Citação

rafmattos escreveu:
coloque no na Uses as unit

Registry, ShellAPI;


Código:

Function ControlFBSvr(bStart: Boolean): Boolean;
var
  szBuff: String;
begin
  with TRegistry.Create do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    Result := OpenKey('SOFTWARE\Firebird Project\Firebird Server\Instances', False);
    if Result then
    begin
      szBuff := ReadString('DefaultInstance') + 'bin\instsvc.exe';
      Result := FileExists(szBuff);
      if Result then
      case bStart of
      True: ShellExecute(0, nil, PChar(szBuff), '-s start', nil, SW_HIDE);
      False: ShellExecute(0, nil, PChar(szBuff), '-s stop', nil, SW_HIDE);
      end;
      CloseKey;
    end;
    Free;
  end;
end;


Desculpe minha ignorância, mas como faria para chamar essa função?

Muito obrigado...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Seg Jul 26, 2010 3:23 pm    Assunto: Responder com Citação

Derruba o Serviço
Código:

begin
   ControlFBSvr(FALSE);
end;






ativa o Serviço
Código:

begin
   ControlFBSvr(TRUE);
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
LordeMorpheus
Novato
Novato


Registrado: Domingo, 7 de Março de 2010
Mensagens: 38

MensagemEnviada: Seg Jul 26, 2010 3:42 pm    Assunto: Responder com Citação

rafmattos escreveu:
Derruba o Serviço
Código:

begin
   ControlFBSvr(FALSE);
end;






ativa o Serviço
Código:

begin
   ControlFBSvr(TRUE);
end;


Olá, obrigado pela atenção...

Eu coloquei "ControlFBSvr(TRUE);" no OnCreate do form, ao rodar o programa ele dá um erro "Unavailable database", mas inicia o serviço do Firebird. Ao executar o programa novamente abre normalmente...

Desde já obrigado pela atenção...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Seg Jul 26, 2010 4:04 pm    Assunto: Responder com Citação

fiz o teste aqui funcionou normal
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Seg Jul 26, 2010 7:00 pm    Assunto: Responder com Citação

pa vc ta mandando conectar antes de mandar abrir.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Ter Jul 27, 2010 1:03 pm    Assunto: Responder com Citação

Pesquise a api WinSVC:

OpenSCManager(), OpenService()...
em OpenSCManager() vc verifica o status de dwDesiredAccess, depois em
OpenService() e ter pego o SC_HANDLE vc verifica dwDesiredAccess, utilizando SERVICE_QUERY_STATUS

Depois é somente olhar se o serviço está instalado, depois vc fecha o handle do serviço...

Neste caso vc obterá se está rodando por aplicação ou não, resultando em falso caso o serviço nõa esteja instalado...

O serviço que vc deve procurar é FirebirdServerDefaultInstance, juntando isto vc faz uma função...

No caso de a aplicação não estar rodando como serviço vc deverá olha no registro para ver em defaultinstance onde está instalada...


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB