Главная страница
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.014 c
3-85852
BorisUK
2002-12-06 15:10
2002.12.26
как прервать запрос к базе


14-86093
RV
2002-12-05 10:14
2002.12.26
Задачка :)


14-86089
Wonder
2002-12-03 15:53
2002.12.26
Небольшой тест :)


14-86082
S@M_vvv
2002-12-08 02:28
2002.12.26
ASPack


14-86091
Gaber
2002-12-02 12:13
2002.12.26
Список стран