terça-feira, 15 de fevereiro de 2011

Executável que se auto-deleta


Veja nessa dica de nosso colunista Handem Vogel como implementar a auto-exclusão do programa em execução. Primeiramente, declare o procedimento
procedure TForm1.DeletaExe;
Var
  Arquivo: TextFile;
begin
  AssignFile(Arquivo, ChangeFileExt(ParamStr(0), '.bat'));
  try
    ReWrite(Arquivo);
    WriteLn(Arquivo, ':1');
    WriteLn(Arquivo, Format('Erase "%s"', [ParamStr(0)]));
    WriteLn(Arquivo, Format('If exist "%s" Goto 1', [ParamStr(0)]));
    WriteLn(Arquivo, Format('Erase "%s"', [ChangeFileExt(ParamStr(0), '.bat')]));
  finally
    CloseFile(Arquivo);
  end;
  WinExec(PChar(ChangeFileExt(ParamStr(0), '.bat')), sw_hide);
  Halt;
end;
Agora, no evento onClose do formulário, basta chamar a procedure acima, com o seguinte código:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DeletaExe;
end;
Isto fará com que o executável se "auto-exclua" assim que fechado!

Nenhum comentário:

Postar um comentário