Como não carregar .exe de 1 vez ?

03/12/2003

1

Caros colegas ;

Alguém sabe de um componente , ou código , que trabalhe em impedir que a pessoa abra o executável mais de 1 vez ? . Por exemplo :
[b:0887006d2a][i:0887006d2a]O Usuário abriu o sistema, agora ele vai no desktop e abre o programa novamente , sendo que ele já está aberto ! Aí aparece a mensagem : ´O programa já está carregado !´ . [/i:0887006d2a][/b:0887006d2a]


:) Acho que vai ter de criar um rotina que verifique se o programa já está sendo executado , e se o mesmo estiver sendo ; aparece a mensegem de informação !

Obrigado !

Tiago José Milam


Responder

Posts

03/12/2003

Rafael Heise

para fazer o que você quer, use MUTEX.
Procure na net.. eu não tenho exatamente o que deve ser feito, mas sei que é isso...
não deve ser tão dificil..
valeu


Responder

03/12/2003

Rafael Mattos

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.


Responder

03/12/2003

Emerson_

Sabe o que eu fiz com este probleminha?

Ao clicar no icone do programa ao inves de chamar o exe, chama um .bat

Terei um arquivo auxiliar ´rede.txt´ (dentro pode ter qualquer coisa)

Programa.bat

if exist emuso.txt goto sair
copy rede.txt emuso.txt
nesta linha, chamar o .exe
del emuso.txt -- > ao terminar o exe, apagar o arquivo ´Emuso.txt´
goto Fim

:sair
cls
echo Este programa já está sendo executado!
pause
:fim


Responder