大漠插件常见问题汇总

大漠插件常见问题汇总

Loadric和Preeric什么时候调用 VBS调用规范 本机文字识别正常别的机器为何不正常 部分64位系统无法运行vbs的解决办法 插件释放到Plugin目录会有什么问题 出现vbs被禁用的解决办法 出现坐标越界的解决办法 创建对象失败了怎么办 对于边缘模糊的文字怎么识别 后台绑定会对哪些接口有影细向 目前插件不免费功能列表 如何可以后台识别鼠标特征码 如何配置沙盘才可以后台绑定 如何使用RegDll.dll快速注册插件 如何使用后台识别 如何使用绝对路径来设置字库 如何使用相对路径来设置字库路径 如何手动注册插件到系统 如何在单脚本内操作多窗口 如何在多线程下使用 如何知道我的后台模式 为何不建议用Plugin方式调用插件 为什么不能和别的后台插件混用 为什么模糊识别的速度很慢 为什么有时候按键和鼠标会点击无效 一个标准的插件注册和绑定的例子

Loadric和Preeric什么时候调用

LoadPic是把指定的图片加载入插件内部缓存(内存),这样在调用FindPic等等所有和图片相关的函数时,都不需要再从文件加载图片,这样相当于加快了函数执行的效率. FreePic是把加载入内部缓存(内存)的图片释放. 事实上,插件内部在你调用所有的和图片相关的函数,比如FindPic等函数后,会自动把你调用过的相关图片加入缓存(内存),就相当于你调用了LoadPic。所以如果不是对性能有太苛刻的要求,一般不需要调用LoadPic,除非有特别用途.

VBS调用规范 大漠插件,建议大家用VBS的方式来调用,具体调用规范如下, 两种方式可以结合使用

无返回值的不能带括号 ,或者说无括号不能带返回值,例如

dm.FindStr 0,0,2000,2000,“长安”,“aaaaa-00000”,1.0,intX,intY dm.MoveTo intX,intY dm.LeftClick dm.SetPath “c:xxxx” dm.SetDict 0,“test.txt” dm.LoadPic “*.bmp”

等等,这些都是不需要返回值的,那么不需要加括号,当然,你也可以加括号,但是就必须遵循规则2

有返回值的必须带括号,或者说,有括号必须有返回值,例如

dm_ret = dm.FindStr(0,0,2000,2000,“长安”,“aaaaa-00000”,1.0,intX,intY) dm_ret = dm.MoveTo(intX,intY) dm_ret = dm.LeftClick() dm_ret = dm.SetPath(“c:xxxx”) dm_ret = dm.SetDict(0,“test.txt”) dm_ret = dm.LoadPic("*.bmp")

有些函数,是必须有返回值的,那么就必须带括号,比如Ocr函数等 ss = dm.Ocr(0,0,2000,2000,“aaaaaa-000000”,1.0)

本机文字识别正常别的机器为何不正常

这是一个很常见的问题,不同机器,由于系统的不同或者软件设置的差异,会导致文字颜色,字体等可能存在不同。

一般来说解决这个问题,以前的办法是这样,利用Capture函数,比如

dm_ret = dm.FindStr(0,0,2000,2000,“长安”,“ffffff-000000”,1.0,x,y) if x < 0 then dm_ret = dm.Capture(0,0,2000,2000,“screen.bmp”) end if 这样当找不到长安时,就会截图保存为screen.bmp,然后作者可以分析这个文件,来对自己的字库或者代码进行调节优化.

但这个办法有个延后性的问题,因为FindStr和Capture是两个操作,分别调用了两次截屏,所以可能会有稍许不一致的情况存在. 为了完完全全的对FindStr时,产生的截图进行分析,我们需要用到2.1131版本提供的两个函数。

CapturePre和EnableDisplayDebug.

那么代码如下

dm.EnableDisplayDebug 1 dm_ret = dm.FindStr(0,0,2000,2000,“长安”,“ffffff-000000”,1.0,x,y) if x < 0 then dm_ret = dm.CapturePre(“screen.bmp”) end if

这样就把FindStr时的截图保存下来了,就完全恢复了现场. 因为CapturePre这个函数是截取上一次的截图数据.

部分64位系统无法运行vbs的解决办法 注册表项

HKEY_CLASSES_ROOTVBSFileShellOpenCommand “%SystemRoot%System32WScript.exe” “%1” %*修改成"%SystemRoot%SysWow64WScript.exe" “%1” %*就好了

插件释放到Plugin目录会有什么问题 首先从理论上来说释放到任何目录都是没问题的

但是按键以及简单游或者小精灵的Plugin目录比较特殊

