Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-01-2007
Avatar de hvelascos
hvelascos hvelascos is offline
Miembro
 
Registrado: ene 2007
Posts: 18
Poder: 0
hvelascos Va por buen camino
Thumbs up Aplicación que se elimine asi misma

>Hola a todos

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

Última edición por hvelascos fecha: 22-01-2007 a las 22:01:24.
Responder Con Cita
  #2  
Antiguo 23-01-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 23-01-2007
Avatar de hvelascos
hvelascos hvelascos is offline
Miembro
 
Registrado: ene 2007
Posts: 18
Poder: 0
hvelascos Va por buen camino
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.

Mil disculpas, y gracias por la informacion que me proporcionaste

saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
evitar ejecutar la misma aplicacion 2 veces noe API de Windows 13 26-05-2008 19:30:03
de una misma tabla Citlalli Firebird e Interbase 9 19-09-2006 20:29:07
Como trabajar con tres BD diferentes en una misma aplicacion valera Conexión con bases de datos 1 26-10-2005 03:37:09
¿Como no permitir mas de 1 ejecucion de la misma aplicacion? Moises22 Varios 2 27-09-2005 13:47:19
ejecutar aplicacion 2 veces en misma maquina maruenda Varios 1 07-02-2004 19:19:24


La franja horaria es GMT +2. Ahora son las 06:44:30.


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