Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
LordeMorpheus Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Domingo, 7 de Março de 2010 Mensagens: 38
|
Enviada: Seg Jul 26, 2010 11:04 am Assunto: Testar conexão com Firebird |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
rafmattos Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Seg Jul 26, 2010 2:29 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
LordeMorpheus Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Domingo, 7 de Março de 2010 Mensagens: 38
|
Enviada: Seg Jul 26, 2010 3:19 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
rafmattos Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Seg Jul 26, 2010 3:23 pm Assunto: |
|
|
Derruba o Serviço
Código: |
begin
ControlFBSvr(FALSE);
end;
|
ativa o Serviço
Código: |
begin
ControlFBSvr(TRUE);
end;
|
|
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
LordeMorpheus Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Domingo, 7 de Março de 2010 Mensagens: 38
|
Enviada: Seg Jul 26, 2010 3:42 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
rafmattos Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Seg Jul 26, 2010 4:04 pm Assunto: |
|
|
fiz o teste aqui funcionou normal |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
gilsonnrodrigues Moderador
![Moderador Moderador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/moderador.gif)
Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Seg Jul 26, 2010 7:00 pm Assunto: |
|
|
pa vc ta mandando conectar antes de mandar abrir. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
johnny-walker Moderador
![Moderador Moderador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/moderador.gif)
![](images/avatars/2653151408207b54dc.gif)
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Jul 27, 2010 1:03 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
|