Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Определить путь к 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.118 c
15-1352705908
0xDEADBEEF
2012-11-12 11:38
2013.03.22
выбор субд


15-1337667020
AV
2012-05-22 10:10
2013.03.22
Oracle/ Надо прибить сессии, использующие пакет


2-1326742131
Рома
2012-01-16 23:28
2013.03.22
Нужно сделать трассировку


2-1344328033
Pcrepair
2012-08-07 12:27
2013.03.22
Чем лучше заменить TidHTTP Indy 10?


15-1352739879
Куку
2012-11-12 21:04
2013.03.22
Combobox с разным наполнением для разных строк в cxGrid