Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

Вниз

KillSelf Знайти схожі гілки


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, а потім викликається сама апі і так з кожної. що це і як передаються параметри?

використовує
windows;

procedure DeleteSelf;
var hModule: THandle;
szModuleName: array [0..MAX_PATH] of char;
hKrnl32: THandle;
pExitProcess, pDeleteFile, pFreeLibrary, pUnmapViewOfFile: pointer;
ExitCode: UINT;
починати
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
асм
lea eax, szModuleName
push ExitCode
push 0
push eax
push pExitProcess
push hModule
push pDeleteFile
push pFreeLibrary
ret
кінець
ще
починати
CloseHandle (THANDLE (4));
асм
lea eax, szModuleName
push ExitCode
push 0
push eax
push pExitProcess
push hModule
push pDeleteFile
push pUnmapViewOfFile
ret
кінець
кінець
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



сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.58 MB
Час: 0.027 c
1-22222
Eugene Zelikovsky
2001-12-14 13:58
2002.01.08
CallBack


6-22313
SB
2001-10-01 15:05
2002.01.08
Допоможіть мережевого недоучки! пожайлуста


6-22303
максі
2001-10-11 18:03
2002.01.08
клієнт DCOM не бачить сервер DCOM на різних машинах.


1-22002
BFG
2001-12-16 16:24
2002.01.08
Графіки


1-22249
Eugene Zelikovsky
2001-12-17 13:53
2002.01.08
Як почекати якийсь час не використовуючи TTimer





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в&#39;єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська