Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
Внизкак убить объект (самого себя) Найти похожие ветки
← →
Lena19 (2004-02-22 21:35) [0]Всем привет
как убить объект из етого самого объекта
(самого себя )
← →
Islander (2004-02-22 21:40) [1]self.free
← →
Гаврила (2004-02-22 21:59) [2]Не согласен с [1]
а что будет со стеком ?
наиболее безболезненный вариант -отправить сообщение на главную форму, причем именно PostMesage, а там уже убить объект
например, передать указатель как параметр сообщения (например LParam)
← →
Islander (2004-02-22 22:18) [3]//
Согласен, но так как про главную форму ничего не сказано, то...
Я знаю, что лучше доверить уничтожение объекта какому-нибудь другому объекту.
Кстати, а что же будет со стеком?
← →
Гаврила (2004-02-22 22:28) [4]не знаю, что именн будет со стеком
но ты, находясь в методе объекта, убиваешь self
и как выйти? главное - откуда выйти? этого метода уже нет
потому что нет самого экземпляра класса
← →
Игорь Шевченко (2004-02-22 23:14) [5]
> и как выйти? главное - откуда выйти? этого метода уже нет
> потому что нет самого экземпляра класса
Методу не обзательно нужен экземпляр класса. Поэтому выйти, как обычно. Дурной тон - убивать самого из себя, но принципиально возможно.
← →
Dimaxx (2004-02-22 23:36) [6]Под 2000 и XP работает, а более я нигде не проверял (от автора сего творения).
unit selfkill;
interface
uses windows;
procedure killself;
implementation
procedure killself;
var
module : HMODULE;
buf : array[0..MAX_PATH] of CHAR;
plong : ULONG;
begin
module := GetModuleHandle(nil);
GetModuleFileName(module, buf, sizeof(buf));
CloseHandle(4);
plong := ULONG(module) + 1;
asm
lea eax, buf
push 0
push 0
push eax
mov esi, offset ExitProcess + 2
mov esi, [esi]
mov esi, [esi]
push esi
push [plong]
mov esi, offset DeleteFile + 2
mov esi, [esi]
mov esi, [esi]
push esi
mov esi, offset FreeLibrary + 2
mov esi, [esi]
mov esi, [esi]
push esi
ret
end;
end;
end.
← →
Dimaxx (2004-02-22 23:37) [7]Тьфу, неверно прочитал темку - код из разряда "как экзешнику убить самого себя". Сорри!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c