【按键精灵】大漠插件如何找图?(参考代码后附)
找图=找像素=找字,所以我这里不用FindPic,而是用FindStr。
FindStr的优点:找寻速度更快,不用截图保存但取而代之的是做字库。(其实FindPic我也没用过......)
步入正题:
1.老规矩把 注册大漠、窗口绑定都写在前面(或者写在子程序中,然后Call来调用,这样显得简洁,程序易读),窗口我就选搜狗浏览器的4399小游戏页面,经抓取,窗口句柄hwnd=123456 ...随便编一个...

2.我要抓洛克王国的图标,打开“大漠综合工具”--勾选浮动抓图--然后会出现一个置顶的蓝色框框,让它覆盖洛克王国,调整好大小






'-----------主程序如下:------------------
Call 注册大漠
hwnd=123456
Call 窗口绑定
dm_ret = dm.SetDict(0,"D:\测试\font.txt") //设置字库
dm_ret = dm.FindStr(0,0,1920,1080,"洛克","462181-202020",1.0,intX,intY)
If dm_ret=0 Then //dm_ret=0代表找到字样
TracePrint "找到图片位置在:" & intX & "," & intY
dm.MoveTo intx,inty
Else
TracePrint "没有找到图片"
End If
'-----------主程序结束---------------------
'子程序如下,若调用则运行,不调用则不起作用,类似自定义函数。
Sub 注册大漠()
need_ver = "3.1233"
set ws=createobject("Wscript.Shell")
ws.run "regsvr32 atl.dll /s"
Set ws = nothing
PutAttachment "D:\测试","*.*" //释放所有附件到D:\测试
PutAttachment ".\Plugin" ,"RegDll.dll" //释放RegDll.dll,到按键精灵下的plugin文件夹
Call Plugin.RegDll.Reg("D:\测试\dm.dll") //调用dm.dll
set dm = createobject("dm.dmsoft")
ver = dm.Ver()
If ver = need_ver Then
TracePrint "注册成功!"
Else
TracePrint "注册失败"
End If
Delay 500
End Sub
Sub 窗口绑定()
dm_ret = dm.BindWindowEx(hwnd,"dx2","dx","dx","dx.public.active.message",4)
Delay 1000
If dm_ret = 1 Then
TracePrint "绑定成功"
Else
TracePrint "绑定错误,错误码 " & dm.GetLastError()
If dm.GetLastError() = - 3 Then
TracePrint "绑定错误,可能目标窗口有保护 或 异常错误"
End If
End If
Delay 1000
End Sub
Sub OnScriptExit()
dm_ret = dm.UnBindWindow()
If dm_ret = 1 Then
TracePrint "解除绑定成功"
End If
End Sub
'------------------------分割线-----------------------------'
程序第八行会输出一个x,y坐标,就是洛克的图标位置,由此实现了用FindStr达到FindPic的功能,而且是后台识图(绑定后的操作全为后台操作)。(可以用按键抓抓验证坐标,将按键抓抓移到洛克的图标处,查看客户端内坐标可以发现,和代码输出的x,y一致。)
完。