¿Cómo elimino automáticamente mi programa Delphi? Probé este código:Programa de autodetección de Delphi
procedure DeleteSelf;
var
module : HMODULE;
buf : array [ 0 .. MAX_PATH - 1 ] of char;
p : ULONG;
hKrnl32 : HMODULE;
pExitProcess, pDeleteFile, pFreeLibrary : pointer;
begin
module := GetModuleHandle (nil);
GetModuleFileName (module, buf, sizeof (buf));
CloseHandle (THandle (4));
p := ULONG (module) + 1;
hKrnl32 := GetModuleHandle ('kernel32');
pExitProcess := GetProcAddress (hKrnl32, 'ExitProcess');
pDeleteFile := GetProcAddress (hKrnl32, 'DeleteFileA');
pFreeLibrary := GetProcAddress (hKrnl32, 'FreeLibrary');
asm
lea eax, buf
push 0
push 0
push eax
push pExitProcess
push p
push pDeleteFile
push pFreeLibrary
ret
end;
end;
Pero no funciona, no elimine el archivo. Mi programa es consola. Gracias!
¿Qué está tratando de hacer realmente? ¿Qué pasa con solo salir? Esto parece un viaje de regreso a Win16. – bmargulies
La única forma en que veo esto posible es llamando a otro programa (o archivo por lotes) que hace esto cuando la aplicación sale. Es literalmente imposible que una aplicación se elimine a sí misma sin depender de otra ayuda externa para hacerlo. –
Entonces, la única solución es crear un archivo. ¿Murciélago? –