读书人

VC WebBrowser2 控件有关问题

发布时间: 2012-03-19 22:03:04 作者: rapoo

VC WebBrowser2 控件问题
vc的WebBrowser和vb的WebBrowser是不是一样的,我想在vc的WebBrowser控件里模拟网页操作,在网上找了半天,大多都是vb的用法,比如下面的vb用法:
For i = 0 To WebBrowser1.Document.All.length - 1
If WebBrowser1.Document.All.Item(i, 0).Name = "submit1" Then
WebBrowser1.Document.All.Item(i, 0).Click
Exit For
End If
Next
在vc里要怎么来实现这样的模拟点击

[解决办法]
贴部分代码供你参考:
IDispatch* pDispDocument;
hr = pBrowser->get_Document(&pDispDocument);
if (FAILED(hr))
{
continue;
}
IHTMLDocument2* pHTMLDocument2;
hr = pDispDocument->QueryInterface(IID_IHTMLDocument2,
(void**)&pHTMLDocument2);
if (FAILED(hr))
{
pDispDocument->Release();
continue;
}

//get element
IHTMLElementCollection* pColl = NULL;
hr = pHTMLDocument2->get_all(&pColl);
if (FAILED(hr))
{
pHTMLDocument2->Release();
pDispDocument->Release();
continue;
}

long lNumber = 0;
hr = pColl->get_length(&lNumber);
if (FAILED(hr))
{
pColl->Release();
pHTMLDocument2->Release();
pDispDocument->Release();
continue;
}

VARIANT varID;
varID.vt = VT_UINT;
VARIANT varIdx;
varIdx.vt = VT_UINT;
IDispatch *pDisElement;
for (long i = 0; i < lNumber; i++)
{
varID.lVal = i;
hr = pColl->item(varID, varIdx, &pDisElement);
if (FAILED(hr))
{
continue;
}

IHTMLElement* pElem;
hr = pDisElement->QueryInterface(IID_IHTMLElement, (void**)&pElem);
if (FAILED(hr))
{
pDisElement->Release();
continue;
}

BSTR className, tagName;
pElem->get_tagName(&tagName);
pElem->get_className(&className);
string strTagName = BSTR2string(tagName);
string strClassName = BSTR2string(className);
if ("INPUT" == strTagName)
{
string strAttribute = "type";
VARIANT ret;
BSTR attribute = string2BSTR(strAttribute);
hr = pElem->getAttribute(attribute, 0 , &ret);
if (ret.vt == VT_BSTR)
{
strAttribute = BSTR2string((BSTR)ret.pcVal);
}
if (SUCCEEDED(hr) && "image" == strAttribute)
{
IHTMLInputImage *pInputImage;
hr = pDisElement->QueryInterface(
IID_IHTMLInputImage,
(void **)&pInputImage);
if (SUCCEEDED(hr))
{
hr = pInputImage->get_src(&attribute);
strAttribute = BSTR2string(attribute);
if (SUCCEEDED(hr) && -1 != strAttribute.find("images/dl.gif"))
{
pElem->click();
}
pInputImage->Release();
}
}
}
[解决办法]


直接用 CDHtmlDialog 很简单很方便
[解决办法]
纯帮楼主顶下,我也想知道
[解决办法]
CDHtmlDialog

你查 Msdn 不久好了了吗,

太多成员了都

随便拉个 就很方便

搞页面相应也超easy
[解决办法]

探讨
是CHtmlView吧

[解决办法]
VS2008

读书人网 >VC/MFC

热点推荐