Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Aplicación que se elimine asi misma (https://www.clubdelphi.com/foros/showthread.php?t=39514)

hvelascos 22-01-2007 21:49:40

Aplicación que se elimine asi misma
 
>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:
Código Delphi [-]
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:
Código Delphi [-]
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
Cita:

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


La franja horaria es GMT +2. Ahora son las 22:58:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi