Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.05;
Скачать: CL | DM;

Вниз

как убить объект (самого себя)   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
3-12269
td
2004-02-06 21:57
2004.03.05
индексы


1-12352
Pa5ha
2004-02-21 21:04
2004.03.05
Справка


1-12407
EthernalWonderer
2004-02-21 10:35
2004.03.05
на что указывает указатель


11-12302
Stargazer
2003-06-19 00:26
2004.03.05
KOL2FPC - проблемы с тестом TestKol3.dpr


1-12389
4ern61sh
2004-02-22 22:24
2004.03.05
Снимок экрана