我在BHO(c++ SDK)里面invoke里写的,但是执行的时候,pHTMLElementCollection->item(varIndex,var2,&lDisp)总返回失败 代码是:
case DISPID_DOCUMENTCOMPLETE:
{
//获得当前的URL
BSTR bstr;
mWebBrowser2->get_LocationURL( &bstr );
strurl = OLE2A(bstr);
        //当前页面 操作员登陆系统SUCCESS
        if( strstr(strurl,"10.33.197.45:6500/main.jsp") )
{
CComDispatchDriver pHTMLDispatch;
hr=mWebBrowser2->get_Document(&pHTMLDispatch);
          if (SUCCEEDED(hr) && pHTMLDispatch.p)
         {
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2>pHTMLDocument(pHTMLDispatch);
                         if(pHTMLDocument.p)//if(spHTML)
         {
                    hr=pHTMLDocument->get_all(&pHTMLElementCollection); 
 if(SUCCEEDED(hr) && pHTMLElementCollection.p!=NULL )//获得HTML文本成功
          {
long celem;
                hr=pHTMLElementCollection->get_length(&celem);
if(hr == S_OK)
{
for(int i=0;i<celem;i++)
{
       VARIANT varIndex,var2;
VARIANT vName,vIndex;
                                varIndex.vt=VT_I4;
//varIndex.iVal=i;
var2.vt=VT_I4;
var2.lVal=i;
CComDispatchDriver lDisp; 
pHTMLElementCollection->item(varIndex,var2,&lDisp);
if( lDisp != NULL)
{
m_pBody=pDisp;
BSTR  bstrTagID;
if( m_pBody->get_id(&bstrTagID) == S_OK )
{
if(bstrTagID != NULL)
{
MessageBox(NULL,"m_pBody->get_id(&bstrTagID)==S_OK","ok",MB_OK);
BSTR bstrSrc;
m_pBody->get_innerHTML(&bstrSrc);
char *ch;
ch = OLE2A(bstrSrc);
MessageBox(NULL,ch,"OK",MB_OK);
}
}

}
}
}
           
     }
     }
     }
        }
return S_OK;
break;
}试过几次,pHTMLElementCollection->item(varIndex,var2,&lDisp);总是返回失败;看了一些文章,varIndex var2 网上都是定义的为 CComVariant不知道是不是这个问题,请各位高手帮忙,有空的话可以直接与我联系 QQ 120036721 tel 13656131982,在此小弟谢谢各位了

解决方案 »

  1.   

    参考:
    http://blog.csdn.net/lion_wing/archive/2006/06/02/769742.aspx
      

  2.   

    谢谢,刚试过,head是有了,我想问一下,有什么办法获得 (pElem->get_outerHTML(&strHTML) )strHTML中我所需要的信息,如
    <HTML>
    <HEAD>
    <TITLE>江苏移动业务支撑系统</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"><link href="/css/main.css" rel="stylesheet" type="text/css">
    <script language="javascript"> var userInfo ="操作员:曹金柱(1861982)  镇江地区/镇江计费中心   登录时间:下午19:15:20"; window.status=userInfo;</script>
    如varInfo这个变量的值 紧急求助,希望各位高手帮忙,小弟先谢谢各位 也感谢lion_wing(凤之焚)
      

  3.   

    var  userInfo  =  "操作员:曹金柱(1861982)    镇江地区/镇江计费中心      登录时间:下午19:15:20  ";  window.status=userInfo;  
    就是找到userInfo这个变量的值了??恳求各位高手帮忙??紧急
      

  4.   

    我没有想到一个更好的方法,
    我的想法是获得Script标记间的文本,再进行分析,得到字符串。
      

  5.   

    不知道是否函数实现 取两个字符串之间的内容 eg:var  userInfo  =  "操作员:曹金柱(1861982)    镇江地区/镇江计费中心      登录时间:下午19:15:20  " 串值为以上,取的从串var userInfo = "到第一个"结束的地方的所有字符,请大家再帮我看看。昨天问了其他人,好象delphi和java里面都有的(str1,str2,str3)也就是从str1找str2并结束符为str3之间的字符,在此谢谢各位了