Главная страница
    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.47 MB
Время: 0.008 c
14-86119
Ketmar
2002-12-04 15:24
2002.12.26
а-а-а... вам хорошо. а я мазохизмом занимаюсь. Рихтера читаю.


14-86099
Aristarh
2002-12-04 22:42
2002.12.26
На счетчике свыше 3 штук посетителей...


1-85903
masia
2002-12-16 19:21
2002.12.26
Помогите сделать динамическое изменение


14-86081
dkDimon
2002-12-08 13:26
2002.12.26
Audio Mixer


7-86190
BJValentine
2002-10-22 15:02
2002.12.26
Ярлыки





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