Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];

Вниз

ФАЙЛЫ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
6-57835
serge_sss
2002-01-27 11:02
2002.04.18
Сетевой трафик


4-57926
Ura!
2001-12-21 17:48
2002.04.18
ReadEventLog


14-57842
VuDZ
2002-03-10 13:06
2002.04.18
SQL Request - помогите, а то всё забыл


14-57878
VictorT
2002-03-12 11:48
2002.04.18
О понятии “информация”


1-57789
commm
2002-04-05 17:40
2002.04.18
как узнать имя (логин) текущего пользователя windows?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский