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

Вниз

Dll   Найти похожие ветки 

 
Zloy_dima   (2004-10-27 16:12) [0]

Добрый день. Как можно при обращении к DLL, получить путь в самой DLL, где она лежит? Спасибо.


 
Reindeer Moss Eater ©   (2004-10-27 16:21) [1]

function AppFileName: string;
var FileName: array[0..255] of Char;
begin
 if IsLibrary then begin
   GetModuleFileName(HInstance, FileName, SizeOf(FileName) - 1);
   Result := StrPas(FileName);
 end
 else Result := ParamStr(0);
end;


 
Digitman ©   (2004-10-27 16:21) [2]

что значит "при обращении" ?


 
Zloy_dima   (2004-10-27 16:22) [3]

Reindeer: Здесь выдаст путь к модулю который вызывает Dll, а мне нужно путь откуда Dll вызывается...


 
Reindeer Moss Eater ©   (2004-10-27 16:24) [4]

Что за бред


 
Zloy_dima   (2004-10-27 16:26) [5]

Reindeer Moss Eater: путь где находится Dll, которую вызывают...


 
Reindeer Moss Eater ©   (2004-10-27 16:27) [6]

Нарисуй в dll экспортируемую функцию которая скажет всем где лежит загружаемая DLL


 
Digitman ©   (2004-10-27 16:29) [7]

что значит "вызывают" ?

чт за детсад ?

есть понятия "вызывающая подпрограмма" и "вызываемая подпрограмма"

первая выполняет LoadLibrary, получает точку входа (GetProcAddress) в подпрограмму и передает ей управление

вторая - исполняет код, которому передано управление из 1-й


 
Digitman ©   (2004-10-27 16:32) [8]

Дима, золотце ...

Ну нет такого понятия "вызвать DLL" !

Есть понятия "загрузить DLL в адресное пространство текущего процесса" и "вызвать на выполнение одну из экспортируемых функций загруженной DLL" ..


 
Zloy_dima   (2004-10-27 16:32) [9]

Digitman : Я умные высказывания не просил...


 
begin...end ©   (2004-10-27 16:32) [10]


> Zloy_dima   (27.10.04 16:12)


> Как можно при обращении к DLL, получить путь в самой DLL,
> где она лежит?

Как же ты к ней "обращаешься", если не знаешь, где она лежит?


 
Reindeer Moss Eater ©   (2004-10-27 16:33) [11]

Как же ты к ней "обращаешься", если не знаешь, где она лежит?

Это забота винды.


 
Digitman ©   (2004-10-27 16:34) [12]


> Zloy_dima


Дима, ты злой.

дурью-то не майся и прислушивайся к контрвопросом, если жаждешь помощи.


 
Zloy_dima   (2004-10-27 16:35) [13]

Reindeer Moss Eater: Обращаюсь не я...


 
Reindeer Moss Eater ©   (2004-10-27 16:36) [14]

Обращаюсь не я...

Я знаю, что не ты, а программа.
И что?


 
begin...end ©   (2004-10-27 16:38) [15]


> [11] Reindeer Moss Eater ©   (27.10.04 16:33)

То есть? Перед тем, как использовать подпрограммы из DLL, последнюю нужно загрузить с помощью LoadLibrary. И в качестве параметра Loadlibrary передаётся имя файла этой самой DLL. Так что знать, где она лежит, нужно. Хотя бы для того, чтобы вначале её загрузить. При чём тут "забота винды"?


 
Reindeer Moss Eater ©   (2004-10-27 16:39) [16]

При чём тут "забота винды"?

При том.


 
Reindeer Moss Eater ©   (2004-10-27 16:43) [17]

begin...end ©  

1.Loadlibrary вовсе не обязательна.
2.Читай документацию по LoadLibrary.

Знать, "где лежит" - не обязательно.


 
Digitman ©   (2004-10-27 16:43) [18]


> получить путь в самой DLL


Дима - батонокидатель... это понятно ...

При своем гоноре он не в состоянии даже на пальцах объяснить, что в какой-то момент времени некий код ДЛЛ, разработанный им, получает управление, и в этот момент ему якобы необходимо получить инф-цию о пути к файлу, из которого в тек.процесс загружен образ его ДЛЛ.


 
Reindeer Moss Eater ©   (2004-10-27 16:46) [19]

У меня подозрение, что он хочет знать полный путь к длл в хост приложении, но грузит dll не указывая полного пути.

Либо просто приколист очередной.


 
Digitman ©   (2004-10-27 16:48) [20]

а терминология - это для "шибко умных" Циферманов. ... и иже с ними олухами.
Злым Димам не пристало общаться с ними на языке Win32-программистов.

"вызвали ДЛЛ" - и все тут !
все , мол, должны понимать, что я, Злой Дима, под этим понимаю ... телепатов вокруг - дохрена, вот и нехай догадываются ... а я, Злой Дима, буду сидеть и в носу ковырять, пока они "телепатируют".

