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

Вниз

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

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1144314324
Cneltyn
2006-04-06 13:05
2006.04.23
Как вывести в Имидж содержимое другого Ммиджа в опр-ые координаты


3-1141232888
-Саша-
2006-03-01 20:08
2006.04.23
Создание БД в FireBird


3-1141300602
RomanH
2006-03-02 14:56
2006.04.23
Конвертация DB->DBF


15-1144250794
Дурак
2006-04-05 19:26
2006.04.23
Вопросик сложный


2-1144383257
fr
2006-04-07 08:14
2006.04.23
Помогите, пожалуйста с запросом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский