1
J'essaie de convertir un objet COM IWebBrowser2 en IHTMLDocument2 afin que je puisse manipuler le contenu du navigateur Web IE.IWebBrowser2.Document ne retourne pas IHTMLDocument2
Voici le début de mon code:
int main()
{
if (SUCCEEDED(OleInitialize(NULL)))
{
CComQIPtr<IWebBrowser2> pBrowser2;
CComQIPtr<IDispatch> pDispatch;
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&pBrowser2);
if (pBrowser2)
{
//Here, pDispatch remains null and hr == E_FAIL
HRESULT hr = pBrowser2->get_Document(&pDispatch);
}
OleUninitialize();
}
}
A l'appel à IWebBrowser2 :: get_document() la variable pDispatch reste nulle et le HRESULT retourné est E_FAIL.
Que dois-je faire pour obtenir l'objet IHTMLDocument2 de IWebBrowser2?
essayé cela, ne résout pas le problème que je suis. Ai-je peut-être manqué quelque chose dans mon environnement? J'essaie d'être administrateur, donc je ne pense pas que ce soit un problème d'autorisations. – tt9
Après avoir joué avec, je me rends compte qu'il doit attendre que le document soit complètement chargé. Pour tester j'ai juste jeté un sommeil (5000) puis ça a marché. Je vais devoir trouver comment capturer l'événement chargé de document mais pour l'instant vous avez répondu à ma question, merci! – tt9
Oh, j'ai raté ça parce que je passais dans le débogueur, je n'ai pas remarqué qu'il fallait un délai. Qu'en est-il de mettre un contrôle de navigateur dans votre propre fenêtre et de changer son contenu? Je pense que cela devrait être plus facile. –