原因在于按键会自动把Plugin目录下的所有dll强行注册到系统(相当于调用了Regsvr32 *.dll)

而且按键还会自动为每个dll创建相对应的com对象,这样导致Plugin下的dll会被暂时锁定,

此时,如果再进行对此dll的注册,都会失败.

所以如果你释放插件到Plugin目录,那么导致的问题就是如果要进行插件升级,很可能就会失败,导致脚本错误.

所以我强烈建议大家养成好习惯,不要把dll释放到Plugin,自己手动注册最安全可靠.这样既利人又利己.

从2.1118B版本之后,大漠插件将禁止释放到Plugin目录,以避免一系列升级产生的BUG! 同时,也禁止用Plugin方式来调用插件,那个方式也是非常不安全的. 请大家严格按照vbs的语法来使用插件. 出现vbs被禁用的解决办法

出现这种问题,99%的原因是由于插件版本没有注册到系统导致,解决办法如下

删除Plugin目录的dm.dll和dm_jdyou.dll (简单游的话直接删除bin目录)

插件的释放路径不要释放到Plugin目录,改为c盘的某个目录,并且用RegDll来注册,如下 PutAttachment “c: est_game” ,"." PutAttachment “.Plugin” ,“RegDll.dll” Call Plugin.RegDll.Reg(“c: est_gamedm.dll”)

重新启动脚本即可

如果这样还不行,尝试手动注册,手动在运行下,输入regsvr32 c: est_gamedm.dll,

如果这样还提示出错,那就是系统问题,重装干净安全的系统.

最好不要用ghost系统,很多ghost系统都是修改过系统文件的,很危险!

从2.1118B版本之后,大漠插件将禁止释放到Plugin目录,以避免一系列升级产生的BUG! 同时,也禁止用Plugin方式来调用插件,那个方式也是非常不安全的. 请大家严格按照vbs的语法来使用插件.

出现坐标越界的解决办法 出现这种错误,一般是你的代码给插件传递的参数有明显的错误,帮助调试脚本很有用. 比如FindStr函数 dm_ret = dm.FindStr(20,0,10,100,“abc”,“000000-000000”,1.0,x,y) 这样显然x1(20) >= x2(10) 这显然是错误的

再比如 dm_ret = dm.FindStr(-2000,0,-1000,100,“abc”,“000000-000000”,1.0,x,y)

这样显然x2小于0 这也是明显错误 不可能有这样的情况出现等等类似的错误

如果不想显示这样的信息,可以调用插件的接口SetShowErrorMsg来屏蔽这些错误 比如 dm.SetShowErrorMsg 0

创建对象失败了怎么办

对于边缘模糊的文字怎么识别 很多情况下,文字并不是我们想象的边缘锐利,而是有一定的渐变,这时,再去用普通的文字识别,误判的几率就很高 而且就算是加入了模糊度判定,还是可能会误判. 解决办法是,不要用文字识别,改用多点找色,或者是自己制作透明图,自己写算法来进行判别. 制作透明图,用我的工具就可以很方便快捷的制作出来,这样的准确率是最好的,效率也是最高的.

后台绑定会对哪些接口有影细向 由于后台绑定操作和一系列接口有关系,那么有哪些接口会有影响呢?

图色部分 文字识别部分,键鼠部分,以及答题接口的FapCapture会有影响,,这些接口的具体操作是根据绑定的具体参数而定的。

那么其它部分的接口完全没有影响,可独立操作.

插件不免费功能

目前插件大部分功能都是免费给大家使用,但下面这些功能是收费使用。(简单游和按键无此限制)

1.BindWindow和BindWindowEx 中的模式1 3 5 6 7 2.BindWindow和BindWindowEx中的dx.mouse.cursor,后台鼠标特征. 3.BindWindowEx中的dx.public.fake.window.min(假最小化功能) 4.插件自我保护功能.(只给简单游和付费用户使用,按键不提供) 5.AsmCall接口的多线程安全功能.(免费用户多线程会出现异常错误) 6.BindWindowEx中的dx.public.hide.dll.(插件隐藏功能) 7.EnumWindow和EnumWindowByProcess的属性32 8.BindWindowEx中的 dx.public.mouse.sync,dx.public.keypad.sync和dx.public.keypad.patch

如何可以后台识别鼠标特征码 首先 后台鼠标特征码仅适用于按键和简单游平台

先用大漠综合工具来获取前台鼠标特征码,如果前台无法获取到特征码,那么就无法获取后台鼠标特征码. 然后用以下代码,来测试是否有鼠标特征码

