我在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,在此小弟谢谢各位了
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,在此小弟谢谢各位了
解决方案 »
- 你觉得VC会淘汰吗???
- 3年javaer,求入门教程
- error C2143: syntax error : missing ';' before '*'
- 200分求麻将、纸牌类游戏源代码!
- 请各位帮帮忙忙,谁有foxbase+语言,请发给我
- 为什么我的VC++多线程程序的CPU资源使用率总是100%?高分请教各位大虾了!!!
- 自绘按钮显示不出来
- 内存管理和分配的疑问?
- VC如此庞大,如何减少对已掌握的知识的遗忘?API函数、控件、网络.........该学习的实在太多了,各位有没有觉得以前掌握的知识在记忆中慢慢的丢失,请各位谈谈看法和有何妙方。
- 如何在任务栏上隐藏应用程序的图标?SetWindowLong??
- 菜鸟级问题: 在VC++界面的某个按钮上,实现打开文件操作
- 工具栏上的各项可否显示文字?
http://blog.csdn.net/lion_wing/archive/2006/06/02/769742.aspx
<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(凤之焚)
就是找到userInfo这个变量的值了??恳求各位高手帮忙??紧急
我的想法是获得Script标记间的文本,再进行分析,得到字符串。