Главная страница
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.013 c
3-12276
Unknown
2004-02-08 12:18
2004.03.05
База данных без BDE?


3-12243
Splinter
2004-02-09 15:50
2004.03.05
Объединение полей в Базе Данных


8-12454
vvvaaa
2003-10-22 22:14
2004.03.05
Как проиграть *.mp3 файл с диска


3-12230
VStinger
2004-02-09 14:14
2004.03.05
Клиент ORACLE


1-12446
dub daze
2004-02-22 23:50
2004.03.05
работа с файлами ресурсов