Текущий архив: 2002.04.18;
Скачать: CL | DM;
Вниз
ФАЙЛЫ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Найти похожие ветки
← →
Stexen (2002-04-05 22:33) [0]Есть ли способ и какой удалить запущенный екзешник...???
← →
lipskiy (2002-04-05 22:42) [1]нету.
← →
Stexen (2002-04-05 22:53) [2]Да блин ну че не уж то никакого .... блин он же все равно полностья в память должен копироваться или как.. а че ему до реального расположения на диске
← →
Anatoly Podgoretsky (2002-04-05 22:56) [3]Это в досе так было, а теперь проецируется в память
← →
VID (2002-04-06 01:09) [4]ну нельзя, нелья ! :)))
← →
Pat (2002-04-06 10:35) [5]Можно, но криво:
var f:textfile;
begin
setcurrentdir(extractfilepath(paramstr(0)));
MyName:=extractfilename(paramstr(0));
chartooem(pchar(MyName),pchar(MyName));
assignfile(f,"kill.bat");
rewrite(f);
writeln(f,"del "+MyName);
writeln(f,"del kill.bat");
closefile(f);
application.Terminate;
winexec("kill.bat",sw_hide);
end;
← →
Anatoly Podgoretsky (2002-04-06 10:39) [6]Это удаляет НЕзапущенный
← →
Pat (2002-04-06 10:52) [7]>Anatoly Podgoretsky © (06.04.02 10:39)
Естественно...но вдруг именно это и требовалось...
← →
Malder (2002-04-06 11:55) [8]Pat, а ты уверен, что способ прокатит ? Я не пробовал, но имхо после Application.Terminate ничего выполняться не будет. То есть строчка winexec("kill.bat",sw_hide); не выполниться...
А если все таки выполниться - то останется bat"ник...
← →
lipskiy (2002-04-06 13:40) [9]Как я понял - убить надо не себя, а чужое запущенное приложение.
А если себя - то через батник я делал - работает нормально, а батник сам себя убивает без проблем. Я это использовал для деинсталляции своей проги - не надо отдельный деинсталлятор писать, просто пунктик в менюшке "Деинсталляция" и маленькая процедурка - и все сносит подчистую прямо из запущенного приложения, просто и удобно.
← →
Pat (2002-04-06 16:26) [10]>Malder © (06.04.02 11:55)
По крайней мере у меня это работает и никаких батников не остается. Только в списке задач появляется Winoldap - единственный недостаток
← →
Anatoly Podgoretsky (2002-04-06 16:42) [11]Pat © (06.04.02 10:52)
Я бы не рискнул так говорить, написанно именно зарущенный и еще неизвестно чей.
← →
Alex_LG (2002-04-06 17:10) [12]1) найти процесс (эту самую проекцию в памяти, как я понимаю?Anatoly Podgoretsky © (05.04.02 22:56))
2) убить процесс
3) стереть уже НЕзапущенный ехе-шник :)
← →
Billy (2002-04-06 22:52) [13]Все получается очень просто и без шума и пыли (ну разве что окошко досовское останется):
procedure TForm1.Suicide;
var f:textfile;
begin
assignfile(f,"suicide.bat");
rewrite(f);
writeln(f,"@echo off");
writeln(f,":kill_exe");
writeln(f,"del ""+Application.ExeName+""");
writeln(f,"if exists ""+Application.ExeName+"" goto kill_exe");
writeln(f,":kill_bat");
writeln(f,"del suicide.bat");
writeln(f,"if exists suicide.bat goto kill_bat");
CloseFile(f);
ShellExecute(0,nil,"suicide.bat",nil,nil,0);
end;
Сработает, если вызывать при закрытии формы.
← →
Stexen (2002-04-06 23:29) [14]Да убедительные довады... я тут способ еще один нашел просто впринципе не важно когда файл будет удален главное чтоб был удален соответственно можно уделение на автозапуск повесить тут в факе нашел.... прикольный способ ваще то...
← →
SeF (2002-04-07 02:48) [15]а dll написать которую при помощи rundll32 запустить и выйти, а библиотека котрет все что надо и на удаление в wininst пропишется.
как такой вариант?
← →
Builder (2002-04-07 09:45) [16]Stexen
В факе есть способ прикончить себя, но он не всегде :) работает (почему - то) под XP, а так - работает (даже под НТ).
Что бы не искал:
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.
P.S. Сорри автору этого - копирайтов у меня не осталось.
Страницы: 1 вся ветка
Текущий архив: 2002.04.18;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.005 c