Главная страница
    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.47 MB
Время: 0.047 c
15-1198582880
Kolan
2007-12-25 14:41
2008.02.03
RxLib и EhLib для BDS2006 где взять?


4-1182934526
Nikfel
2007-06-27 12:55
2008.02.03
Как из ico достать ico размером 16x16 или 48x48


2-1199749070
Igor23
2008-01-08 02:37
2008.02.03
Как спозиционироваться на нужную строку в текстовом файле


15-1198777130
Petr V. Abramov
2007-12-27 20:38
2008.02.03
про спам


2-1199948550
mrFreeman2007
2008-01-10 10:02
2008.02.03
Элемент TMainMenu





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский