Limitar execução
ola pessoal,
eu estava querendo travar o meu exe para abrir somente 2 vezes... tem como ? eu consegui um codigo na internet pronto.... só que eu não entendi nada... a unica coisa que sei foi que ele so deixa abrir 1 vez e nao deixa mais nada... eu queria limitar a quantidade de acessos simultaneos... alguem poderia me ajudar?
vejam o codigo que eu coloquei no meu projeto.
eu estava querendo travar o meu exe para abrir somente 2 vezes... tem como ? eu consegui um codigo na internet pronto.... só que eu não entendi nada... a unica coisa que sei foi que ele so deixa abrir 1 vez e nao deixa mais nada... eu queria limitar a quantidade de acessos simultaneos... alguem poderia me ajudar?
vejam o codigo que eu coloquei no meu projeto.
var Handle: THandle; begin Handle := FindWindow(´TfrmPrincipal´, nil); if Handle <> 0 then begin Application.MessageBox(´Por Segurança, não é permitido abrir o mesmo programa duas vezes. A Execução ´ + ´anterior será ativada.´, ´Segurança do Sistema´, MB_OK); if not IsWindowVisible(Handle) then ShowWindow(Handle, SW_RESTORE); SetForegroundWindow(Handle); Exit; end; Application.Initialize; FrmLogin := TfrmLogin.Create(Application); FrmLogin.ShowModal; Application.Title := ´Digidocs´; Application.Run;
Fernando_cunha
Curtidas 0
Melhor post
Marco Salles
02/06/2006
[b:269c973e8d]uses Windows e Dialogs[/b:269c973e8d]
No projeto Faça :
No projeto Faça :
program Project1;
uses
Forms,
Windows,Dialogs,
Unit1 in ´Unit1.pas´ ;
{$R *.res}
var
AbrirCopia:Boolean;
begin
try
AbrirCopia:=False;
CreateMutex(nil, True, ´COPIA´);
if not (GetLastError = ERROR_ALREADY_EXISTS) then
abrirCopia:=True
else
begin
CreateMutex(nil, True, ´COPIA2´);
if not (GetLastError = ERROR_ALREADY_EXISTS) then
abrirCopia:=True
else
begin
CreateMutex(nil, True, ´COPIA3´);
if not (GetLastError = ERROR_ALREADY_EXISTS) then
AbrirCopia:=True
end;
end;
finally
begin
if AbrirCopia Then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
begin
showmessage(´Mensagem qualquer´);
application.Terminate;
end;
end;
end;
end.GOSTEI 1
Mais Respostas
Beppe
01/06/2006
Este código (sólito) não serve, por que não conta, só verifica a existência. Precisará de átomos ou semáforos. Amanhã te posto uma solução, estou sem Delphi aqui.
GOSTEI 0
Aroldo Zanela
01/06/2006
Colega,
Eu não entendi claramente o que você deseja. No caso do código acima, serve apenas para verificar se já existe uma instância em execução (processo) e ainda assim, seria mais eficiente o uso de Mutex. Minha dúvida é: - Você precisa fazer uma programa demo que possa ser executado apenas duas vezes?
Eu não entendi claramente o que você deseja. No caso do código acima, serve apenas para verificar se já existe uma instância em execução (processo) e ainda assim, seria mais eficiente o uso de Mutex. Minha dúvida é: - Você precisa fazer uma programa demo que possa ser executado apenas duas vezes?
GOSTEI 0
Fernando_cunha
01/06/2006
O que eu tenho hoje, é que ele verifica se já esta aberta a aplicação e nao deixa abrir novamente....
eu queria que ele verifica se ja esta aberto, quantas vezes esta aberta... exemplo ( 3vezes ) ... eu queria abrir o exe 3 vezes, se abrir de novo ai sim ele da o erro que não posso abrir
eu queria que ele verifica se ja esta aberto, quantas vezes esta aberta... exemplo ( 3vezes ) ... eu queria abrir o exe 3 vezes, se abrir de novo ai sim ele da o erro que não posso abrir
GOSTEI 0
Paullsoftware
01/06/2006
você pode por exemplo criar um arquivo ini no mesmo diretório do seu aplicativo e sempre que seu sistema abrir ele verificar um contador que vc pode criar dentro desse arquivo quando atingir a quantidade desejada ele informar ao usuário que não é permitido abrir mais de x vezes o sistema ao mesmo tempo:
todas as vezes que seu sistema inicializar ele deve verificar esse arquivo e aplicar as proteções necessárias... :wink:
[Config]
Contador = 1
Micro = Estacao2
Hora = 08:00:00
Dia = 12/01/2006
todas as vezes que seu sistema inicializar ele deve verificar esse arquivo e aplicar as proteções necessárias... :wink:
GOSTEI 0
Cristiano Alves
01/06/2006
A solução do colega Paulo Ricardo funciona. Só não se esqueça de decrementar o contador ao encerrar o aplicativo.
[]s
[]s
GOSTEI 0
Fernando_cunha
01/06/2006
Olá. esta dica do Marco Salles deu certo hehe.
obrigado pessoal
vlw
obrigado pessoal
vlw
GOSTEI 0