Proibir mas de 1 instancia do aplicativo seja executada!
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
Curtidas 0
Respostas
Orlando Frade
10/03/2003
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
GOSTEI 0
Paulo
10/03/2003
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.
GOSTEI 0