我的程序在执行到IHTMLelement::get_outerHTML 弹出上面的错误提示 ,下面是部分代码
CComBSTR BStrhtml="";
IHTMLElement* pEle;
......获取pEle.....
pEle->get_outerHTML(&BStrhtml); 我用两种方法测试,有一种方法没有错误提示,另一个有错.
1种是. 用CoCreateInstance 创建 IWebBrowserapp 然后得到IHTMLElement 指针,再pEle->get_outerHTML,这样做没错误提示,
IWebBrowser2* pWBApp ;
CoCreateInstance(CLSID_InternetExplorer, NULL,CLSCTX_SERVER,
IID_IWebBrowserApp, (LPVOID*)&pWBApp);
2种是 从CHTMLview 得到IWebBrowser2 ,然后得到IHTMLElement ,但在pEle->get_outerHTML 时出错,unhandled exception : mshtml.dll 0xc0000005 access violation
CHTMLview *pView ;
........get pView pointer....
IWebBrowser2* pWBApp =(IWebBrowser2*)pView->GetApplication();
我检查了两种情况下的内存使用情况,但我不知怎么处理
1种情况下mshtml address 0x42990000-42d03fff
EAX = 00000000 EBX = 09FA0370 ECX = 0C42172C EDX = 0D92EE18(不在mshtml 的内存使用区里.没发现错误)
ESI = 0D92EE94 EDI = 0D92EFA8
EIP = 00485FA2 ESP = 0D92EE94 EBP = 0D92EFB4 EFL = 00000246
2种情况下GetApplication form chtmlview
mshtml address 0x42990000-42d03fff
EAX = 00000000 EBX = 01A371B8 ECX = 00000000 EDX = 42A58288(在mshtml 的内存使用区,出错了)
ESI = 0BC7F8B0 EDI = 0BC7F9A4
EIP = 0047F108 ESP = 0BC7F8B0 EBP = 0BC7F9B0 EFL = 00000246
不知如何处理后面一种情况下的错误,上面的两种方法中其它公用代码是一样的,就是得到IWebBrowser2* 接口指针上不同.现在我必须用后面这种方法,有没人知道我的问题怎么解决.
先谢谢了.
CComBSTR BStrhtml="";
IHTMLElement* pEle;
......获取pEle.....
pEle->get_outerHTML(&BStrhtml); 我用两种方法测试,有一种方法没有错误提示,另一个有错.
1种是. 用CoCreateInstance 创建 IWebBrowserapp 然后得到IHTMLElement 指针,再pEle->get_outerHTML,这样做没错误提示,
IWebBrowser2* pWBApp ;
CoCreateInstance(CLSID_InternetExplorer, NULL,CLSCTX_SERVER,
IID_IWebBrowserApp, (LPVOID*)&pWBApp);
2种是 从CHTMLview 得到IWebBrowser2 ,然后得到IHTMLElement ,但在pEle->get_outerHTML 时出错,unhandled exception : mshtml.dll 0xc0000005 access violation
CHTMLview *pView ;
........get pView pointer....
IWebBrowser2* pWBApp =(IWebBrowser2*)pView->GetApplication();
我检查了两种情况下的内存使用情况,但我不知怎么处理
1种情况下mshtml address 0x42990000-42d03fff
EAX = 00000000 EBX = 09FA0370 ECX = 0C42172C EDX = 0D92EE18(不在mshtml 的内存使用区里.没发现错误)
ESI = 0D92EE94 EDI = 0D92EFA8
EIP = 00485FA2 ESP = 0D92EE94 EBP = 0D92EFB4 EFL = 00000246
2种情况下GetApplication form chtmlview
mshtml address 0x42990000-42d03fff
EAX = 00000000 EBX = 01A371B8 ECX = 00000000 EDX = 42A58288(在mshtml 的内存使用区,出错了)
ESI = 0BC7F8B0 EDI = 0BC7F9A4
EIP = 0047F108 ESP = 0BC7F8B0 EBP = 0BC7F9B0 EFL = 00000246
不知如何处理后面一种情况下的错误,上面的两种方法中其它公用代码是一样的,就是得到IWebBrowser2* 接口指针上不同.现在我必须用后面这种方法,有没人知道我的问题怎么解决.
先谢谢了.
CComQIPtr<IWebBrowser2> pWBApp = pView->GetApplication();其次,如果想访问DOM,没必要从IWebBrowser2开始,可以用pView->GetHtmlDocument()从IHTMLDocument2开始:
CComQIPtr<IHTMLDocument2> pDoc2 = pView->GetHtmlDocument();
还是不行.
IDispatch* papp=pView->GetApplication();
papp->QueryInterface(IID_IWebBrowser2, (void**)pWBApp); pWBApp没有成功??用你上面的方法可以获得接口,但最后get_outerHTML 同样出错
不能直接通过IWebBrowser2或者IHTMLDocument2来获得outerHTML