命令控制qq自动申请远程控制_代码详解

1 篇文章 0 订阅
1 篇文章 0 订阅

 


话说前一篇:

http://blog.csdn.net/testingba/article/details/8003679

没有成功解决:

2.      控制好了以后,那个程序会老是去激活Aqq窗体,这个有些讨厌,退掉qqctl.exe,又怕中途断了连接不回来。

 

想了两个方法,都有问题,现在彻底解决了问题,可以实现使用场景:

依次发送命令<远程协助>、<确定>(qq2011版)和<申请控制>使得Aqq主动申请受控,当受控后,A端弹出消息框提示:现在可以操作了。在操作过程中,不会再激活Aqq读信息,当操作完毕或者中途网络断开后,程序监测到qq网络链接中断,重新开始监控Aqq窗体,Bqq可以再次发送命令去申请控制Aqq。

 

 

好了,进入正题,说说怎么个搞法:

整个系统的文件清单:

Qqctl.au3:主程序

Qqctl.ini:主程序配套的配置文件

Getcaptureimg.au3:抓屏工具

Getcaptureimg.ini:抓屏工具的配置文件

ImageMagick-6.3.2-Q16:图片的比对命令行工具

 

 

从主程序开讲:

 

主程序有四个主要的函数:

函数一:

功能:抓屏,保存指定窗体的指定区域为图片

FuncfSaveCapImg($title,$x1,$y1,$x2,$y2,$strFile)

详解:

$title:指定窗体的标题,用record录制一下对该窗体的操作,就能看到窗体的准确名称;

$x1,$y1,$x2,$y2:指定窗体的某个区域,打开record,然后点击一下窗体要拷屏区域的左上角($x1,$y1),再点击右下角($x2,$y2),停止录制后,打开看看具体的坐标,然后填入ini文件中;

$strFile:将拷屏的区域保存为图片文件名

 

函数二:

功能:进行图片比较,判断两张图片是否相同

Func fCmpImg( $strExe, $strImg1 , $strImg2,$strOutImg)

详解:

$strExe:图片比较的命令行工具,这里是用的ImageMagick-6.3.2-Q16的compare.exe;

$strImg1:比对的文件一;

$strImg2:比对的文件二;

$strOutImg:比对结果图片文件,这个随便写一个图片文件名称就行了。

这个工具的使用细节参考:

http://blog.csdn.net/testingba/article/details/8011815

 

函数三:

功能:判断当前的qq远程控制连接状态

Func fQQcnt()

详解:

其实这个是执行的dos命令,看看qq进程网络状态:

netstat -ano -P tcp|find /i "qq进程id"|find /i"ESTABLISHED"|find /V ":80 "

进程id是根据ProcessExists("qq.exe")得到的,这里有一个问题,如果有多个qq登录了,它这里只是得到了第一个登录qq的进程id,所以在使用上,必须保证被控qq是第一个登录的。

 

函数四:

功能:得到str2在str1中出现的次数

Func fCntStr( $str1 , $str2 )

详解:这个主要是读取窗体中的命令的

 

 

主程序配置文件qqctl.ini的说明:

 

[section1]

title1="wintitle"        ;#受控窗体标题

x1=315               

y1=65                ;#远程协助的位置x1,y1(相对窗体的坐标,不是绝对坐标)

x2=352

y2=107               ;#远程协助在二级菜单下时,二级菜单的位置x2,y2

x3=484              

y3=426               ;#确定按钮的位置x3,y3(qq2011)

x4=480

y4=420               ;#申请受控按钮的位置x4,y4

 

[section2]

x1=417

y1=391               ;#需要保存区域的左上角

x2=537

y2=469               ;#需要保存区域的右下角

imgFile="C:\b2.jpg"    ;#保存下来的图片名称

 

[section3]

stdimgFile="C:\b1.jpg"    

;#预先使用工具Getcaptureimg.au3保存的已经受控后窗体指定区域的图片,可以想见,section2中的x1,y1,x2,y2必定和Getcaptureimg.ini中的一致

outimgFile="C:\o1.jpg"   ;#结果输出图片文件名,可以随便起

exeFile="C:\ImageMagick-6.3.2-Q16\compare.exe"    ;#进行图片比对的工具名称

 

 

 

工具getcaptureimg的配置文件说明:

[section1]

title1="wintitle"             

;#被抓屏的窗体名称,对应于主程序配置文件中的section1.title

x1=417

y1=391                     ;#需要保存区域的左上角

x2=537

y2=469                     

;#需要保存区域的右下角,对应于主程序配置文件中的section2.x1,y1,x2,y2

imgFile="C:\b1.jpg"          

;#保存下来的图片名称,对应于主程序配置文件中的section3. stdimgFile

 

 

在开始运行主程序之前,需要先抓一副受控窗体的已经受控时的显示区域的图片

001.jpg

 

 

主程序详解:

读出qqctl.ini中的配置;

WHILE TRUE

       IFQQ没连接 THEN

              监控受控qq窗体

              分析得到各个命令的个数

       ELSE    ;QQ连接上了

              IF还没有受控 THEN

                     保存当前窗口指定区域为图片文件

              ENDIF

 

              IF比对图片发现窗口已经受控THEN

                     提示用户可以操作了

              ELSE    ;虽然qq连接上了,但是比对图片发现窗口还没有受控

                     继续监控受控qq窗体

                     分析得到各个命令的个数,这里其实就是在等<申请受控>命令

              ENDIF

       ENDIF

 

       IF<远程协助>子串的个数比上次多 THEN

              点击远程协助

       ENDIF

 

       IF<确定>子串的个数比上次多 THEN

              点击确定

       ENDIF

 

       IF<申请受控>子串的个数比上次多 THEN

              点击申请受控

       ENDIF

 

WEND

 

 

如果要运行代码,需要安装autoi,autoit可以将代码编译为exe,在wins机器上拷贝使用。

 

Autoit3安装程序:

http://download.csdn.net/detail/testingba/4583878

 

录制autoit键盘鼠标操作脚本工具:

http://download.csdn.net/detail/testingba/4583600

 

图片比对工具< ImageMagick-6.3.2-Q16安装目录>

http://download.csdn.net/detail/testingba/4591614

使用细节参考:

http://blog.csdn.net/testingba/article/details/8011815

 

源码链接:

http://download.csdn.net/detail/testingba/4598550

包括:

Qqctl.au3:主程序

Qqctl.ini:主程序配套的配置文件

Getcaptureimg.au3:抓屏工具

Getcaptureimg.ini:抓屏工具的配置文件

 

 

好了,收摊!

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Testingba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值