首页
社区
课程
招聘
[求助]WIN7 下星号密码查看如何实现?
发表于: 2011-1-26 12:41 6044

[求助]WIN7 下星号密码查看如何实现?

2011-1-26 12:41
6044
1. 创建一个VCL Application工程,打开Form1.pas文件,加入下面的全局变量和鼠标钩子函数。

var
  HookHandle: HHOOK;

function HookProc(code: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  MousePoint: TPoint;
  WindowHandle: THandle;
  WindowStyle: Longint;
begin
  // 获取鼠标位置
  GetCursorPos(MousePoint);

  // 获取包含鼠标的窗口句柄
  WindowHandle := WindowFromPoint(MousePoint);

  // 获取窗口风格
  WindowStyle := GetWindowLong(WindowHandle, GWL_STYLE);

  if TEventMsg(PEventMsg(lParam)^).message = WM_LBUTTONDOWN then
  begin
    // 是否为密码框
    if WindowStyle and ES_PASSWORD <> 0 then
    begin
      // 去掉密码属性
      PostMessage(WindowHandle, EM_SETPASSWORDCHAR, 0, 0);
    end;
  end;

  Result := CallNextHookEx(HookHandle, code, wParam, lParam);
end;需要注意的是,程序中PostMessage(WindowHandle, EM_SETPASSWORDCHAR, 0, 0);只能使用PostMessage,而不能使用SendMessage代替。

2. 在Form1窗体上放下两个Button控件。并在他的单击事件中加入如下代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
  HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, hInstance, 0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  UnhookWindowsHookEx(HookHandle);
end;

这是网上的一篇关于星号密码查看器的文章。获取窗口风格,去掉密码窗口风格。。
针对 WIN7 却无效。
在网上搜索出一些支持WIN7的星号密码查看,不知道都怎么实现的。大牛希望能解惑!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1157
活跃值: (847)
能力值: ( LV8,RANK:150 )
在线值:
发帖
回帖
粉丝
2
GetWindowText
2011-1-26 18:29
0
游客
登录 | 注册 方可回帖
返回
//