|
程序实现也就是将网页中的密码框的内容显示到Edit控件中。
操作如下:
1、建立一个Dialog Based 工程
2、创建完毕之后,右击对话框,选择 Insert ActiveX Control 插入WebBroswer这个网页浏览框控件
3、在OnInitDialog事件中添加如下代码:
m_web.Navigate(_T("http://www.cctry.com"),NULL,NULL,NULL,NULL);//m_web网页浏览框控件绑定的变量
4、添加一个按钮,2个Static静态文本控件,2个Edit文本框,双击按钮,进入其OnBnClickedButton1事件中
5、 ::CoInitialize(NULL);//初始化COM支持
CComQIPtr < IHTMLDocument2,&IID_IHTMLDocument2 > spDoc =m_web.get_Document();//声明IHTMLDocument2接口
TestFunc(spDoc);
::CoUninitialize();//释放COM支持
注意,需要引入mshtml.h这个头文件
void CCctryLogDlg::TestFunc(IHTMLDocument2 * pIhtmldocu)
{
if( !pIhtmldocu )
{
return;
}
HRESULT hr;
CComBSTR bstrTitle;
pIhtmldocu->get_title( &bstrTitle ); //取得文档标题
CComQIPtr< IHTMLElementCollection > spElementCollection;
hr = pIhtmldocu->get_forms( &spElementCollection ); //取得表单集合
if ( FAILED( hr ) )
{
return;
}
long nFormCount=0; //取得表单数目
hr = spElementCollection->get_length( &nFormCount );
if ( FAILED( hr ) )
{
return;
}
for(long i=0; i<nFormCount; i++)
{
IDispatch *pDisp = NULL; //取得第 i 项表单
hr = spElementCollection->item( CComVariant( i ), CComVariant(), &pDisp );
if ( FAILED( hr ) ) continue;
CComQIPtr< IHTMLFormElement > spFormElement = pDisp;
pDisp->Release();
long nElemCount=0; //取得表单中 域 的数目
hr = spFormElement->get_length( &nElemCount );
if ( FAILED( hr ) ) continue;
USES_CONVERSION;
for(long j=0; j<nElemCount; j++)
{
CComDispatchDriver spInputElement; //取得第 j 项表单域
hr = spFormElement->item( CComVariant( j ), CComVariant(), &spInputElement );
if ( FAILED( hr ) ) continue;
CComVariant vID, vType,vAl;
hr = spInputElement.GetPropertyByName( L"name", &vID );
if( FAILED( hr ) ) continue;
hr = spInputElement.GetPropertyByName( L"type", &vType );
if( FAILED( hr ) ) continue;
hr = spInputElement.GetPropertyByName( L"value", &vAl);
if( FAILED( hr ) ) continue;
LPCTSTR lpVID = vID.bstrVal ?
OLE2CT( vID.bstrVal ) : _T("NULL");
LPCTSTR lpType = vType.bstrVal ?
OLE2CT( vType.bstrVal ) : _T("NULL");
LPCTSTR lpVal = vAl.bstrVal ?
OLE2CT( vAl.bstrVal ) : _T("NULL");
CString strID(lpVID), strType(lpType);
if (strID.CompareNoCase(_T("username")) == 0 && strType.CompareNoCase(_T("text")) == 0){
CString name(vAl);
UpdateData(TRUE);
m_name=name;
UpdateData(FALSE);
}else{if (strID.CompareNoCase(_T("password")) == 0 && strType.CompareNoCase(_T("password")) == 0){
CString pass(vAl);
UpdateData(TRUE);
m_pass=pass;
UpdateData(FALSE);
}
}
}
}
}
The end.................................Two...............................................................
|
评分
-
查看全部评分
|