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

Delphi向QQ2011窗口发送登录消息

2020-02-15 17:36 543 查看

目前的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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
axw81540 发布了0 篇原创文章 · 获赞 0 · 访问量 5 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: