Использовать OCX как обычную длл

Тема в разделе "WASM.BEGINNERS", создана пользователем assorted, 9 июн 2007.

  1. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Есть некоторый ActiveX. Как узать адреса методов нем реализованых? Хочу вызывать их, загружая COM с помощю LoadLibrary.
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    DllGetClassObject импортируй и запрашивай оттуда уже требуемый интерфейс.
    http://www.wasm.ru/article.php?article=comkit2
     
  3. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Что то не могу понять который интерфейс "требуемый"
    в браузере работает такой код

    <OBJECT
    ID="yyy"
    CLASSID="CLSID:XXXXXXXX-XXX-XXXX-XXXX-XXXXXXXXXXXX"
    width=400
    height=400
    >
    </OBJECT>

    Как реализовать то же самое? Для начала пытаюсь хотя бы стандартным
    CoCreateInstance Не могу понять как это делает браузер. Где взять IID интерфейса? Откуда его знает IE?
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    http://www.wasm.ru/article.php?article=comkit1
    читал? там описывается получение поддерживаемых данным класом интерфейсов, т.е. перечисление набора IID для определенного CLSID
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    DllGetClassObject + твой clsid
     
  6. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Хороше, указатель на интерфейс я получил. Но что делать дальше - не понятно. Как минимум, предполагаю что нужно передать какому то методу hwnd окна в котором он будет отображаться. Бросли этот activX на форму в делфи. Олей вижу
    вызовы методов
    mov eax,[pUnk]
    mov eax,[eax]
    call dword [eax+058h]
    и
    call dword [eax+Ch]
    Какие аргументы?
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    ActiveX контрол - это контрол, реализованный как СОМ-класс, и поддерживающий как минимум IOleControl и IOleControlSite. Соответственно, для использования его у себя, надо поддерживать ActiveX hosting (Требуемые интерфейсы).