![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Вывести все зарегистрированные библиотеки типовDelphi , Технологии , ТехнологииВывести все зарегистрированные библиотеки типов
Оформил: DeeCo uses Registry; procedure EnumTypeLibs(TypeLibNames: TStrings); var f: TRegistry; keyNames, keyVersions, keyInfos: TStringList; keyName, keyVersion, keyInfo, tlName: string; i, j, k: Integer; begin TypeLibNames.Clear; keyNames := nil; keyVersions := nil; keyInfos := nil; f := TRegistry.Create; try keyNames := TStringList.Create; keyVersions := TStringList.Create; keyInfos := TStringList.Create; f.RootKey := HKEY_CLASSES_ROOT; if not f.OpenKey('TypeLib', False) then raise Exception.Create('TRegistry.Open'); f.GetKeyNames(keyNames); f.CloseKey; for i := 0 to keyNames.Count - 1 do begin keyName := keyNames.Strings[i]; if not f.OpenKey(Format('TypeLib\%s', [keyName]), False) then Continue; f.GetKeyNames(keyVersions); f.CloseKey; for j := 0 to keyVersions.Count - 1 do begin keyVersion := keyVersions.Strings[j]; if not f.OpenKey(Format('TypeLib\%s\%s', [keyName, keyVersion]), False) then Continue; tlName := f.ReadString(''); f.GetKeyNames(keyInfos); f.CloseKey; {$B-} for k := 0 to keyInfos.Count - 1 do begin keyInfo := keyInfos.Strings[k]; if (keyInfo = '') or (keyInfo[1] < '0') or (keyInfo[1] > '9') then Continue; if not f.OpenKey(Format('TypeLib\%s\%s\%s\win32', [keyName, keyVersion, keyInfo]), False) then Continue; f.CloseKey; TypeLibNames.Add(Format('%s ver.%s', [tlName, keyVersion])); end; {$B+} end; end; finally f.Free; keyNames.Free; keyVersions.Free; keyInfos.Free; end; end; // Example Call: procedure TForm1.Button1Click(Sender: TObject); begin EnumTypeLibs(ListBox1.Items); end; Программа на Delphi, которая использует реестр Windows для перечисления и отображения всех зарегистрированных библиотек типов (TLBs) на системе. Вот разбивка того, что код делает:
Пример кода в процедуре Некоторые предложения по улучшению:
В отношении альтернативного решения, если вам нужно перечислить типовые библиотеки более современным способом, вы можете рассмотреть использование COM-интеропа или класса В статье описывается процедура EnumTypeLibs, которая выводит все зарегистрированные библиотеки типов в системе Windows. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Технологии ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |