按键精灵技术教程:沙盘后台绑定游戏
的有关信息介绍如下:在上一期的院刊中,我们说到了如何使用沙盘以及一些要注意的地方。现在,我们一起来看看,沙盘的后台绑定要怎么实现。
步骤2-查找窗口句柄
小编找了个“456游戏平台”作为今天的例子,实现大漠后台绑定沙盘后对游戏窗口进行点击的效果。
我们使用search命令来查找窗口句柄。
首先,我们需要获取游戏窗口的标题,用抓抓工具来获取。
search命令代码如下
HwndEx=Plugin.Window.Search("456游戏中心")
可能会有很多童鞋载在这里,认为hwndex就是当前窗口的句柄。实际上,search命令的返回值是字符串,hwndex中所存放的:句柄加上“|”这样的内容。例如,找到了两个符合窗口标题的窗口句柄,12345和45678那么hwndex中存放的就是:12345|45678|所以,我们得到这个返回值之后,还需要使用split函数分割。
代码如下:
HwndEx=Plugin.Window.Search("456游戏中心")
MyArray=Split(HwndEx,"|")
IfUBound(MyArray)>=0Then
i=0
ForUBound(MyArray)
TracePrintMyArray(i)
i=i+1
Next
EndIf
分割之后的句柄存放在数组MyArray中。
注意:search命令是模糊查找,也就是说,如果你要查找的是窗口标题符合"456游戏中心",那么,"456游戏中心123"也符合条件。
步骤3-绑定窗口
大漠里绑定模式那么多,我怎么知道要用哪种呢?这里小编分享一个大漠绑定测试工具。
大漠绑定测试工具使用:第一步:获取要测试的窗口句柄
第二步:选择绑定模式,点击绑定,查看返回值
如果返回值为1,则说明绑定模式可行。如果返回值是0,则说明绑定模式不可行。注意:绑定模式可行并不代表图色、键鼠、文本输入就一定可以。所以,绑定模式可行之后,我们还需要测试图色、键鼠、文本是否可以用:
第三步:测试图色、键鼠等都可行之后,点击“生成绑定代码”
这里需要注意下,生成的代码中:dm.ret=dm.BindWindowEx(hwnd,"dx2","windows3","windows","",0)dm.ret这个需要修改下,修改为dm_ret或者其它变量名。绑定模式确定之后,使用多线程多开的方式来操作点击窗口。
整体代码
callregister()
DimEnvhwnd
HwndEx=Plugin.Window.Search("456游戏中心")
MyArray=Split(HwndEx,"|")
IfUBound(MyArray)>=0Then
i=0
ForUBound(MyArray)
TracePrint"第"&i+1&"个窗口句柄为:"&MyArray(i)///提示信息
hwnd=MyArray(i)
i=i+1
BeginThread点击
Next
EndIf
Sub点击
Setdm=createobject("dm.dmsoft")
jubing=hwnd
dm_ret=dm.BindWindowEx(jubing,"dx2","windows3","windows","",0)
Ifdm_ret=1Then//判断是否绑定成功,成功则继续后续的动作
TracePrint"绑定成功"
dm.moveto99,281
dm.leftclick
TracePrint"点击牌类游戏"
dm.moveto99,307
dm.leftclick
TracePrint"点击欢乐五张"
dm.moveto118,335
dm.leftclick
TracePrint"点击中国电信"
dm.moveto140,306
dm.leftclick
TracePrint"双击地摊1"
EndIf
Endsub
Subregister()////////////注册大漠
Setws=createobject("Wscript.Shell")
ws.run"regsvr32atl.dll/s"
Setws=nothing
PutAttachment"G:\test","dm.dll"
PutAttachment".\Plugin","RegDll.dll"
callPlugin.RegDll.Reg("G:\test\dm.dll")
Setdm=createobject("dm.dmsoft")
ver=dm.ver()
Iflen(ver)=0Then
MessageBox"插件注册失败,检查系统是否禁用了vbs脚本权限"
EndScript
EndIf
EndSub
SubOnScriptExit()//解绑大漠
dm_ret=dm.UnBindWindow()
EndSub
要点分析:为什么在sub点击子程序里要写下面的这句代码呢?
Setdm=createobject("dm.dmsoft")
这句代码的作用是创建一个大漠对象。新的线程是不能延用主线程里所创建的大漠对象的,所以在这里需要重新创建一个大漠对象。