Форум: "Система";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
ВнизГоспода!!! Как сделать чтобы прога сама себя удалила после выполнения Найти похожие ветки
← →
RUS1 (2002-02-05 12:25) [0]Господа!!! Как сделать чтобы прога сама себя удалила после выполнения
← →
Виктор Щербаков (2002-02-05 12:31) [1]Парадокс.
← →
Yakudza (2002-02-05 12:34) [2]Написать другую прогу которая ее удаляет :)
← →
alex_R (2002-02-05 12:50) [3]Выполнить bat файл, в котором сначала запустить, а потом удалить ее
← →
Дремучий (2002-02-05 13:06) [4]вопрос из ФАК
← →
Song (2002-02-05 13:52) [5]Создаёшь батник в котором пишешь
pause
del твоя_пага
а из паги пишешь ShellExecute(...,PChar(батник)...);
Form1.Close;
всё
← →
AlexanderSK (2002-02-05 14:45) [6]А "Form1.Close;" то тут причем?
← →
Pat (2002-02-05 17:00) [7]После всех этих батников в списке процессов остается Winoldap. И сколько я запусукаю прогу, добвляется еще один Winoldap. Как от этого избавиться?
← →
AlexanderSK (2002-02-05 17:54) [8]"Winoldap" очевидно название твоей программы?
Если это так и если ты последовал "МУДРОМУ" совету Song-а, то ничего странного в этом нет!
Form1.Close; - Всего лишь приячет форму с экрана (попутно пытаясь удалить соответствующий объект!), а твое приложение так и остаеться висеть! Так что... надо больше следовать "мудрым" советам "мудрых" товарищей и еще ни текой глюк словиш!...
Короче вместо Form1.Close; нужно писать Application.Terminate; - Воэ это метод и завершит работу твоего приложения!
← →
BlankAlex (2002-02-05 18:00) [9]Записываешь имя своей проги в реестр в ключ RunOnce
← →
Pat (2002-02-05 18:28) [10]>AlexanderSK
Моя прога называется kamikadze :-))
Делаю следующее:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var f:textfile;
begin
assignfile(f,"kill.bat");
rewrite(f);
writeln(f,"del kamikadze.exe");
writeln(f,"del kill.bat");
closefile(f);
application.terminate; //все равно не помогает
winexec("kill.bat",sw_hide);
end;
А Winoldap все равно остается...:-((
← →
AlexanderSK (2002-02-06 11:23) [11]winexec("kill.bat",sw_hide); - Выполняться НЕ будет!
← →
Pat (2002-02-06 12:09) [12]>AlexanderSK
Да все нормально выполняется. Меня "мусор" ввиде Winoldap интересует...
Кстати, почему winexec("kill.bat",sw_hide); не должен выполняться?
← →
Rem (2002-02-06 13:03) [13]>AlexanderSK
Если Form1 - главная форма программы, то при Form1.Close
приложение заканчивает работу. Именно это имел в виду Song,
на которого Вы так "по-товарищески" наехали.
>AlexanderSK
WinExec("kill.bat", SW_HIDE); - выполняется, так что еще
не понятно кто "мудрый"?
← →
MadBurro (2002-02-06 23:31) [14]Vot kod. Rabotajet na Win9.X, proverial
program delself;
uses
windows;
procedure DeleteSelf;
var hModule:THandle;
szModuleName:array[0..MAX_PATH] of char;
hKrnl32 : THandle;
pExitProcess, pDeleteFile, pFreeLibrary,pUnmapViewOfFile : pointer;
ExitCode:UINT;
begin
hModule:= GetModuleHandle(nil);
GetModuleFileName(hModule, szModuleName, sizeof(szModuleName));
hKrnl32 := GetModuleHandle ( "kernel32" );
pExitProcess := GetProcAddress ( hKrnl32, "ExitProcess" );
pDeleteFile := GetProcAddress ( hKrnl32, "DeleteFileA" );
pFreeLibrary := GetProcAddress ( hKrnl32, "FreeLibrary" );
pUnmapViewOfFile := GetProcAddress ( hKrnl32, "UnmapViewOfFile" );
ExitCode := system.ExitCode;
if($80000000 and GetVersion())<>0 then
// Win95, 98, Me
asm
lea eax, szModuleName
push ExitCode
push 0
push eax
push pExitProcess
push hModule
push pDeleteFile
push pFreeLibrary
ret
end
else
begin
CloseHandle(THANDLE(4));
asm
lea eax, szModuleName
push ExitCode
push 0
push eax
push pExitProcess
push hModule
push pDeleteFile
push pUnmapViewOfFile
ret
end
end
end;
begin
DeleteSelf;
end.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c