如何获取网页js脚本里input的变量值? 本帖最后由 skyxie 于 2009-11-02 12:43:11 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先得到页面中的所有input元素CComPtr<IHTMLElementCollection> spCollAll;spCollAll = m_spDoc2->get_all(&spCollAll);CComPtr<IDispatch> spDispAllInput;spCollAll->tags(_variant_t(_T("img"), &spDispAllInput);CComQIPtr<IHTMLElementCollection> spCollAllInput = spDispAllInput;2. 对spCollAllInput 集合中的每个item判断name属性是否为SELECT_ID如果是, IHTMLElement::put_value/get_value 就可以了 不需要 IHTMLInputElement接口 IHTMLDocument3::getElementsByName HRESULT getElementsByName( BSTR v, IHTMLElementCollection **pelColl); 还是不行,IHTMLElement接口没有put_value/get_value 这两个方法,我改成IHTMLInputElement就可以编译通过了。但是还是没有得到预期的SELECT_ID的值,得到的是个空字符串。因为在一开始的原始网页里SELECT_ID的值是设为空字符串的(""),所以我想不是这样得到的值只是网页中SELECT_ID的静态初始值,运行js脚本后的动态值怎样得到? CComPtr<IDispatch> pDisp; hr = m_pWB2->get_Document(&pDisp); if (SUCCEEDED(hr)) { CComQIPtr<IHTMLDocument2> pDoc2=pDisp; CComPtr<IHTMLElementCollection> pAll; hr = pDoc2->get_all(&pAll); if (SUCCEEDED(hr)) { LPCOLESTR pszElementID; pszElementID=CComBSTR(lpID); //CComVariant varID = pszElementID; CComVariant varID = _T("input"); CComPtr<IDispatch> pDispItem; CComPtr<IHTMLElement> pElem; hr = pAll->tags(varID, &pDispItem); if (SUCCEEDED(hr)) { CComQIPtr<IHTMLElementCollection> pInputAll=pDispItem; CComVariant varSID = _T("SELECT_ID"); CComPtr<IDispatch> pSELECTItem; hr = pInputAll->item(varSID, CComVariant(0), &pSELECTItem); if (SUCCEEDED(hr) && NULL!=pSELECTItem) { CComPtr<IHTMLInputElement> pSELECTElem; hr = pSELECTItem->QueryInterface(&pSELECTElem); if (SUCCEEDED(hr)) { pSELECTElem->get_value(&CComBSTR(lpValue)); } } } } } 因为我网页里就一个input,所以我就没有判断直接用了 我找到什么原因了,下面这句错了pSELECTElem->get_value(&CComBSTR(lpValue));改成BSTR b;pSELECTElem->get_value(&b);然后再把b转换成想要的字符串类型就可以了 关于如何判断文件是位图文件的问题 需要学习GDI吗? 恩,自己不怎么喜欢他 如何计算屏幕大小? 500分求这样一个类源码。 关于ctabctrl控件的问题? 网上图书馆管理系统怎么做? stdout和stderr怎么反过来了? 4、5星的是回答问题得来的吗? 如何设置edit的换行? 游戏登陆器 游戏辅助 关于图像延迟刷新及鼠标停止滚动判断的问题 一个SOCKET可以用来一边长时间接收数据,一边做心跳么?
CComPtr<IHTMLElementCollection> spCollAll;
spCollAll = m_spDoc2->get_all(&spCollAll);CComPtr<IDispatch> spDispAllInput;
spCollAll->tags(_variant_t(_T("img"), &spDispAllInput);CComQIPtr<IHTMLElementCollection> spCollAllInput = spDispAllInput;
2. 对spCollAllInput 集合中的每个item判断name属性是否为SELECT_ID
如果是, IHTMLElement::put_value/get_value 就可以了 不需要 IHTMLInputElement接口
IHTMLElementCollection **pelColl
);
因为在一开始的原始网页里SELECT_ID的值是设为空字符串的(""),所以我想不是这样得到的值只是网页中SELECT_ID的静态初始值,运行js脚本后的动态值怎样得到?
CComPtr<IDispatch> pDisp;
hr = m_pWB2->get_Document(&pDisp);
if (SUCCEEDED(hr))
{
CComQIPtr<IHTMLDocument2> pDoc2=pDisp;
CComPtr<IHTMLElementCollection> pAll;
hr = pDoc2->get_all(&pAll);
if (SUCCEEDED(hr))
{
LPCOLESTR pszElementID;
pszElementID=CComBSTR(lpID);
//CComVariant varID = pszElementID;
CComVariant varID = _T("input");
CComPtr<IDispatch> pDispItem;
CComPtr<IHTMLElement> pElem;
hr = pAll->tags(varID, &pDispItem);
if (SUCCEEDED(hr))
{
CComQIPtr<IHTMLElementCollection> pInputAll=pDispItem;
CComVariant varSID = _T("SELECT_ID");
CComPtr<IDispatch> pSELECTItem;
hr = pInputAll->item(varSID, CComVariant(0), &pSELECTItem);
if (SUCCEEDED(hr) && NULL!=pSELECTItem)
{
CComPtr<IHTMLInputElement> pSELECTElem;
hr = pSELECTItem->QueryInterface(&pSELECTElem);
if (SUCCEEDED(hr))
{
pSELECTElem->get_value(&CComBSTR(lpValue));
}
}
}
} }
pSELECTElem->get_value(&CComBSTR(lpValue));
改成
BSTR b;
pSELECTElem->get_value(&b);
然后再把b转换成想要的字符串类型就可以了