Delphi向QQ2011窗口发送登录消息

目前的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
4 Windows,ShellAPI,Messages;
5 {$R *.Res}
6
7 var
8 WinHandle:Integer=0;
9 Count:Integer=0;
10
11 begin
12 ShellExecute(0,'Open','E:\Program Files\Tencent\QQ\Bin\qq.exe',nil,nil,SW_SHOW);
13 repeat
14 begin
15 Sleep(5000);
16 WinHandle:=FindWindowEx(0,0,'TXGuiFoundation','QQ2011');
17 Inc(Count);
18 end;
19 until (WinHandle>0) or (Count>200);
20 if WinHandle>0 then
21 begin
22 PostMessage(WinHandle,WM_LBUTTONDOWN,$00000001,$00FD013A);
23 PostMessage(WinHandle,WM_LBUTTONUP,$00000000,$00FD013A);
24 end;
25 end.

本文章及程序源码旨在分析技术,省去手动登录多个QQ的麻烦,不含有任何恶意破坏和攻击的企图。 


 

转载于:https://www.cnblogs.com/KeyWolf/archive/2011/12/04/2275290.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi实现的QQ自动聊天功能,用法介绍: 打开QQ聊天室, 可以一号开多个聊天室,也可以多号进一个聊天室.然后点自动检测,然后用打开文本选择你要发送的信息当然也可以直接写信息在文本窗口内,最后点开始发送,默认时间   为30秒发送一次.可以根据需要自己调整。详细用发介绍:   工具条按钮介绍:    进程窗口按钮    点击后显示进程窗口。    文本窗口按钮    点击后显示要发送的文本。    打开按钮    点击后显示进程窗口。    打开文本按钮    点击后选择要打开的文本文件。    开始/停止发送按钮    开始或暂停发送消息。    内容重复按钮    一次总循环中发送内容相同。总循环一次文本换一行。    内容递增按钮    进程跳转一次文本内容换一行。    删除进程按钮    删除列表中选中的进程。    自动检测按钮    自动检测当前QQ聊天室里的输入框进程。   时间行号控制板说明    总循环时间    默认为30秒用户可以在1-1000秒内定义。    间隔发送时间    用户不可以定义,随总循环时间和进程多少而计算。    间隔发送时间=总循环时间÷列表中进程数量。    行号显示与指定行号按钮    行号显示“第?行”为当前进程正在发送的文本行。    指定行号按钮与行号显示紧挨在一起,点击后将使当前发送位置跳转到文本窗口里光标所在行,这个    功能使用户自己选择从哪一行开始发送。    定义进程请用F12说明    手动进程定义,将鼠标移动到你要自动发送消息的聊天室输入框(输入框不需要得到焦点)然后按F12,转回QQ聊神的进程窗口可以就可以看到你定义的进程了.用这种方法可以给线上好友自动发消息,但是需要把   聊天模式改为按回车发送信息.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值