Apenas 1 instância do aplicativo
Oi,
Como faço p/ verificar se o meu aplicativo já está em execução? Para não permitir que a cada duplo-clique sobre o mesmo não se abra novamente uma nova instância... e sim maximize a que já está aberta!!!
Fiz o seguinte código no DPR, mas não deu certo!!
...
{$R *.res}
begin
if FindWindow(´TMainForm´, ´Aplicação de Teste´) <> 0 then
SetForegroundWindow(FindWindow(´TMainForm´, ´´))
else
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
Mas aparecem erros:
1) ´ Undeclared identifier: ´FindWindow´ ´
2) ´ Undeclared identifier: ´SetForegroundWindow´ ´
Por favor, se puder me ajudar...
Como faço p/ verificar se o meu aplicativo já está em execução? Para não permitir que a cada duplo-clique sobre o mesmo não se abra novamente uma nova instância... e sim maximize a que já está aberta!!!
Fiz o seguinte código no DPR, mas não deu certo!!
...
{$R *.res}
begin
if FindWindow(´TMainForm´, ´Aplicação de Teste´) <> 0 then
SetForegroundWindow(FindWindow(´TMainForm´, ´´))
else
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
Mas aparecem erros:
1) ´ Undeclared identifier: ´FindWindow´ ´
2) ´ Undeclared identifier: ´SetForegroundWindow´ ´
Por favor, se puder me ajudar...
Fatima
Curtidas 0
Respostas
Melo
24/05/2004
program OnlyOne;
uses
Windows, Forms,
Unit1 in ´Unit1.pas´ ;
{$R *.RES}
begin
{ cria um mutex usando um nome único }
CreateMutex(nil, False, ´Aki vc coloca o nome da sua aplicação´);
{ verifica se houve erro na criação }
if GetLastError = ERROR_ALREADY_EXISTS then
begin
MessageBox(0, ´Este programa já está sendo executado’,
´Aviso´, MB_ICONSTOP);
Halt(0); // cancela execução
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
Espero ter Ajudado,
Melo
uses
Windows, Forms,
Unit1 in ´Unit1.pas´ ;
{$R *.RES}
begin
{ cria um mutex usando um nome único }
CreateMutex(nil, False, ´Aki vc coloca o nome da sua aplicação´);
{ verifica se houve erro na criação }
if GetLastError = ERROR_ALREADY_EXISTS then
begin
MessageBox(0, ´Este programa já está sendo executado’,
´Aviso´, MB_ICONSTOP);
Halt(0); // cancela execução
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
Espero ter Ajudado,
Melo
GOSTEI 0