开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2541|回复: 6
收起左侧

[图文教程] 【原创】VC++COM编程之截取网页密码框密码

[复制链接]

结帖率:33% (1/3)
发表于 2012-6-27 20:45:58 | 显示全部楼层 |阅读模式   湖南省怀化市
程序实现也就是将网页中的密码框的内容显示到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...............................................................

评分

参与人数 1精币 +3 收起 理由
小磊 + 3 whxydxnl

查看全部评分

结帖率:100% (6/6)
发表于 2012-6-27 20:59:13 | 显示全部楼层   福建省泉州市
沙发945.  哈哈
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2012-6-27 21:08:38 | 显示全部楼层   山东省泰安市
支持~~~{:3_244:}
回复 支持 反对

使用道具 举报

结帖率:84% (21/25)
发表于 2012-6-27 21:42:09 | 显示全部楼层   广东省珠海市
我还有10个帖子没有发,过来逛逛,发发牢骚,找点头绪。。。。。再支持一下!怎么办怎么办。。。还有10个帖子{:3_226:}
回复 支持 反对

使用道具 举报

结帖率:50% (2/4)
发表于 2012-7-1 01:45:47 | 显示全部楼层   广西壮族自治区南宁市
好好ghjkghjghj
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2012-7-1 16:31:35 | 显示全部楼层   广东省广州市
{:3_245:},技术贴要支持啊,菜鸟慢慢看!
回复 支持 反对

使用道具 举报

发表于 2012-8-1 06:42:54 | 显示全部楼层   贵州省安顺市
支持,  只是一直学不会VC
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表