HRESULT hr;
hr=pfObjectFromLresult(lRes,IID_IHTMLDocument,0,(void**)&spDoc);
if ( SUCCEEDED(hr) ){
CComPtr
CComQIPtr
spDoc->get_Script( &spDisp );
spWin = spDisp;
spWin->get_document( &pDoc2 );
}
}
//因为WM_HTML_GETOBJECCT非Windows标准消息,得手动注册
UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
::SendMessageTimeout( hWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
if ( pfObjectFromLresult != NULL ){
HRESULT hr;
hr=pfObjectFromLresult(lRes,IID_IHTMLDocument,0,(void**)&spDoc);
if ( SUCCEEDED(hr) ){
CComPtr
CComQIPtr
spDoc->get_Script( &spDisp );
spWin = spDisp;
spWin->get_document( &pDoc2 );
}
}
}[cpp] view plaincopyprint ::FreeLibrary(hInst);
return pDoc2;
}
::FreeLibrary(hInst);
return pDoc2;
} 接下来就是根据鼠标点击位置判断是否单击登录了
[cpp]
BOOL CGetIhtmlDlg::CheckSubmit(IHTMLDocument2* pDoc2,POINT pt)
{
if(pDoc2==NULL)return FALSE;
CComPtr
HRESULT hr=pDoc2->elementFromPoint(pt.x,pt.y,&pElement);
if(SUCCEEDED(hr))
{
BOOL CGetIhtmlDlg::CheckSubmit(IHTMLDocument2* pDoc2,POINT pt)
{
if(pDoc2==NULL)return FALSE;
CComPtr
HRESULT hr=pDoc2->elementFromPoint(pt.x,pt.y,&pElement);
if(SUCCEEDED(hr))
{ [cpp] view plaincopyprint //HTML中登录按钮有两种方式和
//HTML中登录按钮有两种方式和
//如果不是第一种按钮,判断第二种
CComPtr
hr=NULL;
hr=pElement->QueryInterface(IID_IHTMLButtonElement,(void**)&pButtonElement);
if(SUCCEEDED(hr))
{
CComBSTR type;
hr=pButtonElement->get_type(&type);
if(SUCCEEDED(hr))
{
if(type==_T("submit"))
return TRUE;
}
}
}
return FALSE;
}第三步:根据获得到的IHTMLD