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

Вниз

Работа с DLL   Найти похожие ветки 

 
Washington ©   (2008-01-11 10:51) [0]

У меня есть несколько библиотек. И я динамически их загружаю, когда мне нужно. Как проверить, загружена ли библиотека, чтобы не запустить её второй раз?


 
Григорьев Антон ©   (2008-01-11 10:56) [1]

Система сама проверит и не станет загружать второй раз, LoadLibrary вернёт дескриптор уже загруженного модуля.


 
Washington ©   (2008-01-11 11:01) [2]

У меня форма в модуле находится. И в результате при загрузке раннее загруженного модуля у меня грузится вторая форма.


 
clickmaker ©   (2008-01-11 11:02) [3]

h := GetModuleHandle("some.dll");
if (h = 0) then
 h := LoadLibrary("some.dll");


 
Игорь Шевченко ©   (2008-01-11 11:25) [4]

Washington ©   (11.01.08 11:01) [2]

Зачем тебе две формы ?


 
Плохиш ©   (2008-01-11 11:31) [5]


> У меня есть несколько библиотек.


> У меня форма в модуле находится.

Мне интересно, использовать dll не по назначению - это мода сейчас такая или задания по лабораторным?


 
Сергей М. ©   (2008-01-11 11:43) [6]


> Washington ©   (11.01.08 11:01) [2]


т.е.

Library MyLib;
..
begin
.. форма создается здесь ? ..
end;

Умней ничего не придумал ?)


 
Washington ©   (2008-01-11 11:55) [7]


> Игорь Шевченко ©   (11.01.08 11:25) [4]

Вот и я об этом. Зачем мне две одинаковые формы?


> Плохиш ©   (11.01.08 11:31) [5]

Не знаю. Прочитал в книге (не Фленов), сделал

> Сергей М. ©   (11.01.08 11:43) [6]

Нет, не здесь :)

И вообще я уже разобрался


 
Сергей М. ©   (2008-01-11 12:01) [8]


> Нет, не здесь


Как же "не здесь", когда, судя по твоей же фразе, "при загрузке .. грузится .. форма" ?

Код между begin и end как раз и выполняется именно при загрузке)


 
Григорьев Антон ©   (2008-01-11 12:05) [9]


> Сергей М. ©   (11.01.08 12:01) [8]
> Код между begin и end как раз и выполняется именно при загрузке)

Цитата из описания LoadLibrary в MSDN:
If the module is a DLL not already mapped for the calling process, the system calls the DLL"s DllMain function with the DLL_PROCESS_ATTACH value.

Т.е. как раз если бы форма создавалась здесь, то она создавалась бы один раз - второй раз DllMain не вызывалась бы.


 
Сергей М. ©   (2008-01-11 12:09) [10]


> Григорьев Антон ©   (11.01.08 12:05) [9]


Да это-то понятно)
Но это по сути и загрузкой-то назвать нельзя - всего лишь инкремент счетчика.


 
clickmaker ©   (2008-01-11 13:10) [11]

вообще, странная задача
если DLL грузится, значит хендл где-то сохраняется?
почему его не проверять на 0?
а при выгрузке обнулять


 
Сергей М. ©   (2008-01-11 13:14) [12]


> clickmaker ©   (11.01.08 13:10) [11]


Не царское это дело - хранить и контролировать хэндлы)



Страницы: 1 вся ветка

Текущий архив: 2008.02.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
2-1198596187
@!!ex
2007-12-25 18:23
2008.02.03
Есть ли способ приклеить кнопку к чужему окну?


15-1198529781
Evanescence
2007-12-24 23:56
2008.02.03
Ищу название и исполнитель песни


2-1199453773
Stepper
2008-01-04 16:36
2008.02.03
Где в реестре (ветка) прописать параметр (триального периода) ?


2-1199966820
Dana
2008-01-10 15:07
2008.02.03
Tab в DBGrid


3-1190862009
Arkadiy
2007-09-27 07:00
2008.02.03
строковое поле