Главная страница
    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.012 c
2-1144658548
pavlin_pah
2006-04-10 12:42
2006.04.23
Вставки на ассемблере


1-1142839820
tigra
2006-03-20 10:30
2006.04.23
Работа с принтером


15-1144046356
ORMADA
2006-04-03 10:39
2006.04.23
Delphi7+sp1


1-1142156181
TStas
2006-03-12 12:36
2006.04.23
КАк программно распаковать папку?


2-1144405733
zorik
2006-04-07 14:28
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский