哥的电脑被盗,房友软件需要重新安装,一如既往的安装发现:
神奇的房友软件在使用IP地址访问的时候,需要输入一个啥注册码,
神奇的注册码正好只是6位数字,我费力的写了一个自动输入软件并在2个小时就完成注册,
突然发现使用机器名登陆,根本不用注册码,
我心都悔足了,算了,就当我重新学习windows的消息机制吧.
var
windowsHandle,errDlghandle : integer;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
hd2,hdtext,hdbutton : integer;
//窗口句柄, 注册码 确定按钮
ii,k,j : integer;
tmpstr : string;
dt : tdatetime;
function callbackproc(H:HWnd;lparam:longint):Boolean;stdcall;
var
str:array [1..255] of char;
ii : integer;
begin
getclassname(h,@str,255);
if (strpas(@str)='#32770') and (GetWindow(h, GW_OWNER)=windowsHandle ) then
begin
errDlgHandle := h;
result:=false;
exit;
end;
result:=true;
end;
begin
windowsHandle := findwindow(nil,'验证码验证');
//找框架
j := findwindowex(windowsHandle,0,'ThunderRT6Frame',nil);
//找机器码
k := findwindowex(j,0,'ThunderRT6TextBox',nil);
//找到目标控件
hdtext := getwindow(k,GW_HWNDNEXT);
//查找确定按钮
hdbutton := findwindowex(windowsHandle,0,'ThunderRT6CommandButton','确定');
if windowsHandle <= 0 then exit;
for ii := 120263 to 999999 do
begin
tmpstr := '';
if ii > 99999 then tmpstr := inttostr(ii)
else if ii < 10 then tmpstr := '00000' + inttostr(ii)
else if ii < 100 then tmpstr := '0000' + inttostr(ii)
else if ii < 1000 then tmpstr := '000' + inttostr(ii)
else if ii < 10000 then tmpstr := '00' + inttostr(ii)
else if ii < 100000 then tmpstr := '0' + inttostr(ii);
//输入验证码
self.Caption := '输入验证码' +tmpstr;
//设置文本
sendmessage(hdtext,WM_SETTEXT,256,integer(tmpstr));
//按下确定按钮
postmessage(hdbutton,bm_click,0,0);
//查找错误对话框 errDlghandle
errDlghandle := 0;
Enumwindows(@callbackproc,0);
while errDlghandle = 0 do
begin
form1.Memo1.Lines.add('请检查是否注册码就是:' + tmpstr + '(如果不是,请手动点击确定按钮)');
application.ProcessMessages;
Enumwindows(@callbackproc,0);
postmessage(hdbutton,bm_click,0,0);
end;
//关闭错误对话框
sendmessage(errDlghandle,WM_CLOSE,0,0);
end;
end;