大漠插件字库原理介绍
- 格式:pdf
- 大小:824.94 KB
- 文档页数:12
首先说明下大漠综合工具制作字库的过程和原理1.截取你所需要的图片2.点击你所需要字的颜色3.点击提取点阵4.输入字符按回车生成字库具体的原理我不好说,但是就我的理解是:对图片中不符合指定颜色的部分去除掉,然后二值化获取点阵,点阵也就是这些颜色的分布规律,二值化就是黑白两色,RGB格式中黑色"000000"白色"ffffff"由于我的脚本在别人电脑上运行的时候经常失效,今天改成16位色后我机器上运行也失效了,而我这个脚本主要采用的就是大漠插件的找字功能,我以为是机器间的色偏造成的,一直想法子算色偏,但是我失败了。
后来我想起论坛上有个帖子专门讲过同色系的RGB格式中R值是不变的(不好意思忘了作者了,在这里致谢)于是我就在大漠综合工具的色偏处输入了00ffff结果是在16位色环境下,大漠综合工具中二值化区域内的字显示的跟我在32位色环境下做的一模一样,接着我提取点阵,制作字库,进行调试,命令格式如下:dm_ret =dm.FindStr(0,0,978,585, "码", "ffd463-00ffff", 1.0, x1, y1)If x1 >= 0 ThenMessageBox x1 & y1End If准确的弹出了x,y的坐标值接着我换32位色做同样的调试,显示结果与16位色下相同,我测了坐标正好是我要找的字的左上角经多次测试发现这个方法中字色的R值必须为FF或00(至于F1,01等未测试,有兴趣的朋友可以试试)庆幸啊以后找字可以不考虑偏色了呵呵再说了考虑我也不会算具体原理我也不是很懂,但是我估计应该是:我比较了点阵中R值相同的所有点,取得符合二值化点阵区域内所有的点造成的再次提醒此方法只适合R值为00,FF的其他位置相同的未测试当然这么做效率是低了点,但是在我看来脚本应该是:稳定性>通用性>执行效率,毕竟脚本也是你编写的一种软件吗鲜花,银币在哪拿来啊呵呵简单说下后台操作的方法,先判断该窗口是否支持后台,用下面的语句:Hwnd=Plugin.Window.Foreground()Hwmd=Plugin.Window.GetkeyFocusWnd()If Hwmd<>0 thenMessagebox "可以"ElseMessagebox "不可以"End if然后把下面的放在脚本开头Hwnd=Plugin.Window.Foreground()Hwnd=Plugin.Window.GetkeyFocusWnd()//下面接自己的代码首先后台一点是要有句柄、这个很简单第一步我们先打开抓抓,接着点击句柄接着把鼠标移到你所要后台的窗口上,按下F8 是否看见当前窗口句柄那里出现一串数字?把它复制下来第二步我们点击图像,在指定窗口句柄那里打钩接着把数字复制进去按下抓图键(Print Screen SysRq) 是否只看见你要后台的的图像呢?对着你所需要的坐标按右键加入点1 记住坐标然后加入到后台鼠标点击里面就行了第三步我们在后台命令中找到鼠标指向窗口点击插入命令是Hwnd = Plugin.Window.MousePoint()第四步我们要进行后台鼠标点击或者后台输入键盘命令是Call Plugin.Bkgnd.LeftClick(Hwnd, 0, 0)在按键看了很多教程关于"多开..."的我看了后回味,似乎都是单线程的,往往新手会问,难道不能让精灵同事做2件事情吗?新手问的其实是问:按键可以多线程后台吗?由此我突然奇想且试验成功.且次试验可将任何的单开后台变为多开后台脚本.如有愚昧的地方指指教了. 作业:设计一个在记事本上后台打字"1"的循环代码要求:能循环多开Hwnd = Plugin.Window.MousePoint()rem aCall Plugin.Bkgnd.KeyPress(Hwnd, 49)Delay 500goto a注:8.0写的如只有7的同学自己翻译不太难的回复后能见教程本帖隐藏的内容需要回复才可以浏览第一步:将禁止脚本重复运行选为否(在是否循环的下面)第二步:设置启动热键为F2(以免与记事本热键冲突)第三步:保存退出(或选调试)第四步:打开第一个记事本文件,鼠标指中按F2,此时可看见后台打的111出现最小化第五步:打开第二个记事本文件,鼠标指中按F2,此时可看见后台打的111出现最小化........此时你如果将多个记事本都打开看他们都在干活呢-------可以无限后台多开-多线程的哦总结:第一步很关键.启示:如果我做的"打1"的脚本换成打怪的呢?本帖隐藏的内容需要回复才可以浏览第1步:什么是后台插件及命令首先我们要明白什么是后台插件以及后台命令,在编辑窗口找到全部命令,找到窗口插件(建议大家可以站内搜一下361插件,下载后放进去,看一下361插件的命令),点开后点击每一条命令仔细看说明,对比每条命令跟前台命令的对应关系,这样我们就可以把对应的前台命令转换为后台命令了。
大漠插件后台找图、自动获取坐标窗口句柄鼠标多点左单击脚本一、准备工作第一步:下载大漠插件、解压,运行“注册大漠插件到系统.bat”,把全部东东都复制到按键精灵的plugin目录下吧~第二步:创建一个文件夹,以d:\test 为例。
把你要找的图(60.bmp)、大漠插件里的dm.dll 和RegDll.dll复制到这个文件夹。
第三步:打开按键精灵,创建一个新脚本。
往附件(在软件左边框选项)里面添加dm.dll、Reg.dll和图60.bmp二、复制以下代码到按键精灵dim ys1,ys2,ys3,a,b,zbx,zby//自定义变量ys1=9000//1和2点延时ys1=9000//2和3点延时ys1=9000//3和1点延时a=15//纵向下移15单位b=-15//纵向上移15单位zbx=100//获取窗口句柄给定的坐标xzby=100//获取窗口句柄给定的坐标yPutAttachment "d:\test", "*.*" //意思是释放所有附件到d:\test目录。
就是把有用的文件打包到test目录下PutAttachment ".\Plugin", "RegDll.dll" //意思是释放RegDll.dll文件到按键精灵安装目录的Plugin目录下,用来完成大漠插件的注册Call Plugin.RegDll.Reg("d:\test\dm.dll") //调用大漠插件,在按键精灵中使用Set dm = createobject("dm.dmsoft") //用大漠插件创建一个对象dmdm_ret = dm.SetPath("d:\test") // 设置全局路径,以后你找图用的图片都默认是test目录里的图片了,否则你要用绝对路径d:\test\1.bmp来该表示图片dm_ret = dm.LoadPic("*.bmp") // 字面意思是加载test目录下的所有图片Hwnd = dm.GetPointWindow(zbx,zby)//用大漠软件获取给定坐标(zbx,zby)的窗口句柄,保存在Hwnd里Call Plugin.Window.Move(Hwnd, 0, 0) // 把窗口移到屏幕的(0,0),即左上角dm_ret = dm.BindWindow(Hwnd,"gdi","windows","windows",0) //这句用来绑定辅助操作的对象窗口//下面是一条判断语句,如果绑定失败就会提示。
C#调⽤⼤漠插件⼤漠插件是⼀个很不错的东西,在按键精灵和易语⾔⾥⾯⽤得很多,可以后台找图找字,写游戏⾃动脚本⽤得特别多。
前⾯写⼀个微信的⾃动脚本,查了⼀些资料,易语⾔不太熟悉,按键精灵功能上可能不好实现,就找了些资料,⼤漠插件是可以⽤⼀、引⽤Ddm.dll.NET⾥⾯可以直接引⽤,引⽤⽅法,添加引⽤--COM--找到DM,双击即可⼆、注册⼤漠插件//这是注册DLL到系统的⼀个⽅法,注册⼤漠则调⽤ AutoRegCom("regsvr32 -s dm.dll");static string AutoRegCom(string strCmd){string rInfo;try{Process myProcess = new Process();ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe");eShellExecute = false;myProcessStartInfo.CreateNoWindow = true;myProcessStartInfo.RedirectStandardOutput = true;myProcess.StartInfo = myProcessStartInfo;myProcessStartInfo.Arguments = "/c " + strCmd;myProcess.Start();StreamReader myStreamReader = myProcess.StandardOutput;rInfo = myStreamReader.ReadToEnd();myProcess.Close();rInfo = strCmd + "\r\n" + rInfo;return rInfo;}catch (Exception ex){return ex.Message;}}三、实例化⼤漠对象Dm.dmsoft dm = new Dm.dmsoft();四、调⽤⼤漠的⽅法直接通过实例化的对象dm调⽤,如dm.MoveTo(30, 30);完整代码:窗体上放⼀个按钮,点击按钮,调⽤⼤漠插件将⿏标移动到(30,30)using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Diagnostics;using System.IO;namespace Player{public partial class Player : Form{public Player(){InitializeComponent();AutoRegCom("regsvr32 -s dm.dll");}private void button1_Click(object sender, EventArgs e){Dm.dmsoft dm = new Dm.dmsoft();dm.MoveTo(30, 30);}static string AutoRegCom(string strCmd){string rInfo;try{Process myProcess = new Process();ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe");eShellExecute = false;myProcessStartInfo.CreateNoWindow = true;myProcessStartInfo.RedirectStandardOutput = true;myProcess.StartInfo = myProcessStartInfo;myProcessStartInfo.Arguments = "/c " + strCmd;myProcess.Start();StreamReader myStreamReader = myProcess.StandardOutput;rInfo = myStreamReader.ReadToEnd();myProcess.Close();rInfo = strCmd + "\r\n" + rInfo;return rInfo;}catch (Exception ex){return ex.Message;}}}}。
按键插件应用篇注意:本篇做为按键使用大漠插件的插件篇,本篇会按会员要求有所增补,故顺序会有所改变,请大家按实际顺序观看!第一节、教你做一个最简单的打怪挂在我们做游戏的辅助工具的时候,一般是将游戏窗口化,这样是为了将来游戏多开或者是后台打游戏,前台可以看电影等等做准备的。
1、先查找游戏快捷键一般的游戏都有快捷键,这个我们要仔细的查找。
2、使用按键精灵来XXX一个简单的前台挂通过这个简单的挂我们可以看出A、怪物的级别不同,被打死的时间也不一样,所以我们要判断打死一个怪的时间B、人物的血量消耗到一定比例时加血的问题C、珍兽加血的问题D、加血药吃光后买药问题,等等这些我会在以后的教程中一一的给大家讲授好,现在开始第二节第二节、大漠工具、插件的使用。
1、大漠插件与工具熟悉按键的朋友都知道,大漠的插件是免费的,并且是免费插件中几乎最好用的插件这个是下载XXX:下载注册方法:打包dm.dll到附件添加以下代码在脚本最开始//这句意思是解包文件到文件夹PutAttachment "c:\test_game","*.*"//这句意思是创创建并返回对像set ws=createobject("Wscript.Shell")//这句意思是注册大漠插件ws.run "regsvr32 c:\test_game\dm.dll /s"set ws=nothingDelay 1500我们可以在D盘做一个游戏的文件夹来使用。
在D盘做一个TianLong的文件夹吧,大家来看我的演示。
第三节、文字识别的方法。
好,大家都注册完了吧,现在开始讲一下文字的识别方法1、我们先在上边所说过的文件夹中建立一个记事本吧,名还是为TianLong.txt,然后打开大漠工具,打开或新建字库。
2、我们就找这个字吧,“路”,请仔细看我的操作好,文字识别大家都会了吧,我在下一节给大家讲一下游戏的后台判断。
首先说明下大漠综合工具制作字库的过程和原理1.截取你所需要的图片2.点击你所需要字的颜色3.点击提取点阵4.输入字符按回车生成字库具体的原理我不好说,但是就我的理解是:对图片中不符合指定颜色的部分去除掉,然后二值化获取点阵,点阵也就是这些颜色的分布规律,二值化就是黑白两色,RGB格式中黑色"000000"白色"ffffff"由于我的脚本在别人电脑上运行的时候经常失效,今天改成16位色后我机器上运行也失效了,而我这个脚本主要采用的就是大漠插件的找字功能,我以为是机器间的色偏造成的,一直想法子算色偏,但是我失败了。
后来我想起论坛上有个帖子专门讲过同色系的RGB格式中R值是不变的(不好意思忘了作者了,在这里致谢)于是我就在大漠综合工具的色偏处输入了00ffff结果是在16位色环境下,大漠综合工具中二值化区域内的字显示的跟我在32位色环境下做的一模一样,接着我提取点阵,制作字库,进行调试,命令格式如下:dm_ret =dm.FindStr(0,0,978,585, "码", "ffd463-00ffff", 1.0, x1, y1)If x1 >= 0 ThenMessageBox x1 & y1End If准确的弹出了x,y的坐标值接着我换32位色做同样的调试,显示结果与16位色下相同,我测了坐标正好是我要找的字的左上角经多次测试发现这个方法中字色的R值必须为FF或00(至于F1,01等未测试,有兴趣的朋友可以试试)庆幸啊以后找字可以不考虑偏色了呵呵再说了考虑我也不会算具体原理我也不是很懂,但是我估计应该是:我比较了点阵中R值相同的所有点,取得符合二值化点阵区域内所有的点造成的再次提醒此方法只适合R值为00,FF的其他位置相同的未测试当然这么做效率是低了点,但是在我看来脚本应该是:稳定性>通用性>执行效率,毕竟脚本也是你编写的一种软件吗鲜花,银币在哪拿来啊呵呵简单说下后台操作的方法,先判断该窗口是否支持后台,用下面的语句:Hwnd=Plugin.Window.Foreground()Hwmd=Plugin.Window.GetkeyFocusWnd()If Hwmd<>0 thenMessagebox "可以"ElseMessagebox "不可以"End if然后把下面的放在脚本开头Hwnd=Plugin.Window.Foreground()Hwnd=Plugin.Window.GetkeyFocusWnd()//下面接自己的代码首先后台一点是要有句柄、这个很简单第一步我们先打开抓抓,接着点击句柄接着把鼠标移到你所要后台的窗口上,按下F8 是否看见当前窗口句柄那里出现一串数字?把它复制下来第二步我们点击图像,在指定窗口句柄那里打钩接着把数字复制进去按下抓图键(Print Screen SysRq) 是否只看见你要后台的的图像呢?对着你所需要的坐标按右键加入点1 记住坐标然后加入到后台鼠标点击里面就行了第三步我们在后台命令中找到鼠标指向窗口点击插入命令是Hwnd = Plugin.Window.MousePoint()第四步我们要进行后台鼠标点击或者后台输入键盘命令是Call Plugin.Bkgnd.LeftClick(Hwnd, 0, 0)在按键看了很多教程关于"多开..."的我看了后回味,似乎都是单线程的,往往新手会问,难道不能让精灵同事做2件事情吗?新手问的其实是问:按键可以多线程后台吗?由此我突然奇想且试验成功.且次试验可将任何的单开后台变为多开后台脚本.如有愚昧的地方指指教了. 作业:设计一个在记事本上后台打字"1"的循环代码要求:能循环多开Hwnd = Plugin.Window.MousePoint()rem aCall Plugin.Bkgnd.KeyPress(Hwnd, 49)Delay 500goto a注:8.0写的如只有7的同学自己翻译不太难的回复后能见教程本帖隐藏的内容需要回复才可以浏览第一步:将禁止脚本重复运行选为否(在是否循环的下面)第二步:设置启动热键为F2(以免与记事本热键冲突)第三步:保存退出(或选调试)第四步:打开第一个记事本文件,鼠标指中按F2,此时可看见后台打的111出现最小化第五步:打开第二个记事本文件,鼠标指中按F2,此时可看见后台打的111出现最小化........此时你如果将多个记事本都打开看他们都在干活呢-------可以无限后台多开-多线程的哦总结:第一步很关键.启示:如果我做的"打1"的脚本换成打怪的呢?本帖隐藏的内容需要回复才可以浏览第1步:什么是后台插件及命令首先我们要明白什么是后台插件以及后台命令,在编辑窗口找到全部命令,找到窗口插件(建议大家可以站内搜一下361插件,下载后放进去,看一下361插件的命令),点开后点击每一条命令仔细看说明,对比每条命令跟前台命令的对应关系,这样我们就可以把对应的前台命令转换为后台命令了。
还有一小时下班,没事做,教童鞋们在易裡用大漠插件,嘿嘿,好多童鞋都不会怎么用,回答也累啊,没办法,普及一下咯,看图!第一步,下载大漠,必须的!第二步,注册DLL文件,必须的,很多种方法!这是大漠自带的,很好用,注册的时候一定要dm.dll, regdll.dll, 注册大漠插件到系统.bat ,这三个文件一定要在同一个目录下,很多童鞋就知道,以为只有注册大漠插件到系统.bat 点击就行了,好用的插件也有让人蛋疼的地方,要留意!用regsvr32来注册,开始菜单,运行!Regsvr32是命令,后面的是你的DLL的文件路径,这个路径里一定要有这个DLL文件,不然当然是不行滴咯!重点来了,打开易语言点工具菜单的类型库或OCX组件-支持库,打开就懂了,0.0在弹出的对话框中选注册类型库找到dm.dll然后打开,会有个提示好咧,到这里易语言还是没有大漠支持库了,往下看找到Dm 版本1.0,然后单击下一步其实这是易官方的一个只有几分钟的教程,很多同学就是不愿意去看,哎,伸手党太多了!点击保存为NPK文件 ,再将NPK文件放到易程序目录的LIB文件夹里,然后配置支持库!如果要汉化,那你就一个一个函数的汉化呸,当然,很累的,但为了童鞋们,我也是汉化了一个啊,看我论坛的帖子咯支持库有了哈哈,问题又来了,很多童鞋就说了,这个怎么用啊,很明显是易的基础都没打好的童鞋,郁闷!创建一个窗口程序,插入一个变量,这个变量的数据类型我们打上大漠插件,注意,这裡是你保存NPK 文件的时候写的是啥就是啥,不一定是大漠插件这个数据类型的,我写的是大漠插件,所以数据类型也是大漠插件! 看下图这里,懂点易的就飘过吧,这里是普及教程!好了,这下可以用了,参数自己看大漠接口说明填就是了!总结了一下,要注意的有以下几点!不是所有的函数易都可以调用,比如某些函数易是用不了的,大漠接口说明说得很清楚,这个要注意!还是有些问题,,,为啥在我的电脑上能用,发给别人用不了我写的软件呢?,简单解决办法如下:打开易语言,选择工具,中的系统配置,选择通过名称為“ _启动子程序”的子程序来启动!然后在 _启动子程序中写初始化代码:还有就是不管对方是否注册了大漠,都需将插件文本写到自己的程序目录下,我也不知道啥原因,有些机子程序目录下没插件文件在他就运行不了,额,有待研究哈,好了,有空再聊聊,就到这里啦!。
大漠插件开发手册大漠插件是一款用于自动化操作和控制Windows系统的软件开发工具,它可以模拟鼠标、键盘等操作,并提供了丰富的API接口,方便开发者进行各种自动化任务的开发。
本手册主要介绍大漠插件的基本用法和相关API接口的调用方法,帮助开发者快速上手和开发自己的自动化任务。
1. 安装和配置大漠插件- 下载大漠插件的安装包,并进行安装。
- 配置开发环境,将大漠插件的安装目录添加到系统路径中。
2. 创建一个插件对象在代码中引入大漠插件的命名空间,并创建一个插件对象。
```using System;using System.IO;using System.Runtime.InteropServices;namespace DM.PluginDemo{class Program{static void Main(string[] args){DmPlugin.Plugin dm = new DmPlugin.Plugin();}}}```3. 配置大漠插件的基本参数在创建插件对象后,需要对插件进行一些基本参数的配置,比如设置插件所使用的窗口句柄、设置插件的工作路径等。
```DmPlugin.Plugin dm = new DmPlugin.Plugin();dm.SetPath(Path.GetDirectoryName(System.Reflection.Assembly. GetExecutingAssembly().Location));dm.SetDict(0, "dm_soft.txt");```4. 使用鼠标相关的API接口大漠插件提供了一系列鼠标相关的API接口,比如模拟鼠标左键点击、模拟鼠标移动等。
```dm.MoveTo(100, 100);dm.LeftClick();```5. 使用键盘相关的API接口大漠插件也提供了一系列键盘相关的API接口,比如模拟键盘按键、模拟键盘输入等。
大漠窗口绑定和后台的实现一什么是后台后台功能的实现是按键类外挂的一个飞跃。
从按键启动以后霸占整个电脑,实现了不影响用户其他操作;实现了同时对多个窗口进行操作。
其实后台功能用VC来解释就是,通过获取窗口的句柄(就先简单理解为每个窗口都有一个唯一的编号)。
然后绑定此窗口,相关的操作都是针对于这个编号的窗口进行的,从而不会在其他窗口有鼠标和键盘无法使用的问题。
二窗口绑定窗口绑定在大漠里是通过两个函数来实现的。
对了,这个就是大漠开发包里的那个开发手册。
第一个是普通的绑定。
第二个是高级的绑定函数,参数更多,可以设置的功能也更多一些。
具体使用中根据自己需求看手册里这里的介绍很多,刚才试着贴了一下,太多了就不贴了。
需要了自己看。
现在我们就用最通用最简单的来绑定一个窗口示例:// display: 前台鼠标:前台键盘:前台模式0dm_ret = dm.BindWindow(hwnd,"normal","normal","normal",0)// display: gdi 鼠标:前台键盘:前台模式1dm_ret = dm.BindWindow(hwnd,"gdi","normal","normal",1)// display: dx 鼠标:前台键盘:前台模式0dm_ret = dm.BindWindow(hwnd,"dx","normal","normal",0)// display: dx 鼠标:windows后台键盘:windows后台模式1dm_ret = dm.BindWindow(hwnd,"dx","windows","windows",1)// display: dx 鼠标:dx 后台键盘: dx后台模式1dm_ret = dm.BindWindow(hwnd,"dx","dx","dx",1)// display: dx 鼠标:windows3后台键盘:windows后台模式1 dm_ret = dm.BindWindow(hwnd,"dx","windows3","windows",1) mode 整形数: 模式。