Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.26;
Скачать: CL | DM;

Вниз

Путь из dll к ней самой   Найти похожие ветки 

 
Ghost. ©   (2002-12-15 11:39) [0]

Воможно ли получить путь к dll из нее самой..


 
Reindeer Moss Eater   (2002-12-15 11:43) [1]

GetModuleFileName


 
sniknik ©   (2002-12-15 11:48) [2]

делал так
function GetIniName: String;
var st: string;
begin
st:= StringOfChar(#0, 255);
GetModuleFileName(hInstance, PChar(st), 255);
GetIniName:= ExtractFilePath(st)+"*.Ini";
end;


 
Ghost. ©   (2002-12-15 12:25) [3]


> Reindeer Moss Eater


> sniknik ©

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


 
Reindeer Moss Eater   (2002-12-15 12:35) [4]

Ghost. ©
Этой самой функцией я получаю полный путь к моей DLL для того, что бы, например, прочитать ресурс с ее версией.
Какие есть возражения?




 
AlexKniga ©   (2002-12-15 12:35) [5]

%0
Для exe работает, для dll не проверял.


 
Ghost. ©   (2002-12-15 12:45) [6]


> Reindeer Moss Eater

Ты получаешь путь если dll в одном и томже каталоге с исполняемым файлом...
The GetModuleFileName function retrieves the full path and filename for the executable file containing the specified module.


 
Ghost. ©   (2002-12-15 12:46) [7]


> Reindeer Moss Eater

Возражений нет пути не получается..:0(


 
Reindeer Moss Eater   (2002-12-15 12:54) [8]

Ghost. ©
Только что переложил DLL в system32 и это не помешало получить версию библиотеки


 
Ghost. ©   (2002-12-15 12:58) [9]


> Reindeer Moss Eater

А перелжи ее в c:\xxz\ например..хотя может имеет значение из чего вызывать..я же обманывать не буду..эта функция мне упорно возвращает путь к исполняемогу файлу который совсем не мой..а dll моя и надо чтобы она была от него как можно дальше..


 
sniknik ©   (2002-12-15 13:00) [10]

возможно, у меня dll лежит всегда рядом с exe. из другой(?) надо попробовать.


 
Reindeer Moss Eater   (2002-12-15 13:17) [11]

Вот кусочек из RxVerInf:
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;


Что делаю я:
Пишу dll, которая экспортирует всего одну функцию.
Эта функция читает версию dll определяя имя файла с помощью AppFileName. Полученные данные пишутся в лог. Где бы ни лежала тестовая dll (естественно там где Windows её найдет), в лог пишутся верные данные о companyname, fileversion и проч.


 
Внук ©   (2002-12-15 13:24) [12]

Может и нерационально, но путь гарантированно можно получить через ToolHelp Functions.

Определить, какой процесс порожден Вашим Exe, перечислить все модули, используемые в этом процессе, найти нужную DLL, взять ее путь.
(Рихтер)

Может, можно и проще, да лениво после выходных :))


 
Reindeer Moss Eater   (2002-12-15 13:45) [13]

Проверил.
AppFileName из RxVerInf всегда возвращает полный путь к DLL.



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

Текущий архив: 2002.12.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-85862
and_sp
2002-12-03 09:32
2002.12.26
Paradox в Excel


14-86098
romychk
2002-12-05 12:55
2002.12.26
Socket - все в одном


1-85899
MadGhost
2002-12-15 10:58
2002.12.26
Как писать в ДОС-программу и как читать от туда?


14-86130
C.I.A.
2002-12-04 21:06
2002.12.26
DelphiX


3-85829
malkolinge
2002-12-06 14:23
2002.12.26
HINT