您的位置:首页 > 编程语言 > Delphi

Delphi向QQ2011窗口发送登录消息

2012-01-16 04:17 288 查看
======================================================

注:本文源代码点此下载

======================================================

目前的qq2011版本中,其登陆界面上除了qq号输入框和密码输入框,其他的的按钮都是绘图绘上去的,均无窗口句柄。
qq登录窗口的窗口类为'txguifoundation',窗口标题为'qq2011'。
qq账号输入框的窗口类为'txedit',窗口标题为空,密码输入框的窗口类为'edit',窗口标题是动态的'a~z'。
由于登陆界面的【登录】按钮无窗口句柄,因此无法向按钮发送消息,由此猜想其界面的所有操作均是通过特定消息来操作的。
但是向登录窗口发送wm_lbuttondown和wm_lbuttonup消息来模拟鼠标点击登录按钮的操作无任何反应。
通过spy++监测qq2011登录过程中的消息流发现,其消息基本都是直接发送至登录窗口的,所以逐条查看带有wm_lbuttondown
和wm_lbuttonup消息的地方 ,并发现一组 wm_lbuttondown、 wm_lbuttonup ,查看消息属性发现wm_lbuttondown
消息中的wparam参数为$00000001,lparam参数为$00fd013a,wm_lbuttonup消息的wparam参数为$00000000,lparam参数为$00fd013a。
因此猜想模拟鼠标点击登录按钮的消息中, lparam参数为$00fd013a代表这是个用于登录按钮的wm_lbuttondown或wm_lbuttonup消息,而
wparam参数为$00000001、 $00000000 正好区分了 wm_lbuttondown、wm_lbuttonup消息。经测试此猜想正确,发送登录消息成功!
经反复监测鼠标点击登录按钮的消息流发现wm_lbuttondown、wm_lbuttonup的lparam参数是一个范围值并非固定值,除了$00fd013a,还有
$00f80137等等等~具体范围木有时间去测试确定了~
源代码如下:
1 program onekeyrun;
2
3 uses
4windows,shellapi,messages;
5 {$r *.res}
6
7 var
8winhandle:integer=0;
9count:integer=0;
10
11 begin
12shellexecute(0,'open','e:\program files\tencent\qq\bin\qq.exe',nil,nil,sw_show);
13repeat
14begin
15sleep(5000);
16winhandle:=findwindowex(0,0,'txguifoundation','qq2011');
17inc(count);
18end;
19until (winhandle>0) or (count>200);
20if winhandle>0 then
21begin
22postmessage(winhandle,wm_lbuttondown,$00000001,$00fd013a);
23postmessage(winhandle,wm_lbuttonup,$00000000,$00fd013a);
24end;
25 end.
本文章及程序源码旨在分析技术,省去手动登录多个qq的麻烦,不含有任何恶意破坏和攻击的企图。

======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: