Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизКак из DLL выгрузить самого себя? Найти похожие ветки
← →
Volf_555 © (2006-04-09 00:04) [0]То есть:
- есть некая DLL
- в неё добавлена форма с кнопкой
- после нажатия на кнопку происходит определённое событие
- после этого DLL должна прекрать своё выполнение
Пробывал прописывать Form1.Close - нуль
Form1.Free - нуль
Application.Terminate - нуль
Так как можно завершить работу DLL по нажатии на кнопке?
← →
Verg © (2006-04-09 00:13) [1]DLL - не выполняется! Это библиотека - набор знаний и методов. Какое, нахрен "выполнение"? Как кормушка для птиц может перестать кушать?
← →
Volf_555 © (2006-04-09 00:24) [2]Ну, ссори - так выразился :)
Суть вопроса я думаю понятна какая. Нужно выгрузить DLL после нажатия на кнопке.
Как это сделать?
← →
EvS © (2006-04-09 00:32) [3]хотя бы сюда для начала загляни
http://www.delphimaster.ru/articles/dll_use/index.html
← →
Юрий Зотов © (2006-04-09 01:02) [4]> Volf_555 © (09.04.06 00:24) [2]
При нажатии на кнопку DLL вызывает PostMessage и шлет сообщение основной программе, а та, получив сообщение, выгружает DLL.
← →
TUser © (2006-04-09 10:15) [5]А потом Вася Пупкин пошет другую программу, которая dll цепляет, а сообщение не ловит. Нельзя дать гарантий.
← →
GrayFace © (2006-04-09 10:31) [6]Ну и пусть не ловит. Невыгруженная библиотека мешать не будет (не должна). Вообще, еще подумай, надо ли вообще ее выгружать.
← →
Volf_555 © (2006-04-09 15:19) [7]
> EvS © (09.04.06 00:32) [3]
> хотя бы сюда для начала загляни
> http://www.delphimaster.ru/articles/dll_use/index.html
Эти основы я знаю
> Юрий Зотов © (09.04.06 01:02) [4]
> > Volf_555 © (09.04.06 00:24) [2]
>
> При нажатии на кнопку DLL вызывает PostMessage и шлет сообщение
> основной программе, а та, получив сообщение, выгружает DLL.
>
Идея интересна, но только в основной программе нужно написать обработчик определённого сообщения. А из dll послать это сообщение. Как сделать так?
> TUser © (09.04.06 10:15) [5]
> А потом Вася Пупкин пошет другую программу, которая dll
> цепляет, а сообщение не ловит. Нельзя дать гарантий.
Согласен... Но пост №4 как бы один из вариантов
> GrayFace © (09.04.06 10:31) [6]
> Ну и пусть не ловит. Невыгруженная библиотека мешать не
> будет (не должна). Вообще, еще подумай, надо ли вообще ее
> выгружать.
Может быть она мешать и не будет, но часть памяти она занимать будет. Так что лучше всего её загружать и выгружать
← →
DrPass © (2006-04-09 16:31) [8]
> Может быть она мешать и не будет, но часть памяти она занимать
> будет.
Правильно написанная библиотека занимать лишнюю память не будет, а будет отображаться в адресное пространство непосредственно из своего файла на диске, и лишь при обращении попадать в ОЗУ.
← →
Leonid Troyanovsky © (2006-04-09 19:33) [9]
> Volf_555 © (09.04.06 15:19) [7]
> обработчик определённого сообщения. А из dll послать это
> сообщение. Как сделать так?
Сделать обработчик (message WM_USER+..).
Послать - PostMessage.
--
Regards, LVT.
← →
GrayFace © (2006-04-10 14:02) [10]
> Volf_555 © (09.04.06 15:19) [7]
> > Юрий Зотов © (09.04.06 01:02) [4]
> > > Volf_555 © (09.04.06 00:24) [2]
> >
> > При нажатии на кнопку DLL вызывает PostMessage и шлет
> сообщение
> > основной программе, а та, получив сообщение, выгружает
> DLL.
> >
>
> Идея интересна, но только в основной программе нужно написать
> обработчик определённого сообщения. А из dll послать это
> сообщение. Как сделать так?
Определенное сообщение - RegisterWindowMessage или WM_USER+*. А можно завести переменную/функцию, которая будет говорить, надо ли выгрузить, и слать что угодно, хоть WM_NULL.
> Volf_555 © (09.04.06 15:19) [7]
> > GrayFace © (09.04.06 10:31) [6]
> > Ну и пусть не ловит. Невыгруженная библиотека мешать не
>
> > будет (не должна). Вообще, еще подумай, надо ли вообще
> ее
> > выгружать.
>
> Может быть она мешать и не будет, но часть памяти она занимать
> будет. Так что лучше всего её загружать и выгружать
Зависит от частоты загрузки. Загрузка занимает время - если оно важно, то лучше оставить в памяти.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.161 c