Получение событий от внедренного в HTML страницу флеш

Тема в разделе "WASM.WIN32", создана пользователем daddyru, 12 апр 2007.

  1. daddyru

    daddyru New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2006
    Сообщения:
    12
    Здравствуйте. Вопрос задавал на некоторых форумах уже, но видимо никто не сталкивался с такой задачей. Мне необходимо подключаться к событиям флеш-объекта, внедренного в веб-страницу в качестве баннера (все это из-под BHO осуществляю).
    Делаю так.
    1. Дожидаюсь окончания загрузки документа.
    2. Перебираю все элементы OBJECT.
    3. На нужном делаю:
    Код (Text):
    1.                         CComQIPtr<IHTMLObjectElement> pObj=pElem;
    2.                         CComPtr<IDispatch> pD;
    3.                         pObj->get_object(&pD);
    4.                         if (pD==NULL) return;
    5.  
    6.                         CComObject<CFlashSunk> *sink;
    7.                         CComObject<CFlashSunk>::CreateInstance(&sink);
    8.                         hr=sink->AddRef();    
    9.                        
    10.                         hr=sink->DispEventAdvise(pD);
    Вот класс CFlashSunk:
    Код (Text):
    1. #import "C:\\WINDOWS\\system32\\Macromed\\Flash\\Flash.ocx"  named_guids
    2. #include "Debug\Flash.tlh"
    3.  
    4. class ATL_NO_VTABLE CFlashSunk :
    5.     public CComObjectRootEx<CComSingleThreadModel>,
    6.     public CComCoClass<CFlashSunk>,
    7.     public IDispEventImpl<0, CFlashSunk, &ShockwaveFlashObjects::DIID__IShockwaveFlashEvents, &ShockwaveFlashObjects::LIBID_ShockwaveFlashObjects>
    8. {
    9.  
    10. public:
    11.  
    12.  
    13.     BEGIN_COM_MAP(CFlashSunk)
    14.         COM_INTERFACE_ENTRY_IID(ShockwaveFlashObjects::DIID__IShockwaveFlashEvents,CFlashSunk)        
    15.     END_COM_MAP()
    16.  
    17.     BEGIN_SINK_MAP(CFlashSunk)
    18.       SINK_ENTRY_EX(0,ShockwaveFlashObjects::DIID__IShockwaveFlashEvents,150,FSCommand)
    19.     END_SINK_MAP()
    20.    
    21.    
    22.     STDMETHOD(FSCommand) (BSTR command, BSTR args);
    23. };
    Не получается подключится. То есть события просто не вызываются. Весь код, в котором проходит создание объекта класса, отрабатывает без ошибок. Кто сталкивался с данной проблемой? Может я неверно написал класса синка? Или забыл чего-то...
     
  2. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    123ewq
    респектище, как всегда