Je travaille sur un objet d'aide du navigateur et j'essaie d'accéder à IWebBrowser2 qui déclenche un événement. Avec NavigateComplete2 et d'autres événements, je peux facilement le faire car j'obtiens le pointeur sur les paramètres de Invoke.Obtention du pointeur IWebBrowser2 à partir de l'événement DISPID_TITLECHANGE
Mais je lisais this sur msdn et il dit que le seul paramètre pour l'événement TitleChange est le titre, alors comment puis-je le pointeur à l'interface du navigateur Web de l'événement TitleChange?
Voici comment je reçois avec d'autres événements:
HRESULT STDMETHODCALLTYPE CSiteEvents::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags,
DISPPARAMS __RPC_FAR *Params, VARIANT __RPC_FAR *pVarResult,
EXCEPINFO __RPC_FAR *pExcepInfo, UINT __RPC_FAR *puArgErr)
{
switch (dispIdMember)
{
case DISPID_DOCUMENTCOMPLETE:
{
IWebBrowser2 *pBrowser = GetBrowser(Params->rgvarg[1]);
// stuff
pBrowser->Release();
}
break;
}
}
IWebBrowser2* GetBrowser(const VARIANT &_Argument)
{
IWebBrowser2 *pBrowser = NULL;
if (_Argument.vt == VT_DISPATCH)
{
HRESULT hr;
IDispatch *pDisp = _Argument.pdispVal;
if (pDisp)
{
hr = pDisp->QueryInterface(IID_IWebBrowser2, reinterpret_cast<void **>(&pBrowser));
if (FAILED(hr))
pBrowser = NULL;
}
}
return pBrowser;
}
J'utilise Visual Studio 2010.
Voulez-vous dire que je devrais pouvoir utiliser: IWebBrowser2 * pBrowser = NULL; \t \t \t this-> QueryInterface (IID_IWebBrowser2, reinterpret_cast (& pBrowser)) ;? J'ai essayé cela et pBrowser est NULL. –
gtilx
C'est ce que je pensais que cela devrait fonctionner - désolé que ce ne soit pas le cas ... Que se passe-t-il lorsque vous essayez ceci en utilisant l'UUID pour 'IDispatch'? –
Comment puis-je utiliser l'UUID? avez-vous un exemple? – gtilx