На этом шаге мы рассмотрим работу с OLE/COM Object Viewer.
На этом шаге мы изучим особенности реализации СОМ-объектов и элементов управления на базе ActiveX.
С помощью средств просмотра объектов OLE/COM Object Viewer Вы обратитесь к реестру и исследуете
СОМ-объекты и ActiveX-элементы.
- Запуск OLE/COM Object Viewer.
- Запустите Visual Studio.
- В меню Tools выберите команду OLE/COM Object Viewer.
- В меню View щелкните Expert Mode (опция должна быть включена!). После этого пролистайте вниз список узлов в левой панели и найдите узел All Objects.
- Щелкните знак "+" слева от него, чтобы отобразить список всех СОМ-объектов и ActiveX-элементов, находящихся в реестре. Одна
часть записей содержит идентификаторы GUID, а другая - строковые имена. - Просмотр СОМ-объекта.
- Пролистайте вниз список записей и найдите узел ADODB.Connection. Это объект ADO Connection,
который пригодится Вам в дальнейшем. - Щелкните этот узел. В правой панели появится информация о записях реестра для этого объекта. Обратите
внимание на раздел InprocServer32, содержащий путь к DLL, в которой реализован объект. - Щелкните знак "+" слева от этого узла, чтобы получить список всех интерфейсов, поддерживаемых этим СОМ-объектом.
OLE/COM Object Viewer выглядит, как показано на рисунке 1.
Рис.1. Средство просмотра OLE/COM Object Viewer
Этот список содержит несколько интерфейсов. IUnknown поддерживает получение указателя на интерфейс.
Реализация интерфейса IDispatch позволяет языкам сценариев типа VBScript обрашаться к этому СОМ-объекту. Наиболее часто
используемый клиентами интерфейс - _Connection. Он содержит методы, позволяюшие подключаться к
источникам данных. - Щелкните интерфейс _Connection. В правой панели появится информация о нем.
Посмотрев содержание подраздела InprocServer32 в разделе CLSID в правой панели, Вы увидите, что
там указан путь к oleaut32.dll - маршалеру Automation. Таким образом, за маршалинг этого
интерфейса отвечает маршалер Automation, а это означает, что при передаче параметров и получении значений,
возвращаемых методами этого интерфейса, Вы должны использовать только типы, оддерживаемые
Automation (типы, которые можно упаковывать в структуре данных VARIANT).
В разделе TypeLib находится подраздел Win32 со значением
"C:\Program Files\Common Files\ADO\MSADO15.DLL", значит, библиотека типов скомпонована в DLL-сервера.
Дважды щелкните интерфейс _Connection. Откроется диалоговое окно Default Interface Viewer. - В Диалоговом окне Default Interface Viewer щелкните View Type Info.
- В диалоговом окне ITypeInfo Viewer щелкните знак "+" слева от узла Methods.
- Пролистайте список вниз и найдите метод Open.
- Щелкните метод Open.
- В правой части окна появится подробные сведения об этом методе.
Рис.2. Окно ITypeInfo Viewer
Первая запись - это диспетчерский идентификатор. Ниже находятся параметры, передаваемые Вашим клиентским
приложением в этот метод. Обратите внимание на использование только типов, поддерживаемых Automation. - Закройте диалоговое окно ITypeInfo Viewer.
- В диалоговом окне Default Interface Viewer щелкните Close.
- Щелкните знак "-" слева от узла ADODB.Connection.
- Просмотр ActiveX-элемента.
- Пролистайте вниз список узлов в левой части OLE/COM Object Viewer и найдите узел
Microsoft ADO Data Control. - Щелкните узел Microsoft ADO Data Control. В правой части окна появятся подробные сведения об этом элементе управления.
- В разделе CLSID Вы увидите подраздел InprocServer32, определенный как
"cucтемный каталог\MSADODC.OCX". Элементы управления на базе ActiveX обычно
находятся в файлах с расширением *.осх. (Тем не менее это DLL-файлы.) - В правой части окна Вы увидите раздел Control. Это еще одно потверждение того, что это ActiveX-элемент. ~
- В левой панели щелкните знак "+" слева от узла Microsoft ADO Data Control.
- Вы увидите большое количество поддерживаемых интерфесов. Там перечислены все интерфейсы, поддержка
которых нужна большинству ActiveX-контейнеров. - Дважды щелкнете интерфейс IAdodc в узле Microsoft ADO Data Control.
- В диалоговом окне Default Interface Viewer щелкните View Type Info.
- В появившемся диалоговом окне ITypeInfo Viewer щелкните знак "+" слева от узла Methods, чтобы развернуть его.
- Щелкните любой из методов. В правой части диалогового окна ITypeInfo Viewer появятся диспетчерский идентификатор и сигнатура метода.
- Закройте диалоговое окно ITypeInfo Viewer.
- В диалоговом окне Default Interface Viewer щелкните Close.
- Закройте OLE/COM Object Viewer.
Со следующего шага мы начнем рассматривать создание COM-компонентов.