分享

Delphi向QQ2011窗口发送登录消息

 quasiceo 2014-07-11

名人名言:她应该增进知识。对安托瓦内特来说,的确到了认真读书的时候了。一天两小时不算太多,这会使她机灵些,让她在一天二十四个时的其余二十二小时中更有头脑。——茨威格

今朝的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消息。经测试此猜想正确,发送登录消息成功!


源代码如下: 



 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 Shellute(0""Open""""E:\Program Files\Tencent\QQ\Bin\qq.exe""nilnil,SW_SHOW);
13 repeat
14 begin
15 Sleep(5000);
16 WinHandle:=FindWindowEx(00""TXGuiFoundation""""QQ2011"");
17 Inc(Count);
18 end;
19 until (WinHandle>0or (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.






    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多