Файл с расширением tlb
Библиотека типов TLB может хранить в себе информацию о возможностях COM‐компонентов: классы, интерфейсы, методы, типы параметров и возвращаемые значения. В практических руководствах по программированию COM‐компонентов обычно рассказывают как создавать библиотеку типов вручную через комплилятор midl.exe , но сегодня рассмотрим как это делать программно через интерфейсы ICreateTypeLib2 и ICreateTypeInfo2 .
В качестве «языка программирования» будет выступать FreeBASIC.
Интерфейсы
Во фрибейсике отсутствует ключевое слово Interface для объявления интерфейсов, но мы справимся с этой задачей и сами голыми руками. Для демонстрации серьёзности намерений построим интерфейс натуральной дроби и посмотрим на все этапы построения интерфейсов с нуля.
Упростим понятие интерфейса до набора функций, которые следует обязательно реализовать.
Интерфейс как тип данных
Определим класс натуральной дроби. У такого класса должны быть свойства, задающие числитель и знаменатель, а также мы добавим туда операцию сложения дробей. Так как нам впоследствии необходимо будет иметь доступ из унаследованного объекта к реализованным функциям, это значит, что такой набор должен состоять из указателей на наши будущие функции. Завернём их в структуру:
Добавление контекста вызова
Чтобы функции интерфейса знали, какой объект их вызывает, добавим в них первым параметром указатель на объект, реализующий наш интерфейс:
Таблица виртуальных методов
На практике набор функций интерфейса выделяют в отдельную структуру, которую теперь называеют таблицей виртуальных методов, а в самом интерфейсе оставляют ссылку на неё. Название VirtualTable часто сокращают до Vtable или даже Vtbl:
Разрешение циклических ссылок
Пытаемся всё скомпилировать, но компилятор почему‐то сопротивляется такому коду. Дело в том, что виртуальная таблица IRationalVirtualTable ссылается на интерфейс IRational , объявленный позднее, а интерфейс IRational ссылается на виртуальную таблицу IRationalVirtualTable , и как их не меняй местами, ссылаться друг на друга от этого они не перестают. Выйти из ситуации поможет дополнительное имя для нашего интерфейса, введённое оператором Type , а к названию оригинального интерфейса добавим подчёркивание:
Ну вот теперь‐то определение нашего интерфейса готово.
COM‐интерфейсы
Вся технология COM построена на интерфейсах. Все COM‐интерфейсы строятся по описанному выше принципу, но с дополнительными ограничениями:
- все COM‐интерфейсы прямо или косвенно наследуются от интерфейса IUnknown ;
- за исключением методов AddRef и Release , все процедуры и функции должны возвращать тип данных HRESULT ;
- «настоящее» возвращаемое значение заносится функцией в переданный ей указатель последним параметром.
Для того, чтобы нашим интерфейсом можно было манипулировать не только через таблицу виртуальных функций, но и по именам функций из скриптовых языков программирования, рекомендуется наследовать интерфейсы не прямо от IUnknown , а от IDispatch . Интерфейсы, поддерживающие вызовы функций одновременно через таблицу и IDispatch , называются дуальными. Также сменим тип операндов функций с Integer на Long , чтобы соответствовать типам автоматизации.
У каждого интерфейса и реализующего класса должны быть уникальные идентификаторы. Для этого используются 128‐битные числа, вычисляемые по специальному алгоритму, гарантирующему уникальность. Такие числа называют GUID . В заголовочном файле GUID определён в виде одноимённой структуры с дополнительными именами IID (идентификатор интерфейса) и CLSID (идентификатор класса). Получить GUID можно через утилиту guidgen.exe либо через функцию CoCreateGuid . В программе GUID для интерфейсов и классов записываются так:
Переделывание интерфейса IRational в COM‐совместимый
Изменим наш интерфейс в соответствии с этими требованиями, добавив заголовочные файлы и сторожей от повторного включения кода. Вот окончательный заголовочный файл IRational.bi :
Библиотека типов
Наша библиотека типов будет состоять из определения интерфейса IRational и реализующего его класса Rational .
Подготовительный этап
Для работы среды COM её следует инициализировать вызовом CoInitialize(0) . Когда она больше не нужна, вызываем соответствующий CoUnInitialize() .
Определим идентификатор будущей библиотеки:
Так как IRational наследуется от IDispatch , то нам необходимо загрузить библиотеку stdole32.tlb , где хранится ITypeInfo от IDispatch , чтобы потом добавить на него ссылку:
Создание библиотеки
Получить интерфейс ICreateTypeLib2 для создания библиотеки можно функцией CreateTypeLib2 . Она принимает три параметра: тип системы ( SYS_MAC , SYS_WIN16 , SYS_WIN32 или SYS_WIN64 ), имя файла библиотеки и указатель на интерфейс.
Добавление интерфейса IRational в библиотеку
Метод CreateTypeInfo интерфейса ICreateTypeLib позволяет добавлять в библиотеку интерфейсы, классы, модули с функциями, перечисления, структуры, объединения и псевдонимы. Для этого ему нужно передать одно из значений перечисления TYPEKIND .
Тип сущности, TYPEKIND | Описание |
---|---|
TKIND_ALIAS | Тип, который является псевдонимом для другого типа. |
TKIND_INTERFACE | Интерфейс с чистыми виртуальными функциями, то есть такими, у которых нет реализации. |
TKIND_COCLASS | Класс, унаследованный от интерфейсов. |
TKIND_DISPATCH | Набор методов и свойств, доступных через IDispatch.Invoke . По умолчанию дуальные интерфейсы возвращают TKIND_DISPATCH . |
TKIND_ENUM | Перечисление. |
TKIND_MAX | Метка окончания перечисления. |
TKIND_MODULE | Модуль, который может содержать только статические функции и данные (например, DLL). |
TKIND_RECORD | Структура без методов. |
TKIND_UNION | Объединение переменных, имеющих нулевое смещение. |
Мы будем рассматривать добавление только классов и интерфейсов. Возвращаемым значением является ICreateTypeInfo для настройки полученной сущности.
Для наследования необходимо создать ссылку на интерфейс‐папу. Небольшая палочка в колесо: придётся самостоятельно следить за индексами добавляемых ссылок на всех отцов.
Добавление функций в интерфейс IRational
У функций есть параметры и возвращаемое значение. Функции представлены структурой FUNCDESC , параметры — массивом из структур ELEMDESC . Так как все функции интерфейса возвращают HRESULT , можно заранее создать возвращаемое значение для всех функций:
Здесь vt определяет одно из значений перечисления VARENUM , а IDLFLAG_NONE указывает, что флагов не присвоено. Флаги могут принимать комбинацию из следующих значений:
В некоторых случаях у объекта могут существовать свойства. Со стороны свойство выглядит как переменная, но изнутри обеспечивается с помощью функций установки и возврата значения. Функции можно описать одним из следующих значений:
Виды функций по поведению, INVOKEKIND | Описание |
---|---|
INVOKE_FUNC | Обычная функция. |
INVOKE_PROPERTYGET | Свойство, возвращающее значение. |
INVOKE_PROPERTYPUT | Свойство, устанавливающее значение. |
INVOKE_PROPERTYPUTREF | Свойство, устанавливающее значение по ссылке. |
Ещё функции подразделаются по реализованности:
Виды функций по реализованности, FUNCKIND | Описание |
---|---|
FUNC_STATIC | Статическая функция с реализацией, без контекста вызова. Такие функции обычно живут в DLL. |
FUNC_NONVIRTUAL | Статическая функция‐член класса с реализацией, внутри себя принимает неявный контекст вызова. |
FUNC_VIRTUAL | Виртуальная функция‐член класса с реализацией, внутри себя принимает неявный контекст вызова. |
FUNC_PUREVIRTUAL | Чистая виртуальная функция, внутри себя принимает неявный контекст вызова. |
FUNC_DISPATCH | Функция доступна только через IDispatch.Invoke . |
Функция GetNumerator
В высокоуровневых языка программирования контексты вызова функций (указатель на объект), как и таблицы виртуальных функций, скрыты от программиста и не учитываются в интерфейсах, поэтому при настройке параметров мы не будем их указывать. Введём описание параметров функции GetNumerator :
Заполнение структуры FUNCDESC для функции GetNumerator :
Теперь функцию можно насаживать на интерфейс. Здесь опять придётся следить за индексом добавляемой функции, в нашем случае это 0:
Функция SetNumerator
Похожим образом определяем вторую часть свойства Numerator :
Для добавления функции в интерфейс опять придётся следить за индексами вручную. Однако в методе SetFuncAndParamNames необходимо указать индекс предыдущей функции GetNumerator , так как она является парной для свойства.
Аналогичным образом добавляются функции для возвращения и установки знаменателя, с индексами 2 и 3.
Функция AddRational
Функция AddRational принимает параметр типа указатель на IRational . Но в автоматизации такой тип данных отсутствует, поэтому заменяем его на IDispatch :
В обозревателе объектов параметр будет виден как Object , а передача его будет идти по ссылке ByRef .
Определение функции AddRational заполняется схожим образом с предыдущими, остаётся только изменить тип функции на INVOKE_FUNC , а при насаживании функции на интерфейс указать индекс на единицу больше предыдущей добавляемой сущности, в нашем случае это 4. Можно завести отдельную переменную под индексы и увеличивать её после добавлении нового элемента.
Закрытие интерфейса IRational
Получим интерфейс ITypeInfo от IRational , чтобы можно было унаследовать от него наш будущий класс Rational :
После настройки содержимого IRational необходимо запечатать всё его содержимое и уничтожить:
Добавление класса Rational в библиотеку
Добавление классов идёт намного быстрее, чем интерфейсов с функциями, потому что здесь требуется только добавить к классу интерфейсов‐пап:
Сохранение библиотеки
Пора сохранять результаты на диск:
Выводы
Данный пример показывает, что библиотеки типов можно создавать программно без знания языка определения интерфейсов IDL и компилятора midl.exe , несмотря на всю громоздкость кода.
С помощью ICreateTypeLib2 и ICreateTypeInfo2 можно создавать не только описание COM‐интерфейсов и классов, но и обычных функций из DLL. Такой подход используется в Visual Basic 6 для связывания с DLL через таблицу импорта.
Для упрощения кода удалены проверки на ошибки. В серьёзных программах всегда следует проверять HRESULT возвращаемого значения и предпринимать меры когда что‐то пошло не так.
Программы, которые поддерживают TLB расширение файла
Следующий список содержит программы, сгруппированные по 2 операционным системам, которые поддерживают TLB файлы. Файлы с расширением TLB, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Программы, обслуживающие файл TLB
Как открыть файл TLB?
Отсутствие возможности открывать файлы с расширением TLB может иметь различное происхождение. К счастью, наиболее распространенные проблемы с файлами TLB могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Скачайте и установите Microsoft Excel
Шаг 2. Обновите Microsoft Excel до последней версии
Если проблемы с открытием файлов TLB по-прежнему возникают даже после установки Microsoft Excel, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия Microsoft Excel. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Причиной того, что Microsoft Excel не может обрабатывать файлы с TLB, может быть то, что программное обеспечение устарело. Последняя версия Microsoft Excel должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.
Шаг 3. Настройте приложение по умолчанию для открытия TLB файлов на Microsoft Excel
После установки Microsoft Excel (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия TLB файлов. Метод довольно прост и мало меняется в разных операционных системах.
Процедура изменения программы по умолчанию в Windows
- Щелкните правой кнопкой мыши на файле TLB и выберите « Открыть с помощью опцией».
- Выберите Выбрать другое приложение → Еще приложения
- Наконец, выберите Найти другое приложение на этом. , укажите папку, в которой установлен Microsoft Excel, установите флажок Всегда использовать это приложение для открытия TLB файлы свой выбор, нажав кнопку ОК
Процедура изменения программы по умолчанию в Mac OS
Шаг 4. Проверьте TLB на наличие ошибок
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл TLB действительным. Проблемы с открытием файла могут возникнуть по разным причинам.
1. Проверьте TLB файл на наличие вирусов или вредоносных программ.
Если файл заражен, вредоносная программа, находящаяся в файле TLB, препятствует попыткам открыть его. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. TLB файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.
2. Проверьте, не поврежден ли файл
Если вы получили проблемный файл TLB от третьего лица, попросите его предоставить вам еще одну копию. Возможно, файл был ошибочно скопирован, а данные потеряли целостность, что исключает доступ к файлу. Это может произойти, если процесс загрузки файла с расширением TLB был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Убедитесь, что у вас есть соответствующие права доступа
Иногда для доступа к файлам пользователю необходимы права администратора. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл OLE Type Library.
4. Убедитесь, что в системе достаточно ресурсов для запуска Microsoft Excel
5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами OLE Type Library. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами TLB, влияющими на более старые версии данного программного обеспечения.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла TLB мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле TLB.
Неизвестное расширение файла может быть источником различных проблем. Однако выявление причин проблем с файлами TLB и их устранение не являются сложным процессом. Эта статья опишет 5 простых шагов, которые позволят вам решить проблемы с файлами TLB.
TLB расширение файла
- Тип файла OLE Type Library
- Разработчик файлов Microsoft
- Категория файла Другие файлы
- Рейтинг популярности файлов
Как открыть файл TLB?
Шаг 1. Найдите и скачайте и установите соответствующее программное обеспечение
Обычно для открытия файлов. TLB достаточно выполнить следующие простые шаги: найти, загрузить и установить соответствующее программное обеспечение. Затем, дважды щелкнув значок файла, откройте файл. Система должна автоматически связать TLB файл с соответствующим программным обеспечением. Ниже приведен список программ, необходимых для открытия файлов с расширением TLB:
Программы, поддерживающие TLB файлы
WindowsШаг 2. Убедитесь, что файл TLB не заражен вредоносным ПО
Если данный файл с расширением TLB не заражен, возможно, антивирусная программа блокирует доступ к файлу. Пользователь должен принять необходимые меры предосторожности и выполнить действия, предложенные системой. После восстановления или удаления зараженного файла рекомендуется проверить всю систему на наличие вирусов. Вам нужно будет приобрести новую, чистую версию файла TLB.
Подсказка!
Имейте в виду, что вы всегда можете обратиться за помощью к ИТ-специалисту. Некоторые проблемы с файлами TLB могут быть трудно решить для менее опытных пользователей. Также вы можете обратиться за помощью к одному из разработчиков программного обеспечения, которое поддерживает файлы с расширением TLB. Для этого перейдите на подстраницу программного обеспечения и найдите адрес веб-сайта разработчика программного обеспечения.
Шаг 3. Убедитесь, что файлы TLB завершены, то есть были ли они загружены правильно
Если файл TLB не был загружен должным образом, программное обеспечение не сможет открыть такой файл. Проверьте размер файла в том месте, откуда вы скачали нужный файл. Если размер исходного файла отличается от размера загруженного файла TLB, вам придется загрузить файл снова.
Шаг 4. Убедитесь, что файлы TLB связаны с соответствующим программным обеспечением
Если в системном реестре нет записи, связанной с программой по умолчанию, которая должна использоваться для открытия файлов TLB , даже если данная программа установлена в системе, тогда файлы TLB должны быть связаны с рассматриваемым приложением.
Связывание файлов с приложениями выполняется аналогично, независимо от типа системы, и состоит в выборе приложения, которое следует использовать для открытия файлов данного типа. Чтобы связать TLB файлы с данным приложением, щелкните правой кнопкой мыши значок файла и выберите в контекстном меню пункт «Открыть с помощью» , который отобразит список предлагаемых программ. Выберите вашу программу из списка. Если приложение отсутствует в списке, используйте кнопку «Обзор» и укажите местоположение приложения. Если установлен флажок «Всегда использовать выбранное приложение для открытия файлов такого типа» , выбранное приложение будет установлено в качестве приложения по умолчанию для открытия указанных файлов.
Шаг 5. Убедитесь, что носитель, на котором хранятся файлы TLB, не поврежден или не поврежден
Возможно, что носитель, на котором находится файл, поврежден или поврежден. Попробуйте сканировать носитель на наличие ошибок.
TLB is a binary support file that stores user interface data. TLB file format is used by applications that support OLE (Object Linking and Embedding) technology featured in Microsoft Visual Basic environment.
Windows users are vulnerable to a trojan malware stdole3, which saves itself in windows32 system folder and uses TLB files as its attack vector. The malware has been identified in 2006 and now most antivirus software recognize this threat and deal with it accordingly.
TLB - это двоичный файл поддержки, в котором хранятся данные интерфейса пользователя. Формат файла TLB используется приложениями, которые поддерживают технологию OLE (связывание и внедрение объектов), представленную в среде Microsoft Visual Basic.
Пользователи Windows уязвимы для троянской вредоносной программы stdole3, которая сохраняет себя в системной папке windows32 и использует файлы TLB в качестве вектора атаки. Вредоносная программа была обнаружена в 2006 году, и теперь большинство антивирусных программ распознают эту угрозу и соответственно с ней справляются.
Программа(ы), умеющие открыть файл .TLB
Windows
Mac OS
Как открыть TLB файлы
Если появилась ситуация, в которой Вы не можете открыть файл TLB на своем компьютере - причин может быть несколько. Первой и одновременно самой важной (встречается чаще всего) является отсутствие соответствующей аппликации обслуживающей TLB среди установленных на Вашем компьютере.
Самым простым способом решения этой проблемы является нахождение и скачивание соответствующей аппликации. Первая часть задания, уже выполнена, - программы для обслуживания файла TLB Вы найдете ниже. Теперь достаточно скачать и установить соответствующую аппликацию.
В дальнейшей части этой страницы Вы найдете другие возможные причины, вызывающие проблемы с файлами TLB.
Возможные проблемы с файлами в формате TLB
Отсутствие возможности открытия и работы с файлом TLB, совсем не должен значить, что мы не имеем установленного на своем компьютере соответствующего программного обеспечения. Могут выступать другие проблемы, которые также блокируют нам возможность работы с файлом OLE Type Library. Ниже находится список возможных проблем.
- Повреждение открываемого файла TLB.
- Ошибочные связи файла TLB в записях реестра.
- Случайное удаление описания расширения TLB из реестра Windows
- Некомплектная установка аппликации, обслуживающей формат TLB
- Открываемый файл TLB инфицирован нежелательным, вредным программным обеспечением.
- На компьютере слишком мало места, чтобы открыть файл TLB.
- Драйверы оборудования, используемого компьютером для открытия файла TLB неактуальные.
Если Вы уверены, что все перечисленные поводы отсутствуют в Вашем случае (или были уже исключены), файл TLB должен сотрудничать с Вашими программами без каких либо проблем. Если проблема с файлом TLB все-таки не решена, это может значить, что в этом случае появилась другая, редкая проблема с файлом TLB. В таком случае остается только помощь специалиста.
Похожие расширения
.aawdef | Ad-Aware Definitions Format |
.abr | Adobe Photoshop Brush Format |
.ac$ | AutoCAD Undo Info Format |
.acc | DR DOS - ViewMax Format |
.acl | Microsoft Office Automatic Correction List |
.acs | Microsoft Agent Character Structured Storage Format |
.ad | After Dark Screen Saver Format |
.add | Microsoft Dynamics AX Developer Documentation Format |
Как связать файл с установленной программой?
Если Вы хотите связать какой-то файл с новой программой (напр. moj-plik.TLB) Вы можете воспользоваться двумя вариантами. Первый и самый простой - это нажатие правой кнопкой мышки на избранный файл TLB. Из открытого меню выберите опцию Выбрать программу по умолчанию", затем опцию "Пересматривать" и найти требуемую программу. Всю операцию необходимо утвердить нажатием кнопки OK.
Есть ли универсальный метод открытия неизвестных файлов?
Многие файлы содержат данные в виде текста или чисел. Возможно, что во время открытия неизвестных файлов (напр. TLB) популярный в системе Windows простой редактор текста, которым является Notatnik позволит нам увидеть часть данных, закодированных в файле. Этот метод позволяет просмотреть содержимое многих файлов, однако не в такой форме, как программа, предназначенная для их обслуживания.
Читайте также: