自己写了一个可以显示普通应用程序文本框内容的程序,但不知道如何显示网页中文本框(比如密码框)的内容。请问大家能否帮忙搞定。下面是我的代码:var
  Fmain: TFmain;
  hwnd:THandle;
  point:TPoint;
  wndcaption:array[0..255] of char;
  wndtext:array[0..255] of char;
  wndclass:array[0..255] of char;implementationuses Uabout;{$R *.dfm}function getpass(var hwnd: thandle): string;
var
  passbuf: integer;
  passlong: longint;
  passText: PChar;
begin
  passlong:=SendMessage(hwnd,WM_GETTEXTLENGTH,0,0)+1; //获取此对象的长度
  GetMem(passText,passlong); //开辟一个内存区。存放数据长度为passlong
  passbuf:=LongInt(passtext); //获取此数据区的首地址
  SendMessage(hwnd,WM_GETTEXT,passlong,passbuf); //发送消息让此对象将密码数据存入首地址为passbuf的数据区。存入长度为passlong
  result:=passtext;
end;procedure TFmain.Label1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  GetCursorPos(point);
  hwnd:=WindowFromPoint(point);
  edit1.Clear;
  edit1.Text:=getpass(hwnd);//显示密码明文
end;end.

解决方案 »

  1.   

    网页的密码框内嵌在Webbrowser当中,没法直接获得,楼主可以参考Spy++的写法
      

  2.   

    网页中的文本框和窗口文本框不是一个概念。网页中的文本框只是一个HTML元素。针对IE浏览器来说(包括基于IE的国产马甲浏览器,如Maxthon,360之类的),首先你要获取到网页窗口的句柄,然后再获取到HTML页面的接口,再通过枚举Body元素的子元素或者根据ID/Name查找到这个文本框,最后获取文本框的文本或HTML代码。这个过程相对复杂一点,但是并不难。