发表回复 
讨论:关于大漠插件的使用
2014-09-02, 10 : 02 (这个帖子最后修改于: 2014-09-02 10 : 15 by zhanglei1371.)
讨论:关于大漠插件的使用
昨天研究了下大漠插件的使用,看完了大漠的5个视频,结果发现用ahk来模仿着做时,完全是两码事,根本达不到效果。也许是理解不够吧,于是搜索本论坛,结果发现和大漠插​件有关的帖子寥寥无几。仅有一个兔子大侠的帖子,QQ斗地主的,不过可供借鉴的地方还是有限,因为只介绍了ocr,自己在探索findstr和findpic时,花了很长​时间,最后还是失败了。
搜遍百度谷歌,能找到的基本都是按键精灵相关的应用,而qq高级群里有个AHK使用大漠插件的例子.zip,下载后发现其实就是大漠插件的程序和本身的帮助文件,体积之所​以大,7M多吧,因为里面有个大的mp3文件。没有找到ahk使用的例子。
相信有不少和我一样不太了解怎么用的,不过总算也成功了一些地方,故在此过程写下来,希望能有更多有经验的人回帖探讨下。
大漠的视频都是基于按键精灵的,因此,代码方面需要稍微修改下。
在获取桌面我的电脑这几个字倒是成功了,不过没什么意义。过程如下:
1.打开下载的大漠工具文件夹【到处可下载】,里面有答题器,后台工具,注册.bat,dm.dll,大漠综合工具。其中能用到的就是大漠综合工具。至于答题器,视频中未​做介绍,没去研究。先运批处理文件,注册dm.dll.注意这个就是大漠插件的核心程序。
2.以识别桌面我的电脑这几个字为例,打开大漠综合工具,点击抓图按钮,在桌面我的电脑区域截截图,将我的电脑四个字截下来,
3.可见到图片已近进入大漠界面,点击坐标和RGB中间的色块,此时光标变为彩色,点击我的电脑几个字的白色部分,成功后右边的二值化区域会出现黑底白色的我的电脑四个字​;
4.点击提取点阵(多个),因为不是一个字,所以点击多个,这时在最右边的窗口会出现四行数字字母组成的文字;
5.接下来就是定义文字:大漠的视频个人感觉这里做的不太好,因为取的值是555/555,所以这个环节不到一秒就过去了,不仔细看很容易忽略掉。在里面输入我,回车,的,回车,电,回车,脑,回车。于是便生成了字库文件,路径见右上角的文本框里。将其​剪切到c:盘。
6.在工具的左上部分有选择范围框:644,120,670,135,宽高(26,15),这里前四个数字是坐标,下一步要用到[其实填写0,0,2000,2000就行了,相当于整个屏幕分辨率]。接下来是代码部分:
7.打开ahk脚本,输入以下代码:
代码: (全选)
dm:=ComObjCreate("dm.dmsoft") ;创建大漠对象
ToolTip % dm.ver()  ;版本提示
a:=dm.SetPath("c:") ;设置路径
b:= dm.SetDict(0,"zk.txt")  ;设置字库文件
Hwnd:=dm.getmousepointwindow() ;获取鼠标所在的窗口句柄
name:= dm.Ocr(0,0,2000,2000,"ffffff-000000",1.0) ;绝对坐标【整个屏幕查找】
;dm.bindwindow(hwnd,"normal","normal","normal",0)  ;绑定窗口
;name:= dm.Ocr(644,120,670,135,"ffffff-000000",1.0)  ;文字识别,相对坐标
MsgBox %name%
;dm.Unbindwindow
运行脚本后便可以得到我的电脑四个字的消息框。
基本原理就是这样,其中的bindwindow和unbindwindow很简单,就是绑定当前活动窗口,可以看下大漠视频,很容易理解的。
但是个人感觉获取文字的意义不大。AHK中有imagesearch方法,昨天也实验了下,操作过程就是先截取一个图片,然后用例子中的函数去运行,有2成的机会能实验成​功。原因是受很多因素影响,如图片的分辨率和屏幕区域有差别,像素问题等等。大多是失败的。
因此想到了大漠插件的找图功能:findpic函数,于是,按照大漠第五个视频:找透明图的方法,一步一步照着做,最后结果:失败。什么也找不到。甚至无直接截取一块白色​区域,在满是白色区域的地方找,也是什么也找不到。返回坐标为空。
顺便附上代码:
代码: (全选)
dm:=ComObjCreate("dm.dmsoft")
;~ ToolTip % dm.ver()  ;版本提示
dm.SetPath("c:\") ;设置路径
dm.FindPic(0,0,2000,2000,"wg.bmp","000000",0.5,0,intX,intY) ;图片为c:\wg.bmp
msgbox %intX%
此外实验了findstr函数也是失败:以查找我的电脑四个字:
代码: (全选)
dm:=ComObjCreate("dm.dmsoft")
;~ ToolTip % dm.ver()  ;版本提示
dm.SetPath("c:\") ;设置路径
name:=dm.FindStr(0,0,2000,2000,"我的电脑","ffffff-000000",1.0,intX,intY)
msgbox %intX%

因为我的目的就是根据图片或文字来找到相应的区域,获取xy坐标,然后用鼠标去点击,所以只是识别文字对我没有意义,而获取坐标最后都没成功。不知各位可有好的方法,能提​供完整的可操作的代码以供学习。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢zhanglei1371
2014-09-02, 11 : 03
RE: 讨论:关于大漠插件的使用
  • 找图
    imagesearch可以找透明图,允许容差
    AHK有个Gdip_ImageSearch.ahk,也不错。
  • 大漠:
    不太了解,除了后台找图(不知道原理),其余感觉AHK都可完成;字库那个,AHK也有类似的,但没封装成模块。
    回头研究下大漠的功能。

感谢分享。
是需要封装些便捷的辅助工具,另,官网(英文)好脚本很多,但不太会找..

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-02, 17 : 50 (这个帖子最后修改于: 2014-09-02 18 : 01 by 兔子.)
RE: 讨论:关于大漠插件的使用
找图不成功几乎肯定是自己的问题(比如图片是不是用的有损格式啊,找图时有没有加入容差值啊)。



好了,更新了另外一个使用了大漠的作品。里面用到了很多大漠函数,包括findpic。

帖子链接
http://ahk8.com/thread-4089.html
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢兔子
2014-09-02, 18 : 26
RE: 讨论:关于大漠插件的使用
(2014-09-02 17 : 50)兔子_ 提到:  找图不成功几乎肯定是自己的问题(比如图片是不是用的有损格式啊,找图时有没有加入容差值啊)。



好了,更新了另外一个使用了大漠的作品。里面用到了很多大漠函数,包括findpic。

帖子链接
http://ahk8.com/thread-4089.html
多谢分享!
我是一步一步看着视频搞的图,包括透明图制作,还是找不到。回头用按键精灵测试下
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合