Evitar abrir 2 vezes o programa
Como faço para evitar que se possa abrir duas ou mais instâncias do meu progrema?
Fmd
Curtidas 0
Respostas
Carnette
28/08/2003
Tirado do 800 Dicas e Truques em Delphi do Lloydsoft
http://www.lloydsoft.hpg.ig.com.br/
http://www.lloydsoft.hpg.ig.com.br/
132 - Executando uma única cópia do aplicativo
Se você quiser executar uma única copia do aplicativo, o código de inicializacao do arquivo fonte do PROJETO pode ser escrito conforme segue:
program Project1;
uses
Forms,
Windows,
Dialogs,
Unit1 in ´Unit1.pas´ ;
{$R *.RES}
Var HprevHist : HWND;
begin
Application.Initialize;
HprevHist := FindWindow(Nil, PChar(´TheProgrammer´));
if HprevHist = 0 then begin
Application.Title := ´TheProgrammer´;
Application.CreateForm(TForm1, Form1);
Application.Run;
end else
MessageDlg(´Você não pode executar outra cópia do aplicativo´, mtInformation, [mbOK], 0);
Com esse código o usuário pode iniciar uma nova copia do aplicativo somente se não houver outra anterior. Caso contrario é exibido uma mensagem para o usuário.
GOSTEI 0
Fmd
28/08/2003
Valeu carnette, era isso mesmo.
GOSTEI 0
Felipe Z
28/08/2003
Só melhorando a resposta a cima não que esteja errada mais estava faltando algumas coisas
Segue:
no OnCreate
procedure TForm1.FormCreate(Sender: TObject);
Var
HprevHist : HWND;
begin
HprevHist := FindWindow(Nil, PChar('NomedoPrograma'));
if HprevHist = 0 then
Begin
{Seu Codigo}
end
else
Begin
MessageDlg('Você não pode executar outra cópia do aplicativo', mtError, [mbOK], 0);
Halt;
end;
end;
Segue:
no OnCreate
procedure TForm1.FormCreate(Sender: TObject);
Var
HprevHist : HWND;
begin
HprevHist := FindWindow(Nil, PChar('NomedoPrograma'));
if HprevHist = 0 then
Begin
{Seu Codigo}
end
else
Begin
MessageDlg('Você não pode executar outra cópia do aplicativo', mtError, [mbOK], 0);
Halt;
end;
end;
GOSTEI 0