Архитектура Microsoft Windows для разработчиков



              

Занятие 1. Архитектура СОМ - часть 4


В Visual Basic метод AddRef вызывается при использовании функции CreateObject.

  • Метод Release применяется для уничтожения объекта и уменьшения значения счетчика ссылок. В Visual Basic это делают, присваивая объекту значение Nothing.
  • Метод Querylnterface предоставляет список интерфейсов, поддерживаемых объектом. Например, объект СОМ может иметь разные интерфейсы для работника и для менеджера (lEmployee и IManager). Если клиент содержит объектную переменную, которая указывает на достоверный интерфейс СОМ, он вправе, используя этот метод, запросить любой интерфейс, предоставляемый объектом. Visual Basic предоставляет такую возможность автоматически средствами оператора Set.
  • Пример Здесь на Visual Basic выполняются методы AddRef и Release для объекта СОМ:

    'Вызов метода AddRef

    Set MyObject = CreateObject('Word.Application")

    'Вызов метода Release

    Set MyObject = Nothing

    Интерфейс IDispatch

    IDispatch — это интерфейс автоматизации для контроллеров, не использующих интерфейсы СОМ напрямую. Исполняемый файл или DLL, использующие I Dispatch, называют серверами автоматизации. При доступе к объекту через интерфейс IDispatch применяется отложенное связывание — реальный доступ происходит во время выполнения. IDispatch поддерживает следующие основные методы.

    • GetIDsOfNames — отображает имя одного члена класса и, по желанию, набор имен аргументов в соответствующий набор целых идентификаторов связи (Dispatch Identifier, DISPID), которые затем можно использовать в вызовах метода Invoke.
    • GetTypeInfo — извлекает информацию о типах объекта.
    • GetTypeInfoCount — извлекает информацию о типах, предоставляемых объектом (возвращает 0, если информации о типах нет, и 1 — если есть).
    • Invoke — предоставляет доступ к свойствам и методам объекта.
    • Во время выполнения клиент передает строку с именем свойства (или метода), которое он хочет вызвать, методу IDispatch.GetIDsOfNames. Если данное свойство (или метод) объекта существует, клиент получает идентификатор соответствующей функции.


      Содержание  Назад  Вперед