现在有很多软件都有密码输入对话框.上面显示的是*标识符.如果想查看其字符串并不难.下面我们就用delphi使用api函数来开发一个查看其密码字符的程序吧.
问题一:当鼠标移动到密码对话框处时查找出此处的控件句柄.这样才可以对这个对象进行操作.具体实现如下: 【程序编程相关:一個可以顯示CheckBox或Radio】
功能:当鼠标移动到密码处就会在程序的指定地方显示其字符串. 【推荐阅读:FAQ:如何访问WebBrowser的滚】
【扩展信息:用数据表创建树 】function gethwnd(): thandle;
var hwnd: thandle; wndpoint: tpoint; begin try getcursorpos(wndpoint); //获取鼠标指针 hwnd:=windowfrompoint(wndpoint); result:=wndpoint except result:=0; end; end;问题二: 根据获取的句柄得到此对象的密码字符.具体实现如下:
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;这样主要问题都解决了.还可以使用getclassname,getwindowtext等api函数将此对象的类.标题等都读出来.以下是源代码,在delphi6.0+winxp测试通过,仅供参考.
{-----------------------------pas内容--------------------------------------} unit getwnd;interface
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, stdctrls, extctrls, menus;type
tform1 = class(tform) label1: tlabel; label2: tlabel; ... 下一页