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

Вниз

Путь из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
14-86161
Uran
2002-12-06 16:53
2002.12.26
Откуда можно скачать программу DMFC, для чтения этого форума?


14-86150
_Nicola_
2002-11-28 17:09
2002.12.26
Дельфи и USB джойстик


6-86062
Pithon_kaa
2002-10-31 10:47
2002.12.26
Что рекомендует Borland для использования вместо TServerSocet


6-86067
Rob
2002-10-30 17:06
2002.12.26
Проблема с повторным соединением


1-85943
AlexS
2002-12-17 16:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский