Главная страница
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.015 c
3-12234
Sergey Merkuriev
2004-02-09 17:53
2004.03.05
MS SQL 2000 книги или доки по русски


1-12323
Batoon
2004-02-22 20:22
2004.03.05
ListBox


1-12404
Rentgen
2004-02-24 17:31
2004.03.05
ASM


14-12498
Rogdar
2004-02-13 11:44
2004.03.05
И здесь достанем.(из БК с вопросом к Мерлину)


3-12252
}|{yk
2004-02-09 13:22
2004.03.05
Отображение данных глючит