Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.53 MB
Время: 0.024 c
14-1098936991
Думкин
2004-10-28 08:16
2004.11.14
С днем рождения! 28 октября!!!!


1-1098975439
Norn
2004-10-28 18:57
2004.11.14
Определения файла, для открытия которой была вызвана программа


14-1095535491
Piter
2004-09-18 23:24
2004.11.14
Magic Forum 1.0 - первый релиз программы-клиента этого форума


1-1099053212
Vadik2k
2004-10-29 16:33
2004.11.14
Как перехватить изменение размеров кнопки


1-1099294338
Wood
2004-11-01 10:32
2004.11.14
Что в переменной типа string?




   Наверх