Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизОпределить путь к DLL из EXE Найти похожие ветки
← →
Ольга © (2011-03-23 15:48) [0]Есть DLL, которая является COM-объектом. На компе у пользователя этих DLL разных версий расплодилось в N директориях. Я хочу при загрузке своей программы определить какая DLL была зарегистрирована. Пытаюсь прочитать путь из реестра, но, видимо, криво написанная функция выдает пусто. Текст функции:
function GetDLLPath(NameDLL: string): string;
var
MyReg : TRegistry;
ST: string;
ListGUID: TStringList;
i: Integer;
begin
ListGUID:=TStringList.Create;
MyReg := TRegistry.Create;
MyReg.RootKey:=HKEY_CLASSES_ROOT;
MyReg.OpenKey("CLSID", false);
MyReg.GetKeyNames(ListGUID);
MyReg.CloseKey;
for i:=0 to ListGUID.Count-1 do
if MyReg.OpenKey("\CLSID\"+ListGUID[i]+"\InprocServer32",FALSE) then
begin
if MyReg.GetDataType("InprocServer32")=rdString then
begin
ST:=MyReg.ReadString("InprocServer32");
if POS(NameDLL,ST)>0 then
Result:=ST;
end;
end;
MyReg.Free;
ListGUID.Free;
end;
← →
Rouse_ © (2011-03-23 16:45) [1]GetModuleHandle + GetModuleFileName
← →
Игорь Шевченко © (2011-03-23 17:25) [2]
> криво написанная функция выдает пусто
криво написанную функцию выпрямляют путем отладки
> Я хочу при загрузке своей программы определить какая DLL
> была зарегистрирована.
а что значит в данном контексте "какая" ? В каком каталоге ?
Допустим, C:\Documents and Settings\Foo\Рабочий стол
← →
Ольга © (2011-03-24 16:50) [3]
> GetModuleHandle + GetModuleFileName
А ларчик просто открывался :)
Спасибо.
← →
Ольга © (2011-03-24 16:53) [4]
> криво написанную функцию выпрямляют путем отладки
Согласна.
Но иногда, когда несколько часов тупо бьешься не туда, выпрямлялка перестает работать :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.089 c