Главная страница
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.021 c
4-1182855752
=BuckLr=
2007-06-26 15:02
2008.02.03
Забрать richtext из ricnedit


2-1199804925
AntonUSAnoV
2008-01-08 18:08
2008.02.03
ПОмогите составить SQL запрос


2-1199430043
Andreil
2008-01-04 10:00
2008.02.03
Вызов ДЛЛ из ЕХЕ


2-1199346612
Farel
2008-01-03 10:50
2008.02.03
Проблема в excel


15-1199107075
Иксик
2007-12-31 16:17
2008.02.03
Посоветуйте русскую песню, чтобы немцам поставить :)