Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
1-1193417311
terc
2007-10-26 20:48
2008.02.03
получения род окна зная hwnd дочернего ??


15-1199119938
Kerk
2007-12-31 19:52
2008.02.03
Белорусский блогер добился от властей поставок кефира


15-1198361045
linkomizin
2007-12-23 01:04
2008.02.03
нужно к 24.12.07..


2-1200025259
Washington
2008-01-11 07:20
2008.02.03
ShellExecute не работает


5-1166076046
DimaBr
2006-12-14 09:00
2008.02.03
Создание компонентов !!!





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