Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.015 c
4-57914
Romul
2002-02-14 16:36
2002.04.18
Как получить handle s элементов другой программы?


14-57845
Tpv
2002-03-06 23:12
2002.04.18
Зависание программы.


3-57641
Kuzmich
2002-03-28 15:17
2002.04.18
ADO и WebServices - вещи несовместимые?


1-57775
VS2001
2002-04-01 15:59
2002.04.18
Распаковка архива из памяти (TMemoryStream)


3-57597
Vertigo
2002-03-22 13:57
2002.04.18
Проблема с IBQuery: подвисает приложение