(IE BHO) Получить IWebBrowser2 из события BeforeNavigate2

Я работаю над IE BHO, в событии BeforeNavigate2, как я могу получить указатель на IWebBrowser2? вот мой код:

STDMETHODIMP CEventSink::Invoke(DISPID dispIdMember, .....) {
IWebBrowser2* pSite = 0;
HRESULT hr;

if(dispIdMember == DISPID_BEFORENAVIGATE2) {

hr = ((IDispatch*)pDispParams->rgvarg[0].pdispVal)->QueryInterface(IID_IWebBrowser2, (void**)&pSite);// This line Crashes

и тип параметра [0] не VT_DISPATCH:

if(pDispParams->rgvarg[0].vt == VT_DISPATCH) {
msgbox("yes VT_DISPATCH");
} else {
msgbox("no.."); // it goes here
}

MSDN (BeforeNavigate2) говорит, что первый параметр

Указатель на интерфейс IDispatch для объекта WebBrowser, представляющего окно или фрейм. Этот интерфейс может быть запрошен для интерфейса IWebBrowser2.

Что не так с моим кодом?

Заранее спасибо.

1

Решение

В Invoke реализации, аргументы в обратном порядке.

использование rgvarg[6] для «первых» аргументов, и использовать rgvarg[0] за последний (седьмой)

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector