Текущий архив: 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