DLL中调用IHTMLDocument2Ptr pDoc的Write出错的原因?先解决着,立即给分!谢谢!

taianmonkey 2008-12-08 10:21:59
MSHTML::IHTMLDocument2Ptr pDoc;
MSHTML::IHTMLDocument3Ptr pDoc3;
MSHTML::IHTMLElementCollectionPtr pCollection;
MSHTML::IHTMLElementPtr pElement;

HRESULT hr = CoCreateInstance(CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, (void**)&pDoc);

//put the code into SAFEARRAY and write it into document
SAFEARRAY* psa = SafeArrayCreateVector(VT_VARIANT, 0, 1);
VARIANT *param;
bstr_t bsData = lpFormComment;
hr = SafeArrayAccessData(psa, (LPVOID*)¶m);
param->vt = VT_BSTR;
param->bstrVal = (BSTR)bsData;

hr = m_pDoc->write(psa);
hr = m_pDoc->close();

SafeArrayDestroy(psa);
...全文
171 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
e7844 2009-03-27
  • 打赏
  • 举报
回复
webbrowser2还没初始化就写,就会崩溃

在写之前先m_ie.Navigate("about:blank",NULL,NULL,NULL,NULL);

然后约600多毫秒之后再写
muxiaozhou 2009-03-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shinbo 的回复:]
CoCreateInstance 有没有调用成功
在此之前先调用一下 CoInitialize( NULL );
[/Quote]
我也遇到这个问题了,试了这个方法可以了,加在MSHTML::IHTMLDocument2Ptr pDoc; 这个前面
ToperRay 2008-12-12
  • 打赏
  • 举报
回复
try

catch

看不出来错误信息吗?

ahhshan 2008-12-09
  • 打赏
  • 举报
回复
mark
filec75 2008-12-09
  • 打赏
  • 举报
回复
mark
shinbo 2008-12-09
  • 打赏
  • 举报
回复
CoCreateInstance 有没有调用成功
在此之前先调用一下 CoInitialize( NULL );
taianmonkey 2008-12-08
  • 打赏
  • 举报
回复
MSHTML::IHTMLDocument2Ptr pDoc;
MSHTML::IHTMLDocument3Ptr pDoc3;
MSHTML::IHTMLElementCollectionPtr pCollection;
MSHTML::IHTMLElementPtr pElement;

//HRESULT hr = CoCreateInstance(CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, (void**)&pDoc);

//put the code into SAFEARRAY and write it into document
SAFEARRAY* psa = SafeArrayCreateVector(VT_VARIANT, 0, 1);
VARIANT *param;
bstr_t bsData = lpFormComment;
hr = SafeArrayAccessData(psa, (LPVOID*)¶m);
param->vt = VT_BSTR;
param->bstrVal = (BSTR)bsData;

hr = m_pDoc->write(psa);
hr = m_pDoc->close();

SafeArrayDestroy(psa);
taianmonkey 2008-12-08
  • 打赏
  • 举报
回复
就在m_pDoc->write(psa); 上崩溃了,根本不知道为什么?看样子是内存溢出了!
xiang_yun 2008-12-08
  • 打赏
  • 举报
回复
建议楼主查看hr = m_pDoc->write(psa);
返回的hr值,可以通过返回值判断出错的信息
另外前面对参数的操作是否成功,都加个判断,就知道出错在那里了

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