COleVariant vaUrl="http://www.onlytest.net";
m_ctrlWeb.Navigate2(&vaUrl, &vtMissing, &vtMissing, &vtMissing, &vtMissing);
其中那个vtMissing是用作缺省参数的。
4、然后就是主要的操作了。这些操作都放在OnDownloadCompleteExplorer里。为了方便,我写了几个函数用来完成特定的功能,在具体说明OnDownloadCompleteExplorer中进行的操作之前,先把这几个函数解释一下。
//功能:判断网页里是不是有strName指定的元素
//参数: pobjAllElement:网页中所有元素的集合
// strName:网页中元素的id或name
bool HasItem(IHTMLElementCollection *pobjAllElement,CString strName)
{
CComPtrpDisp;
pobjAllElement->item(COleVariant(strName),COleVariant((long)0),&pDisp);
if(pDisp==NULL)
return false;
else
return true;
}
//功能:在网页的文本框中输入字符串
//参数: pobjAllElement:网页中所有元素的集合
// strName:要编辑的文本框的id或name
// strText:要在文本框中写入的内容
void PutIEText(IHTMLElementCollection *pobjAllElement,CString strName,CString strText)
{
CComPtr pDisp;
pobjAllElement->item(COleVariant(strName),COleVariant((long)0),&pDisp);
CComQIPtr pElement;
if(pDisp==NULL)
{
AfxMessageBox(strName + "没有找到!");
}
else
{
pElement=pDisp;
pElement->put_value(strText.AllocSysString());
}
}
//功能:提交一个网页的Form
//参数: pobjAllElement:网页中所有元素的集合
// strName:可以提交Form的按钮的id或name(也可以直接Form的submit提交)
void SubmitPage(IHTMLElementCollection *pobjAllElement,CString strName)
{
CComPtrpDisp;
pobjAllElement->item(COleVariant(strName),COleVariant((long)0),&pDisp);
CComQIPtrpElement;
if(pDisp==NULL)
{
AfxMessageBox(strName + "没有找到!");
}
else
{
pElement=pDisp;
pElement->click();
}
}
//功能:选中网页中的一个CheckBox (其实就是点击)
//参数: pobjAllElement:网页中所有元素的集合
// strName:要选中的CheckBox的id或name
void CheckItem(IHTMLElementCollection *pobjAllElement,CString strName)
{
CComPtr pDisp;
pobjAllElement->item(COleVariant(strName),COleVariant((long)0),&pDisp);
CComQIPtrpElement;
if(pDisp==NULL)
{
AfxMessageBox(strName + "没有找到!");
}
else
{
pElement=pDisp;
pElement->click();
}
}
使用这几个函数可以很轻松地完成投票操作。下面列出OnDownloadCompleteExplorer中的代码。
另假设投票页面为http://www.onlytest.com/vote.htm,数据提交到http://www.onlytest.com /vote2.asp
void CVoteDlg::OnDownloadCompleteExplorer()
{
// TODO: Add your control notification handler code here
IHTMLElementCollection *objAllElement=NULL;
IHTMLDocument2 *objDocument=NULL;
CString strUrl,strTemp;
strUrl=m_ctrlWeb.GetLocationURL();//得到当前网页的URL
if(strUrl.IsEmpty())
return;
objDocument=(IHTMLDocument2 *)m_ctrlWeb.GetDocument(); //由控件得到IHTMLDocument2接口指针
objDocument->get_all(&objAllElement); //得到网页所有元素的集合