实现功能: 能自定义QQ号码段,实现不加QQ,发送广告消息!
如在中途停止了脚本,下次启动时会自动检测,并提示你是否继续上次未完成的任务!
如遇到需要输入验证码的临时会话,则自动关闭!
如果30秒未有响应,则自动跳到下一个QQ号码继续任务!
注意:该脚本有个BUG,后来看到了 沉8 的帖子,才发现的该BUG,但也不愿意去改.
不过我想也无所谓了..该脚本只为学习使用^_^
沉8的脚本已经发在下面了,我加了个注释,方便大家理解! 呵呵
运行环境:分辨率:1440×900 色深:32位 操作系统:Windows XP 按键精灵版本:7.00.3730
UserVar startID=10001 从该QQ号码开始(大于等于10001的整数)
UserVar endID=999999999 到该QQ号码结束(小于等于999999999的整数)
UserVar msg=需要发送的广告内容 这里是你所需要发送的广告内容
VBS Dim objShell,fso,QQNo,lastNo,sx,sy,allx,ally,x,y,t
//定义变量
Set objShell=CreateObject("WScript.Shell")
//创建WScript.Shell对象
CurrPath=objShell.CurrentDirectory
//取得当前路径
VBS set fso=CreateObject("Scripting.FileSystemObject")
//创建FSO对象
VBS const forreading=1
//定义读方式
VBS const forwriting=2
//定义写方式
VBS const forappending=8
//定义追加方式
If startID<10001
MessageBox "你设置的起始QQ号不正确,请重新设置"
EndScript
EndIf
//判断UserVar里设置的数字是否大于10001,如果不大于,则提示并退出脚本
If fso.FileExists(CurrPath&"\xintool.log")=0
//判断日志文件是否存在
VBS set myfile=fso.createtextfile(CurrPath&"\xintool.log")
//如果不存在,就生成一个
Else
VBS set myfile=fso.opentextfile(CurrPath&"\xintool.log",forreading)
//如果存在,则以读方式打开文件
VBS lastNo=myfile.readline
//读一行内容,赋予变量lastNo
EndIf
VBS myfile.Close
//关闭文件
If lastNo="MsgEnd"
QQNo=Int(startID)
ElseIf lastNo>=10001 and lastNo<=999999999
VBSCall box=objShell.Popup("你上次的喊话任务尚未完成"&vbCr&vbCr&"如果需要继续上次任务请选择'是'"&vbCr&"如果要重新开始请选择'否'",0,"QQ广告工具",68)
If box=6
QQNo=Int(lastNo)
Else
QQNo=Int(startID)
EndIf
Else
QQNo=Int(startID)
EndIf
//以上是通过判断lastNo的内容,来确定上次是否完成了任务.如果没完成任务,是否继续上次任务.如完成了,则重新开始!
Plugin allx=GetSysInfo.GetScreenResolutionX()
Plugin ally=GetSysInfo.GetScreenResolutionY()
//获得屏幕的分辨率
Rem 喊话任务开始
t=now
//把当前的系统时间,赋予变量t
VBS objShell.Run "tencent://message/?uin="&QQNo&"&Site=xintool&Menu=No",0
//运行QQ临时会话
sx=0:sy=0
//定义查找颜色的起始点坐标
Rem wait
Delay 500
VBSCall FindColorEx(sx,sy,allx,ally,"59343",0,1,x,y)
//先查找QQ临时回话上的一个点
If x>=0
IfColor x,y+1,fafafa,0
IfColor x,y+5,2ee9f,0
IfColor x-4,y+15,66523,0
IfColor x-3,y+6,b1f9eb,0
Delay 500
Goto saymsg
Else
If DateDiff("s",t,now)>=30
QQNo=QQNo+1
If QQNo>Int(endID)
Goto 任务结束
EndIf
Goto 喊话任务开始
EndIf
sx=Int(x)+1:sy=Int(y)+1
Goto wait
EndIf
Else
If DateDiff("s",t,now)>=30
QQNo=QQNo+1
If QQNo>Int(endID)
Goto 任务结束
EndIf
Goto 喊话任务开始
EndIf
sx=Int(x)+1:sy=Int(y)+1
Goto wait
EndIf
Else
If DateDiff("s",t,now)>=30
QQNo=QQNo+1
If QQNo>Int(endID)
Goto 任务结束
EndIf
Goto 喊话任务开始
EndIf
sx=Int(x)+1:sy=Int(y)+1
Goto wait
EndIf
Else
If DateDiff("s",t,now)>=30
QQNo=QQNo+1
If QQNo>Int(endID)
Goto 任务结束
EndIf
Goto 喊话任务开始
EndIf
sx=Int(x)+1:sy=Int(y)+1
Goto wait
EndIf
Else
If DateDiff("s",t,now)>=30
QQNo=QQNo+1
If QQNo>Int(endID)
Goto 任务结束
EndIf
Goto 喊话任务开始
EndIf
Goto wait
EndIf
//如果找到了该点,则继续判断其相对坐标的点,如果全相同,则证明已经打开QQ临时会话,如果没找到,则把当前点定为起始坐标.如果查找时间超过30秒,则放弃查找,直接跳到下一个号码
Rem saymsg
SayString msg
//发送消息
Delay 1000
KeyDown 18,1
KeyPress 83,1
KeyUp 18,1
//按Alt+S发送消息
Delay 800
KeyDown 18,1
KeyPress 67,1
KeyUp 18,1
//按Alt+C关闭该临时会话窗口
Delay 800
sx=0:sy=0
Rem close
Delay 500
VBSCall FindColorEx(sx,sy,allx,ally,"59343",0,1,x,y)
If x>=0
IfColor x,y+1,fafafa,0
IfColor x,y+5,2ee9f,0
IfColor x-4,y+15,66523,0
IfColor x-3,y+6,b1f9eb,0
KeyDown 18,1
KeyPress 115,1
KeyUp 18,1
Delay 1000
KeyDown 18,1
KeyPress 115,1
KeyUp 18,1
Else
sx=Int(x)+1:sy=Int(y)+1
Goto close
EndIf
Else
sx=Int(x)+1:sy=Int(y)+1
Goto close
EndIf
Else
sx=Int(x)+1:sy=Int(y)+1
Goto close
EndIf
Else
sx=Int(x)+1:sy=Int(y)+1
Goto close
EndIf
EndIf
//以上也是查找该窗口是否存在,如果存在,就用Alt+F4强行关闭,如果不存在,则继续下一个QQ号码
VBS set myfile=fso.opentextfile(CurrPath&"\xintool.log",forwriting)
//以写方式打开日志文件
VBS myfile.writeline(QQNo)
//写入刚操作完了的QQ号码,以方便下次继续任务
VBS myfile.Close
//关闭文件
QQNo=QQNo+1
//QQ号码递增1
If QQNo>Int(endID)
Goto 任务结束
EndIf
//如果该号码大于设置的号码,则任务结束
Goto 喊话任务开始
Rem 任务结束
VBS set myfile=fso.opentextfile(CurrPath&"\xintool.log",forwriting)
//以写方式打开日志文件
VBS myfile.writeline("MsgEnd")
//写入任务完成信息
VBS myfile.Close
//关闭文件
MessageBox "你所设置的广告任务已完成"
//弹出窗口提示,任务完成
按键精灵qq临时会话
按键精灵qq
qq按键精灵