Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.01 c
2-1144303276
MiHoY
2006-04-06 10:01
2006.04.23
TServerSocket


3-1140965468
Winni
2006-02-26 17:51
2006.04.23
физическое удаление записей из БД Paradox ( файлы *.mb)


3-1138652112
Wistler
2006-01-30 23:15
2006.04.23
Libmysqld.dll и External exception C00000008


15-1143469715
Shweps
2006-03-27 18:28
2006.04.23
Документация


15-1143910426
ArtemESC
2006-04-01 20:53
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский