Fórum Executar uma executavel só se o programa autorizar #279918
03/05/2005
0
Colegas como faço para bloquer uma executavel para ela não abrir tipo assim tenho meu programa ai eu dou um winexec... pra abrir o outro executavel mas eu quero que essa executavel só abra se o meu programa estiver aberto caso o usuario tente executar ela fora do sistema ela bloquei fala aplicação só pode ser aberta pelo sistema teste
caso o usuario abriu meu programa e foi no windows explorer e abriu fora e tenta executar o programa ele monstra a mesma mensagem... ele só devera abrir se o meu sistema autorizar....caso o usuario execute o aplicativo dentro do meu programa 2 vezes ele tem que falar esse sistema... ja esta em execução o programa x ja esta aberto.
bom parece complica mas não é facil se alguem poder me ajudar eu agradeço....
Babu
Curtir tópico
+ 0Posts
03/05/2005
Antseralves
chamar sua aplicação passe um parâmetro qualquer que será
testado na mesma. Se o parâmetro for incorreto ou não existir
então dá uma mensagem de erro e cai fora. Exemplo:
No evento [b:42823b47e1]OnCreate[/b:42823b47e1] do formulário principal da aplicação que vai
ser executada:
procedure TForm1.FormCreate(Sender: TObject);
begin
if (ParamCount = 0) or (ParamStr(1) <> ´IDPROG´) then
begin
ShowMessage(´QUALQUER MENSAGEM EXPLICATIVA...´);
Application.Terminate;
end;
end;
No programa que vai chamar a aplicação:
WinExec(´C:\Aplicacao.exe IDPROG´,0);
Boa Sorte !
AntSer
=====
Gostei + 0
03/05/2005
Martins
Inclua na seção uses: Windows
Problema:
Gostaria que um determinado programa (Prog1.EXE) fosse executado apenas através de outro programa (Prog2.EXE).
Solução:
Antes da linha ´Application.Initialize;´ de Prog1.dpr (programa a ser chamado), coloque o código abaixo:
if ParamStr(1) <> ´MinhaSenha´ then begin
{ Para usar ShowMessage, coloque Dialogs no uses }
ShowMessage(´Execute este programa através de Prog2.EXE´);
Halt; { Finaliza }
end;
{ No Form1 de Prog2 (programa chamador) coloque um botão e escreva o OnClick deste botão como abaixo:}
procedure TForm1.Button1Click(Sender: TObject);
var
Erro: Word;
begin
Erro := WinExec(´Pro2.exe MinhaSenha´, SW_SHOW);
if Erro <= 31 then { Se ocorreu erro... }
ShowMessage(´Erro ao executar o programa.´);
end;
Observações
Aqui o parâmetro passado foi ´MinhaSenha´. Você deverá trocar ´MinhaSenha´ por algo que apenas você saiba (uma senha). Caso uma pessoa conheça esta senha, será possível chamar este programa passando-a como parâmetro. Neste caso sua ´trava´ estará violada.
Martins
Gostei + 0
04/05/2005
Marcelo Saviski
no .dpr do programa a ser chamado
program ProjetoX; (...) const MutexName = ´Nome que vai ser compartilhado pelas duas aplicações´; var Mutex : THandle; begin Mutex := CreateMutex(nil, True, PChar(MutexName)); if (Mutex = 0) and (GetLastError = ERROR_ALREADY_EXISTS) then //a aplicação chamadora está aberta else // a aplicação chamadora não está aberta (...) end;
e para chamar o programa e garantir que ele só vai ser executado a partir daqui (esse código pode ficar na função que chama o outro programa)
const MutexName = ´Nome que vai ser compartilhado pelas duas aplicações´; //O nome precisa ser igual ao registrado no outro programa var Mutex : THandle; begin Mutex := CreateMutex(nil, True, PChar(MutexName)); //Aqui chama a outra aplicação CloseHandle(Mutex); end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)