![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определить путь к DLL из EXE [D7, WinXP]
Ольга © (2011-03-23 15:48:00)Есть 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;
Ольга (2011-03-24 16:53:00) [1]
> криво написанную функцию выпрямляют путем отладки
Согласна.
Но иногда, когда несколько часов тупо бьешься не туда, выпрямлялка перестает работать :)
Ольга (2011-03-24 16:50:00) [2]
> GetModuleHandle + GetModuleFileName
А ларчик просто открывался :)
Спасибо.
Игорь Шевченко (2011-03-23 17:25:00) [3]
> криво написанная функция выдает пусто
криво написанную функцию выпрямляют путем отладки
> Я хочу при загрузке своей программы определить какая DLL
> была зарегистрирована.
а что значит в данном контексте "какая" ? В каком каталоге ?
Допустим, C:\Documents and Settings\Foo\Рабочий стол
Rouse_ (2011-03-23 16:45:00) [4]GetModuleHandle + GetModuleFileName