PDA

Ver la Versión Completa : Aplicación que se elimine asi misma


hvelascos
22-01-2007, 21:49:40
>Hola a todos:D

Estoy haciendo una aplicación en delphi que borra archivos del disco duro, esta función trabaja correctamente con excepción de que deja una capeta y un ejecutable (el exe que borra los archivos), por lo tanto, ¿Existe la posibilidad de que un ejecutable se destruya asi mismo?,

Mas especificamente, que cuando este haya terminado de ejecutarse (el .exe) se eliminé del disco duro automaticamente, si alguien tiene la solucion, se lo agradeceré mucho.

gracias,

saludos a todos

seoane
23-01-2007, 00:00:48
Este tema ya se trato en el foro otras veces. Pero de todas formas:

Usando un bat:

uses ShellApi;

procedure Borrate;
var
Path: String;
Buffer: array[0..MAX_PATH] of Char;
begin
if GetShortPathName(PChar(ParamStr(0)),@Buffer, Sizeof(Buffer) -1) = 0 then
Exit;
Path:= String(PChar(@Buffer));
with TStringList.Create do
try
Add(':BUCLE');
Add('Del ' + Path);
Add('if %ERRORLEVEL% NEQ 0 goto BUCLE');
SaveToFile(ChangeFileExt(ParamStr(0),'.bat'));
ShellExecute(0,nil,PChar(ChangeFileExt(ParamStr(0),'.bat')),nil,nil,SW_SHOW);
finally
Free;
end;
end;

// Por ejmeplo, lo usamos en el evento OnClose
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Borrate;
end;


Usando MoveFileEx, retrasando el borrado hasta que el equipo se reinicie:

procedure Borrate;
var
Buffer: array[0..MAX_PATH] of Char;
begin
if GetShortPathName(PChar(ParamStr(0)),@Buffer, Sizeof(Buffer) -1) <> 0 then
MoveFileEx(Buffer, nil, MOVEFILE_DELAY_UNTIL_REBOOT or
MOVEFILE_REPLACE_EXISTING);
end;


Y si no te gusta ninguna de las 2, en esta pagina explican todas las formas imaginables para hacerlo.

http://www.catch22.net/tuts/selfdel.asp

hvelascos
23-01-2007, 01:33:22
muchas gracias seoane, y por lo de

Este tema ya se trato en el foro otras veces.

disculpa si hago preguntas que ya fueron tratadas pero soy nuevo en esto del foro, y como que todavia no se realizar busquedas muy eficientes que digamos, aveces creo que nadie ha preguntado sobre el tema, a causa de eso creo los nuevos hilos. :p

Mil disculpas, y gracias por la informacion que me proporcionaste:D

saludos