如何通过IHTMLElement取得页面上<input type=text name=inputName1 id=inputName >name?name=inputName1 如何获取呢?
解决方案 »
- SendMessage等就等呗 我弹个提示框 怎么妨碍send等待了?
- 如何连续抓图并在Picture控件显示?
- 有没有非阻塞版本的MessageBox(非模态版本的MessageBox)
- MFC按钮控件函数
- 求助,关于非双缓冲贴图和全屏重绘
- 求,VC中,查找内存泄漏工具
- [MVP] 哇! 2004年新一届MVP出来了,哪个兄弟告诉我,哪一个是薄荷,小弟我真的很崇拜他!!!
- 怎样将网页中的%xx%xx的字符串转换为一般字符串?谢谢
- 关于这个实例得得问题:
- 菜鸟问题,请各位高手指点一下
- 请教大家,我想设计一个模拟车削加工的3D软件,请大家指点用什么软件开发?
- 有没有关于绑定IP地址和MAC的方法,在线等.
不行的话可以利用IHTMLElement的QueryInterface方法获取IHTMLInputElement指针。IHTMLInputElement里面有name的专用操作函数
BOOL CSpyIEEx::LoadData(IHTMLDocument2 *pDoc2,UINT CryptAppID)
{
////////////////////////////////////////////////////////////////
APPDATA_PTR pAppdata=g_SecureEntry.Find(CryptAppID);
if(pAppdata == NULL)
return 0;
if(pDoc2==NULL)
return 0;
IHTMLElementCollection *pColl=NULL;
CComPtr<IHTMLElement> pElement;
pDoc2->get_body(&pElement);
if(pElement==NULL)
return 0;
{
HRESULT hr=pDoc2->get_all(&pColl);
if(SUCCEEDED(hr) && pColl!=NULL)
{
/////////////////////////////////////////
long lcount = 0;
pColl->get_length(&lcount);
for(int i=0;i<lcount;i++)
{
CComVariant index;
index.vt=VT_I4;
index.intVal=i;
CComPtr<IDispatch> disp;
pColl->item(index,index,&disp);
if(disp==NULL)
hr=E_FAIL;
else
{
//////////////////////////
CComPtr<IHTMLInputTextElement> pPwdElement;
hr=disp->QueryInterface(IID_IHTMLInputTextElement,
(void**)&pPwdElement);
if(SUCCEEDED(hr))
{
CComBSTR type,name;
hr=pPwdElement->get_type(&type);
if(SUCCEEDED(hr))
{
//set edit text
if(type==_T("text") || type ==_T("password"))
{
pPwdElement->get_name(&name);
CString name1(name.m_str);
for(ULONG j=0; j< pAppdata->size; j++)
{
//从文本中取得值
CString strname,strvalue;
CString Data(pAppdata->fieldptr[j].value);
int nMid=Data.Find("\t");
if(nMid != -1)
{
strname=Data.Left(nMid);
strvalue=Data.Mid(nMid+1);
}
if(strname == name1)
{
CComBSTR value;
value.Append(strvalue);
hr=pPwdElement->put_value(value);
}
}
}
}
}
}
}
pColl->Release();
}
}
pColl->Release();
return 1;
}