Fórum Proibir mas de 1 instancia do aplicativo seja executada! #144086
10/03/2003
0
Olá pesso@l
para evitar que um aplicativo no Delphi seja aberto dois ou mais ao mesmo tempo eu uso o seguinte esquema:
Mas acontece que na prática isso não funciona.
Será que alguem poderia me ajudar ???
para evitar que um aplicativo no Delphi seja aberto dois ou mais ao mesmo tempo eu uso o seguinte esquema:
if (HPrevInst = 0) then // inicia o programa else // avisa que já está aberto
Mas acontece que na prática isso não funciona.
Será que alguem poderia me ajudar ???
Eniorm
Curtir tópico
+ 0
Responder
Posts
11/03/2003
Orlando Frade
Tente usar a API FindWindow.
FindWindow(nil, ´Caption do seu programa´);
function ProgAberto(Capt: String): Boolean;
// Capt é o caption do seu programa
// Função criada por Orlando Frade em 11/03/2003
var
Win: THandle;
begin
Win := FindWindow(nil, PChar(Capt));
if Win <> 0 then
result := True
else
result := False
end;
espero ter ajudado.
FindWindow(nil, ´Caption do seu programa´);
function ProgAberto(Capt: String): Boolean;
// Capt é o caption do seu programa
// Função criada por Orlando Frade em 11/03/2003
var
Win: THandle;
begin
Win := FindWindow(nil, PChar(Capt));
if Win <> 0 then
result := True
else
result := False
end;
espero ter ajudado.
Olá pesso@l
para evitar que um aplicativo no Delphi seja aberto dois ou mais ao mesmo tempo eu uso o seguinte esquema:
Mas acontece que na prática isso não funciona.
Será que alguem poderia me ajudar ???
if (HPrevInst = 0) then // inicia o programa else // avisa que já está aberto
Responder
Gostei + 0
11/03/2003
Paulo
este exemplo deve ser inserido no arquivo de projeto(.DPR)
Program projeto1
uses
Forms, Windows,
Form1 in unit1 (Form1);
{$R *.Res}
var handle1, handle2: HWND;
begin
Application.Initialize;
handle1:=FindWindow(PChar(´Form1´), nil);
if handle1 = 0 then begin
Application.CreateForm(TForm1, Fom1);
Application.Run;
end else begin
handle2:=GetWindow(handle1, GW_OWNER);
ShowWindow(handle2, SW_HIDE);
ShowWindow(handle2, SW_RESTORE);
setForeGroundWindow(handle1);
end
end.
Este código só funciona se o Delphi não estiver carregado.
Program projeto1
uses
Forms, Windows,
Form1 in unit1 (Form1);
{$R *.Res}
var handle1, handle2: HWND;
begin
Application.Initialize;
handle1:=FindWindow(PChar(´Form1´), nil);
if handle1 = 0 then begin
Application.CreateForm(TForm1, Fom1);
Application.Run;
end else begin
handle2:=GetWindow(handle1, GW_OWNER);
ShowWindow(handle2, SW_HIDE);
ShowWindow(handle2, SW_RESTORE);
setForeGroundWindow(handle1);
end
end.
Este código só funciona se o Delphi não estiver carregado.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)