读书人

下令控制qq自动申请远程控制

发布时间: 2012-09-23 10:28:11 作者: rapoo

命令控制qq自动申请远程控制


适应环境:

操作系统:win7 家庭版,winxp

Qq版本:Qq2011,qq2011(安全保护)

原始需求:

因为公司的网络安全非常的严格,但是有的时候的确需要链接回公司干活。最初想找找合适的远程控制工具,但是多半都需要IP和端口一类的,而电脑在很深的内网,离外网的接口机都还有一段距离,要搞定网络配置颇为麻烦。于是考虑使用qq的远程控制功能。

具体实现思路:

离开公司的时候,开启qq,打开一个我在家使用qq的窗口,然后做一个工具每隔一段时间(比如30秒)就去看看qq窗口有没有命令发过来,如果接收到了命令,就进行相应的操作。

方案选择:

方案选择当然是在满足条件的基础上尽可能简单了,qtp和testcomplete都太复杂,难道为了这么简单的一个功能还要启动这么庞大的一个工具,显然杀鸡用牛刀了。试了试vbs,也不是太理想。这几个工具都面临一个问题,就是对象无法识别,本来用vbs想直接键盘操作,结果发现腾讯公司还是有对策,当做到申请控制的时候,键盘无法操作,即便用TAB切到按钮上,回车和空格不起作用,怎么样都不能按下按钮,只好作罢。要是调用鼠标点击,又是屏幕绝对坐标定位,适应性太差了。

最终翻了箱底,搜出来以前搞过的autoit,直接鼠标操作绕过对象识别算了。autoit的鼠标操作可以活动窗体的坐标系定位。

方案优缺点:

优点:

适应性好,不用识别对象,不管你是什么qq版本,只要基本流程一致,大不了修改一下每次点击的位置就行了。

缺点:

Qq的版本太多了,不同用户的qq窗口,远程协助按钮的位置在窗体中坐标都可能是不同的,分辨率影响,所以为了适应这么多不同,就得在配置文件中修改按钮<远程协助>、<确定>(qq2011有这个按钮,其他版本多半没有)、<申请控制>和<断开>在qq窗体中的相对坐标。

得,咱废话少说,就直接说工具的使用吧。

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

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

控制qq自动申请远程控制工具:

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

相关的工具是两个:

第一个是自动控制qq的工具,里面有两个文件,一个是qqctl.exe,另一个是配置文件qqctl.ini,exe文件是可以更名的,不过同时ini修改文件名为一致的就可以了;

第二个是将键盘和鼠标操作自动录制为autoit脚本,这个是为了将配置文件修改的和实际情况一致使用的。

看看配置文件先:

[section1]

title1="title1"

x1=315

y1=65

x2=352

y2=107

x3=484

y3=426

x4=480

y4=420

x5=475

y5=456

解释一下:

Title1是qq窗体的名字,也就是主控端的那个qq的备注名字;

X1,y1,x2,y2是点击远程协助的坐标,为什么是两个呢,你看看下面的图就明白了:

001.jpg

下令控制qq自动申请远程控制

X3,y3:是<确定>的坐标

X4,y4:是<申请受控>的坐标

X5,y5:是<断开>的坐标

Qq2011的整个交互过程是这样的:

A:被控端

B:主控端

A上的qq和B上的qq互相加为好友;

B启动qq,打开Aqq的窗口;

B启动程序;

A启动qq,打开Bqq,发送命令:远程协助

Bqq接收到<远程协助>的命令,就去点击远程协助;

Aqq接收到远程协助的请求,点击接受;

Bqq上弹出要求确定的按钮;

Aqq上发送<确定>命令;

Bqq接收到确定的请求,点击确定;

此时Aqq可以看到B的桌面了;

Aqq再发送<申请受控>的命令;

Bqq接收到申请受控的请求,点击申请受控按钮;

Aqq同意,整个过程就搞定了,要想中断可以直接叉掉,或者发送<断开>命令,控制Bqq点击断开按钮。

以上的测试很顺利的就在本机完成了。

等到用的时候,发现被控机的qq版本是qq2011(安全保护),交互过程是不同的。

主要区别是,远程协助的按钮不在子菜单下面,就直接是第一级按钮;

远程协助接受以后,Bqq端并不需要按确定按钮,就直接申请受控了。

解决法子:

X1,y1,x2,y2设置为同一个就是了,点击了申请协助后,再点一次没啥问题。

至于确定,你别发送确定的命令就行了。

录制工具的使用需要说明吗,好像不用了,太简单了,手工完成整个过程,录制好ini文件中需要的内容就行了。

记得那四条命令就行了:

远程协助

确定

申请受控

断开

另:

考虑了一些特殊使用场景,程序有一定的适应能力:

1. 比如B端界面上冒出来一个什么窗口,比如qq的弹出窗口挡住了Aqq的窗口,这个可以程序自动激活获得Aqq窗体的焦点;

2. 如果网络不稳定,突然断掉了,重新发起命令,照样可以重新连接;

脚本改进:

1. 断开命令是个傻帽命令,没有场景会用到,应该直接删除相关代码;

2. 控制好了以后,那个程序会老是去激活Aqq窗体,这个有些讨厌,退掉qqctl.exe,又怕中途断了连接不回来。这个我是这么考虑的,增加两条新的命令<已经连接>和<已经中断>,当监控收到<已经连接>,就不再去激活窗体进行监控,如果中途断掉了,或者直接关闭了窗口,等网络能够连接了,就发送<已经中断>过去,监控收到命令,就重新监控其他几条命令,这么说不知道大家听懂了没有。回头自己尝试一下吧,我有空也写一个出来。


这个脚本过于简单,没啥含金量,算了吧,懒得讲了,不过有兴趣的同学可以下载来参考参考。技术深浅不是最重要的,能解决问题最重要。

autoit3安装程序:

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

命令控制qq自动申请远程控制代码:

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

如果搞不定,可以qq:2310095680

进行交流

读书人网 >其他相关

热点推荐