set dm = createobject(“dm.dmsoft”) TracePrint dm.Ver() hwnd = dm.GetMousePointWindow() dm_ret = dm.BindWindow(hwnd,“dx2”,“dx2”,“dx”,0) TracePrint dm_ret dm.MoveTo 0,0 Delay 100 TracePrint dm.GetCursorShape() // 下面这句是输出当前鼠标热点位置(同样支持后台)

TracePrint dm.GetCursorSpot() dm_ret = dm.UnBindWindow()

如果以上代码可以正常输出鼠标特征,那就可以确定支持后台鼠标特征. 要注意的是,要想正确获取后台鼠标特征,必须在dm.MoveTo或者MoveR命令之后,加入一定的延时,以等待后台获取到鼠标特征. 一点小经验分享,有些窗口在使用一次MoveTo 可能获取不到特征码需要多移动几次 比如

For 3 dm.MoveTo 30,40 Next Delay 100 TracePrint dm.GetCursorShape()

如何配置沙盘才可以后台绑定

沙盘后台绑定 只适用于版本2.1109之后的版本

具体方法

打开沙盘,配置-》编辑配置文件

在[GlobalSettings]这个类别下加入以下内容

OpenIpcPath=check_hook_exist OpenIpcPath=dx OpenIpcPath=share

保存即可.

如何使用RegDll.dll快速注册插件

这里我就只拿按键8来举例,按键7的稍微改改就行了

首先打包dm.dll和RegDll.dll到附件,并且把RegDll.dll拷贝到按键的Plugin目录 然后加入一下代码 (这里我是用绝对路径来说明,相对的也可以自己尝试下)

PutAttachment “c: est_game” ,"." PutAttachment “.Plugin” ,“RegDll.dll” Call Plugin.RegDll.Reg(“c: est_gamedm.dll”) 3. set dm = createobject(“dm.dmsoft”) ver = dm.Ver() If len(ver) = 0 Then MessageBox “创建对象失败,检查系统是否禁用了vbs脚本权限” EndScript End If

另外特别要注意,不要把dm.dll释放到Plugin目录, 会导致插件在更新版本时失败。特别是在简单游平台. 建议释放到C盘的某个目录比如Test目录等.

这样做的好处就是可以节省启动时间 当然以前的方法也可以,就是慢了点,对速度有要求的可以用这个方法来试试. 另外要注意,这个dll不能用于其它语言,其它高级语言可以参考如何注册Com组件,有更加方便的写法。 从2.1118B版本之后,大漠插件将禁止释放到Plugin目录,以避免一系列升级产生的BUG! 同时,也禁止用Plugin方式来调用插件,那个方式也是非常不安全的. 请大家严格按照vbs的语法来使用插件.

如果是多线程使用大漠插件,必须每个线程都要创建一个dm对象. 注册过程脚本开始时,执行一次就行了,没必要每个线程都执行.

如何使用后台识别 // 下面是一个GDI后台识别的例子(只列举了OCR,其余函数类似) hwnd = dm.GetForegroundWindow() dm_ret = dm.GetClientSize(hwnd,screen_w,screen_h) dm_ret = dm.SetDict(0,“C:Documents and SettingsAdministrator桌面1.txt”) dm_ret = dm.BindWindow(hwnd,“gdi”,“normal”,“normal”,0) s = dm.Ocr(0,0, screen_w, screen_h,“FEFB01-000000”,1.0) MessageBox s

如何使用绝对路径来设置字库

比如我想把我的字库放到c: est目录,那么代码如下: PutAttachment “c: est”,"*.txt" dm_ret = dm.SetPath(“c: est”) dm_ret = dm.SetDict(0,“dm_soft.txt”)

如何使用相对路径来设置字库路径 比如我要把我的字库放在Res目录下,那么代码如下: base_path = dm.GetBasePath() dm_ret = dm.SetPath(base_path) dm_ret = dm.SetDict(0,“dm_soft.txt”)

注意,要保证你的dm.dll是在Res目录,否则上面这面这段代码将把路径设置在你系统中dm.dll所在的路径

如何手动注册插件到系统 比如dm.dll放在c: est目录 那么开始->运行->cmd 在命令提示符下,输入cd c: est 再输入 regsvr32 dm.dll 即可,这样会提示插件已经注册到系统中.

如何在单脚本内操作多窗口 比如有3个窗口,需要在一个脚本内分别控制,以达到多开的目的. 如果用我的插件如何实现呢? 其实很简单 比如有3个窗口同时操作. 那么代码如下 // 三个句柄(这里随便写的值,自己更换) Dim hwnd_all(3) hwnd(0) = 11111 hwnd(1) = 22222 hwnd(2) = 33333 //


比丘资源网 » 大漠插件常见问题汇总

发表回复

提供最优质的资源集合

立即查看 了解详情