Home
Top.Mail.Ru Yandeks.Metrika
Forum: "Main";
Current archive: 2002.01.08;
Download: [xml.tar.bz2];

Down

KillSelf Find similar branches


T2   (2001-12-14 03:22) [0]

Как заставить программу совершить самоубийство? Тока не при перезагрузке, а в риал-тайме!



KilkennyCat   (2001-12-14 04:12) [1]

Самоубийство - имеется ввиду удаление с винта?
Она просто должна жить в памяти, откуда спокойно себя стирает с винта, а потом говорит сама себе: close.



T2   (2001-12-14 04:32) [2]

Да, удаление с винта. Но удалять сама себя не хочет-грит файл заблокирован (очевидно она не вся в память залазит, а подгружается и держит ехе открытым) :(



KilkennyCat   (2001-12-14 04:37) [3]

Ну разумеется! Если не срочно, то я потом напишу как (сейчас занят), пока я только помню обрывки досовских вариантов из "битва в памяти".



T2   (2001-12-14 05:32) [4]

Ok, будет время, кинь на gu-gu-gu2@mtu-net.ru иль здесь напиши.



Milz   (2001-12-14 09:31) [5]

Не помню откуда откопал, завершает программу и удаляет её с винта.
Подскажите как это работает, конкретно меня интересуют как происходят вызовы апи, софтайс показал что тут не просто переход по адресу функции, а какие-то извращения в kernel32, а потом вызывается сама апи и так с каждой. что это и как передаются параметры?

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 exit code
push 0
push eax
push pExitProcess
push hModule
push pDeleteFile
push pFreeLibrary
ret
end
else
begin
CloseHandle (THANDLE (4));
asm
lea eax, szModuleName
push exit code
push 0
push eax
push pExitProcess
push hModule
push pDeleteFile
push pUnmapViewOfFile
ret
end
end
end;



Andrey   (2001-12-14 10:34) [6]

Господа, Зачем столько хитростей,:) обратитесь в FAQ-у http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988621694&n=15



paul_shmakov   (2001-12-15 01:14) [7]

2 Andrey:
FAQ не прав. а вот Milz дал правильное решение. здесь в форуме WinApi мы это решение подробно рассматривали.



А вот   (2001-12-15 01:41) [8]

насчет "правильности" - надобно посоветоваться с Digitman. Он по-моему этим заинтересовался и копал глубже. Если имхо он захочет поделиться. В чем лично я сомневаюсь, поскольку тема "скользкая".



paul_shmakov   (2001-12-16 02:13) [9]

2 А вот:
:) ну а если Digitman не захочет поделиться, то я поделюсь.

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1004956210&n=5

см. ссылку, ну очень подробно для winnt/2k



Pages: 1 whole branch

Forum: "Main";
Current archive: 2002.01.08;
Download: [xml.tar.bz2];

Top















Memory: 0.84 MB
Time: 0.037 c
3-21954
strahov
2001-12-05 15:32
2002.01.08
Has anyone met a bug


1-22028
tovSuhov
2001-12-18 12:16
2002.01.08
Maybe someone knows ...


1-22150
Dimich
2001-12-20 13:22
2002.01.08
How to scroll in Panel


3-21963
szap
2001-12-05 11:53
2002.01.08
Speed


1-22172
ASTARD
2001-12-19 22:12
2002.01.08
People help pliz ???





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 Español 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
English French German Italian Portuguese Russian Spanish