浏览器密码去星号 浏览器显示密码的方法

东坡下载 2015年12月31日 17:44:00

      星号密码查看工具大家都用过吧,现在我们自己来写个超级简单的。其实密码框是一个Windows的一个子窗口,显示星号是因为密码框设置了EM_SETPASSWORDCHAR属性,只要我们把密码框的EM_SETPASSWORDCHAR属性给去掉那么密码就会以明文显示了,我们可以给程序发送消息去掉EM_SETPASSWORDCHAR属性。通过安装鼠标钩子监视鼠标动作,如果用户单击的是密码框那么就发送一个去除密码属性的消息。 
      本文使用的编程工具为VC6.0,具体实现步骤和代码如下: 
      1.生成一个基于对话框的程序pass。打开passDlg.cpp,加入下面的全局变量和鼠标钩子函数。 
      HHOOK g_hHook = NULL;//全局钩子函数句柄 
      //鼠标钩子函数 
      LRESULT CALLBACK HookProc( int code, WPARAM wParam,LPARAM lParam ) 
      { 
      HWND hwnd; 
      POINT point; 
      GetCursorPos(&point);//得到鼠标位置 
      hwnd=::WindowFromPoint(point);//得到包含鼠标的窗口句柄 
      long nStyle=::GetWindowLong(hwnd,GWL_STYLE);// 得到窗口风格 
      文/德州科技职业学院 冷风 
      EVENTMSG *event=(EVENTMSG *)lParam; 
      if(event->message==WM_LBUTTONDOWN)//是否为鼠标左键 
      { 
      if(nStyle & ES_PASSWORD)//是否为密码框 
      { 
      ::PostMessage(hwnd, EM_SETPASSWORDCHAR,0,0);//去掉密码属性 
      } 
      } 
      return CallNextHookEx(g_hHook,code,wParam,lParam); 
      } 
      需要注意的是,程序中::PostMessage(hwnd, EM_SETPASSWORDCHAR,0,0); 
      只能是PostMessage而不能用SendMessage代替。 
      2.添加“开始探测”按钮及响应函数OnOK()在函数中安装钩子 
      void CPassDlg::OnOK() 
      { 
      g_hHook=SetWindowsHookEx(WH_JOURNALRECORD,HookProc,GetModuleHandle(NULL),0); 
      //安装钩子 
      } 
      钩子的第三部分使用GetModuleHandle(NULL)意为把自己做为保存钩子的DLL 
      3.添加“取消退出”按钮及响应函数OnExit() 在函数中卸载钩子 
      void CPassDlg::OnExit() 
      { 
      if(g_hHook) 
      UnhookWindowsHookEx(g_hHook);//卸载钩子 
      exit(0); 
      } 
      现在就完工了,打开我们的程序,按下“开始探测”再打开需要输入密码的程序试试,是不是以明文显示了?用这个小程序可以搞定系统的密码设置,outlook或防范不严的程序密码,但对有专门防范的程序就不行了比如新版QQ。