Что сказать ? Замечательно !!


 
begin...end ©   (2004-10-27 16:49) [21]


> [17] Reindeer Moss Eater ©   (27.10.04 16:43)


> 2.Читай документацию по LoadLibrary.

А, ну в смысле, что можно только имя указать, без пути? Убедили...


 
Zloy_dima   (2004-10-27 16:49) [22]

Пишу поподробнее, прога вызывает мою DLL (1), которая в свою очередь использует другую DLL (DLL2). Так вот чтобы мне загрузить DLL2 мне нужно знать где лежит DDL1.


 
Reindeer Moss Eater ©   (2004-10-27 16:51) [23]

Так вот чтобы мне загрузить DLL2 мне нужно знать где лежит DDL1.

Нахрен не нужно этого знать.

А ответ на вопрос [22] в первом посте.


 
Digitman ©   (2004-10-27 16:52) [24]


> Reindeer Moss Eater ©   (27.10.04 16:46) [19]


пожоже что не так.

ключ.фраза - "в самой ДЛЛ".

человек в принципе не понимает. что его код получает управление.
да по барабану. где этот код находится - в ДЛЛ или ХренЛЛ ! Согласен ? ты уже в [1] дал ответ на этот вопрос, а автор все выеживается.

()


 
Reindeer Moss Eater ©   (2004-10-27 16:54) [25]

Ну тогда goto пост №1


 
Zloy_dima   (2004-10-27 16:56) [26]

Вторую DLL нужно загрузить не из основной программы, а из DLL1


 
Reindeer Moss Eater ©   (2004-10-27 16:59) [27]

А нам пофик


 
Digitman ©   (2004-10-27 16:59) [28]

о боже...

Дима, ты - тупой ?

тебе в посте [1] RMD дал ГОТОВУЮ ф-цию, которую ты можешь вызвать в ЛЮБОЙ точке кода своей ДЛЛ1, дабы получить полный путь к ней !

в предположении, что ДЛЛ2 лежит в том же каталоге, что и каталог ДЛЛ1, загрузить ДЛЛ2 - плевое дело !

ну ЧТО непонятно-то еще, а ?(


 
Zloy_dima   (2004-10-27 17:04) [29]

Сам ты тупой!!! Он выдаст путь не к ДЛЛ, а модуля который ее вызывает...


 
Reindeer Moss Eater ©   (2004-10-27 17:06) [30]

Оставим чудака в покое.


 
Reindeer Moss Eater ©   (2004-10-27 17:10) [31]

Он выдаст путь не к ДЛЛ, а модуля который ее вызывает...

Совершенно верно.
Модуля, который вызывает эту функцию.

Вызвать функцию в хост приложении - получишь имя exe.
Вызвать функцию из кода DLL - получишь имя DLL.


 
Digitman ©   (2004-10-27 17:19) [32]


> Zloy_dima   (27.10.04 17:04) [29]


ты "острый" ?

тогда какого черта ты не не читаешь и не вникаешь в станд.справку к ф-ции

The GetModuleFileName function retrieves the full path and filename for the executable file containing the specified module.

?!

какого шута, "острый" ты наш Злой Дима ?
ты мозжечком вообще-то намерен шевелить ?


 
Digitman ©   (2004-10-27 17:21) [33]


> Zloy_dima  


или ты в принципе не понимаешь, что ДЛЛ-файл есть ТАКОЙ ЖЕ executable file, что и ЕХЕ-файл ?!

тоже мне .. умник ..


 
Zloy_dima   (2004-10-27 17:28) [34]

Digitman: Досвидания Острый! Почту посмотри...


 
Digitman ©   (2004-10-27 17:32) [35]

Дима, а она мне нужна, твоя почта ? тебе нужно выразить свои эмоции по поводу Цифермана ? ну так и выражай их здесь ! чего секретничать-то ?)

нет бы молчаливое "спасибо" сделать, что разжевали ему механику как могди .. так нет ! ему теперь почтой нужно из штанов выпрыгивать.


 
Digitman ©   (2004-10-27 17:34) [36]

Дима, разреши твою почту процитировать ?
Вот тебе приятно будет !

Тебе че п%%%%к, негде свои вы%%%ны чтоли кидать???
Умный самый нашелся...



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

Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.036 c
6-1094536049
WondeRu
2004-09-07 09:47
2004.11.14
Как оследить обрыв сети?


4-1097004708
Jolik
2004-10-05 23:31
2004.11.14
В W3.11 было ограничение...


4-1096971769
Shira333
2004-10-05 14:22
2004.11.14
Обработка нажатия чужой кнопки...


14-1098465723
Кириешки
2004-10-22 21:22
2004.11.14
From SPYWARE to WARNING.


4-1096918358
X-RayMan
2004-10-04 23:32
2004.11.14
Точность...





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