Подтвердить что ты не робот

BHO IE 9 Захват события OnScroll, если сайт имеет содержимое метатега = "IE = 9"

Недавно я заметил, что я не могу захватить события OnSroll в "верхнем" окне в моем BHO, если я показываю страницу в IE9, а страница contes тега: <meta http-equiv="X-UA-Compatible" content="IE=9">.

Я захватываю прокрутку, погружая DISPID_HTMLWINDOWEVENTS2_ONSCROLL из DIID_HTMLWindowEvents2 в IHTMLWindow2 в верхнем документе, и он отлично работает во всех случаях, за исключением случаев, если страница содержит этот метатег.

Мой класс раковины определяется как:

class CIEPage : public IDispEventImpl<1, CIEPage, &DIID_HTMLDocumentEvents2, &LIBID_MSHTML, 4, 0>,
    public IDispEventImpl<2, CIEPage, &DIID_HTMLWindowEvents2, &LIBID_MSHTML, 4, 0>


// SinkMap
    BEGIN_SINK_MAP(CIEPage)           
        SINK_ENTRY_EX(1, DIID_HTMLDocumentEvents2, DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER, OnMouseOver)                       
        SINK_ENTRY_EX(2, DIID_HTMLWindowEvents2, DISPID_HTMLWINDOWEVENTS2_ONSCROLL, OnScroll)               
    END_SINK_MAP()

И я тону, как это.

hr = IDispEventImpl<1, CIEPage, &DIID_HTMLDocumentEvents2, &LIBID_MSHTML, 4, 0>::DispEventAdvise(_spDocument);
if(SUCCEEDED(hr))           
    _bAdvised[ListenerEventMouseOver] = true;

if(IsTopPage())
{

hr = _spDocument->get_parentWindow(reinterpret_cast<IHTMLWindow2 **>(&_spWindow));
if (SUCCEEDED(hr) && _spWindow)
{
     hr = IDispEventImpl<2, CIEPage, &DIID_HTMLWindowEvents2, &LIBID_MSHTML, 4, 0>::DispEventAdvise(_spWindow);                       
     if(SUCCEEDED(hr))   
          _bAdvised[ListenerEventScroll] = true;                                                           
  }

}

где _spDocument - это CComPtr<IHTMLDocument2> и _spWindow a CComPtr<IHTMLWindow2>

Любые идеи? Также, похоже, существует несоответствие в заголовках IE9 SDK и документации msdn. Например, новые события документа IE 9 в документах определяют многие события, которые недоступны в SDK. Это определение в файле mshtml.idl

[
    hidden,
    uuid(30510737-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLDocumentEvents4
{
properties:
methods:
    [id(DISPID_HTMLDOCUMENTEVENTS4_ONMSTHUMBNAILCLICK)] void onmsthumbnailclick([in] IHTMLEventObj* pEvtObj);
    [id(DISPID_HTMLDOCUMENTEVENTS4_ONMSSITEMODEJUMPLISTITEMREMOVED)] void onmssitemodejumplistitemremoved([in] IHTMLEventObj* pEvtObj);
};

Так как теперь в документе есть msdn OnScrollEvent, возможно, это событие, которое мне нужно потопить, если браузер - это версия 9, а страница - IE = 9... но SDK не содержат эту информацию...

Любая помощь приветствуется. Спасибо.

4b9b3361