处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突 。请问为什么??

时间:2022-07-26 10:44:51
webbrowse.Navigate("H:\\net\\html.htm",NULL,NULL,NULL,NULL);
IHTMLDocument2 *pdoc;
_variant_t myvariant(RGB(100,12,244));
IDispatch *dispatch=webbrowse.get_Document();
dispatch->QueryInterface(IID_IHTMLDocument2,(void**)&pdoc);
pdoc->put_bgColor(myvariant);
BSTR p;

IHTMLElement *body;


         /*pdoc->get_fileSize(&p);
CString string(p);
MessageBox(string,0,MB_OK);*/

pdoc->get_body(&body););
         body->get_className(&p);//错误处
         CString string1(p);
MessageBox(string1,0,MB_OK);


加上我用注解框起来的内容运行就正确。如果去掉(调试)就显示0x00413a93 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突 。请问为什么??

9 个解决方案

#1


BSTR 是一个指针,没有空间;在get_fileSize(&p)时,get_fileSize会自动分配空间,所以在get_className不会出错;而get_className自己不会主动分配空间。

#2


你是怎么知道会自动分配和不分配的,不会是自己定义的把?

#3


精典,学习,。。。。。

#4


gzgz!

#5


webbrowse.Navigate只是通知WEBBROWSE开始去打开文档,立即会返回的。

楼主可以在后面写一段消息循环等待。。。
类似这样。。

  while(webBrowser->Busy)
      Application->ProcessMessages();
呵呵。。当然,这是BCB代码,VC的写只是多几句而已。。。

#6


使用了未初始化的指针

#7


mark

#8


内存紊乱,指针指向了非法地址。

#9


navigate 之后不能对document立刻处理, 不能做任何事情,因为这个时候它还没完成

要在DocumentComplete里做你想做的事情

#1


BSTR 是一个指针,没有空间;在get_fileSize(&p)时,get_fileSize会自动分配空间,所以在get_className不会出错;而get_className自己不会主动分配空间。

#2


你是怎么知道会自动分配和不分配的,不会是自己定义的把?

#3


精典,学习,。。。。。

#4


gzgz!

#5


webbrowse.Navigate只是通知WEBBROWSE开始去打开文档,立即会返回的。

楼主可以在后面写一段消息循环等待。。。
类似这样。。

  while(webBrowser->Busy)
      Application->ProcessMessages();
呵呵。。当然,这是BCB代码,VC的写只是多几句而已。。。

#6


使用了未初始化的指针

#7


mark

#8


内存紊乱,指针指向了非法地址。

#9


navigate 之后不能对document立刻处理, 不能做任何事情,因为这个时候它还没完成

要在DocumentComplete里做你想做的事情