粉丝3258获赞2.7万

大家好,我是郑一,那么从今天开始啊,我们来讲二零二三年的最新的易语言内存逆向系列课程的第一课,游戏数据交互的原理以及啊熟悉一下 c e。 呃,那么这部分课程啊,是我们整套的内存课程当中的下部分啊,上一部分呢是我们讲的是 啊一元乐玩涂色讲,呃,已经讲解完成了啊,前面我已经是发过很多的课程, 那么从这一部分开始,我们更新下一部分内存部分的课程,大家可能都知道啊,我们做的课程呢是细节是比较完善的啊,是非常完善的,所有的这些框架啊,还有一些这个实际的操作啊,都是完整的 好。呃,那么我们不多说啊,这个这一部分呢,同样呢也是在实际的操作过程当中带领大家去把这些知识点呢,把它啊学会, 那还是按照我们目前的一个学习方式,以前学习呢,可能是会把这些会编的代码前期呢先给大家通通的讲一遍 啊,然后呢再进入一个查找,但是我个人感觉啊,呃,这样讲的话,可能大家把一些会编的基础命令认识之后,可能 也是记不住啊,因为大多数都是这样反应的,那我们不如说在这个逆向的过程当中发现这一段代码是我们需要的,那我们把这段代码呢详细的进行抛 剖析,剖析讲解,在讲解的过程当中呢,我们也把这些会编代码就把它记就把它记下来了啊,这样更加的深刻,大家学习起来可能就 嗯不会那么的浪费时间。同时啊这种方式我是个人是比较认可的,说有一些会编代码,说你前期可能啊,讲了三十个,四五十个的,这样会编代码可能你用了啊,一周左右的时间你全部都记住了,那你当你在吸收别的知识的时候,嗯, 你就忘记了啊,你是记不住的,所以说就采用这种方式,我们把这个数据分析的时候,把这些数据都分析,分析的时候出现了这些,包括二查数啊,列表啊,还有一些这个普通数组啊,这些都讲解一遍之后,他自然而然的这些绘本代码里边 就有我常用的这些基础会编命令,所以说在剖析这些这个数据的时候,自然而然的就会讲到了,然后我们再用代码把它这个进行一些功能的实现,这样是一定可以记住的。 好了,那么我们就正式进入今天的课程,数据交互的原理呢,大家要懂第一点,所有联网的软件,网络游戏等啊,所有联网进行联网的软件,那 包括网络游戏,接下来我们用网络游戏啊做称呼啊,不仅是他啊,只要是联网的都是这种形式啊。 客户端啊指的是玩家本机下载的游戏与服务端,那么服务端呢?就是游戏公司的服务器, 我们为什么要把这个游戏下载到本机啊?那么他就是客户端,然后,呃,游戏公司的服务器呢?叫做服务端。像你打怪一些升级了,说你我在这个本机下载的游戏,我砍了十个怪升级了, 那你这是需要与游戏公司的福气去进行交互的,他反馈给你客户端说告诉你可以这个升级了,他就给你这个升级啊,就是就说客户端与服务端他是要实时进行交互的, 那他们两个的通信都是用封包进行通信,那什么又是封包呢?这里又产生了一个问号,又产生了一个疑问,说客户端与服务端 通信都是用封包进行的,那封包呢?记某种协议组成的一段字阶级进行, 那这里又产生了一个协议,说某种协议,那在这啊,我们稍后会有解释。首先通信都是用封包来来进行的,那这个封包又是什么?大家可以想象成两个人打电话,那么封包呢?就是说话的内容, 说 a 给 b 打电话,那么他们两个中间说的什么话呢?就可以看成是封包,就说客户端与服务端,客户端通过这个发包函数发给服务端的时候,他们两个这个内容就是一个封包, 那封包是某种协议组成的一段字结集,那这个协议又是什么呢?协议可以看成是封包的余种, 那两个人打电话还是用这个例子,两个人打电话,一个用中文,一个用 英文,那这样可以吗?就说一个会中文,一个会英文,他们两个是交流不了的。所以说啊,你告诉这个,呃, a 与 b 打电话,你告诉 b 说你用这个中文, 稍后我给你打电话,你用这个中文来给我沟通,来与我沟通啊。打电话的时候这两个人都用中文,是不是他们两个就可以这个相互听得懂啊? 对吧?那这就是一个协议,协议呢?总结一句话,就是可以看成是封包的一个鱼种是用,用什么?这个,呃,用什么鱼种来进行一个通信啊? 总结一下,联网软件客户端和服务端通过约定好的协议用封包进行通信。上面这第一点呢,讲了什么是封包,然后又什么是协议,还有客户端与服务端的一些知识。 好,第二点,网络游戏的代码的执行流程都是在本地计算机,这句话可能说的比较多啊,字体可能比较多啊,我用一个简单的就直白一点的这个啊,讲解吧,可能大家更容易理解啊。我们用一元来举例说,我们写了一个这个, 嗯,显示时间的一个软件用一元来写的,那你在写这个代码的时候,你是不是需要把这些代码都添加到一元当中啊?我们打开一个吧,我随便的打开一个啊。 好,我随便打开这个原码, 呃,我们用这个全部暂停下边。这个,呃,代码 来举例说我们点击了全部暂停,那你想要这个功能,是不是就把这些代码你都要写在这个软件里边?我们静态编译的时候啊,是不是都编译在里边了?然后你发给用户使用的时候,实际上这个代码在哪?是不是就是 在用户接收了你的这个软件内?那么游戏呢?游戏的客户端,你下载的这个游戏,你就可以把它看成是一个大型软件啊, 对吧?他大型软件的代码是不是都在这个客户端内啊?那我想要想要找他的一些功能,是不是我们附加 ce 或者这个 od 就可以找到他的一些功能?靠, 因为有一些功能我们是写在这的,是写在这个软件内的,对吧?但是一些重要的数据它是不会 呃,他是呃,需要这个实时的去呃与这个呃服务器进行通信的啊,这点要说明,但是大家要理解说我们为什么说网络游戏的代码执行的流程都是在本地计算机把这句话理解,那就是因为这点, 因为本地的这个游戏的客户端呢,你可以把它看成是一个大型的软件,因为这些一些功能的代码你都是写在这个软件内的,对不对?所以说你会找到他的一些功能,靠,说我全部暂停,这就是一个靠,这就是一个功能。如果找到这个 call 的时候,那我一调用是不是他就执行了全部暂停?无论是这个 e e, x e 的程序还是游戏的这个,那么它底层呢?都是一个呃,当你用这个 o d 或者 c e 的时候,它都是一个底 层的代码,就是会编代码啊,这点要注意,就说你这个,它在会编显示呢,就是一个 coul 的形式,这个子程序。 好,那么大家理解了,这个网络游戏呃的代码的执行流程都是在本地的计算机,那知道这个了,就说有一些功能卡,我们附加之后就可以找到他的一些啊那功能, 那通过逆向分析获得代码,获得游戏功能 car, 我们在调用 co 实现对应的功能,这是刚才我直白直白的讲的 靠的一个调用流程,那这也有必要说靠的一个调用流程功能,靠,然后封包,靠加密封包,然后用这个发包函数进行一个发包, 这个发包函数呢?还区分呃直接发包以及现成循环发包。这个后面我们会讲的啊,会讲的, 上一套课程也讲过这个跳出循环法包,三十二的,六十四的已经讲了很多个游戏啊,好,你先记一下他的这个流程,因为这节课是一个啊数据交互的原理,说知道我们在游戏公游戏当中的一个动作, 可能说,呃,我们用这个单机游戏来视力啊,说我想要一个跑动的一个动作,可能是鼠标的一个,呃,鼠标,鼠标键盘的一个动作,然后呢?会有一个这个,呃,这个不,不漏出不漏出来啊, 可能会有一个功能靠,然后呢?呃,功能靠呢?封包,靠,然后再把这个封包进行加密,因为大多数的这个网游啊,他都是这个加密的封包,不可能说一点这个不加密的啊。呃,然后用这个发包函数发送,把这个数据包呢发送 给这个游戏公司的服务器啊。好,直到这个流程。然后我们再来看第三点啊,也是刚才也讲过啊,功能康呢,就是相当于一元中的一个子程序,十一中的函数刚才设立的时候全部这个暂停的时候,那是一个子程序,对吧?嗯, 他你用这个 c e 或者用这个,呃, o d 或者叉 d bug 啊,附加之后啊,他最终展现的就是一个会变代码 co 的形式啊。啊,在高级元当中, c 中呢,他叫做函数 数据类型,这一点也要注意说我们写一个亿元程序的时候,中间会用到很多的数据类型,还有一些这个啊,变量的数据类型,对吧?那么一样的游戏他就是一个大型程序,程序中又会分为很多板块啊, 一元叫做自定义数据类型,高级元中叫做类,如人,人物的一些基本信息,人物类背包的一些信息背包类都包含着不同的数据类型,这个吧,第四点你尽量的去理解就可以了,如果你看过我前面的那个自定一元的自定义数据类型,到这你就理解了 啊,也就说啊,不仅是常用的这个数据类型,还有一些自定义的数据类型,就这一个类啊,这个到我们分析一些这个涉及到这个类的数据的时候,我们会啊,讲的啊,会讲的, 那这几点啊要去理解,然后啊,我们接下来就来熟悉一下这个 ce 啊啊,我开了两个啊,一个英文一个中文啊,后面课程我们用这个英文的啊,开中文的目的呢?是让大家做 下对比,说我看英文啊,刚打开的时候我不知道他是做什么的,那我们就可以用这个再开一个中文来看。首先我们来看呃,这个左上角的这些菜单啊 文件,然后有新建扫描标签,清空列表,打开进程保存,另存为这些熟悉就可以了。编辑,这里还有个设置,点击设置,然后 右上角这这个图标下边也有个设置,点击他,他们是同等的效果啊。编辑,然后设置,还有菜单显示,呃,辣椒本,创建窗体,添加文件。第三 d, 这还有个帮助,都可以看一下,还有这个教程 大家可以看啊,如果说你是非常初级的一个小白,一点 ce 都没用过,你可以玩一玩这个教程啊,可以去看一下, 然后下边还有这三个小图标,这个是什么呀?这个就是选择一个打开进程啊,选择一个应用程序给它打开, 然后这是啊,打开实体表和未受保护的这个,然后这是保存你当前目前的一个数据,这些后面我们都会讲解啊,点击一下这个设置,点这设置也可以点击这个编辑,这设置也可以啊,默认就行了啊。我给大家看一下我的设置,因为接下来的设置呢,是针对于这个单机游戏的啊。 好,看一下工具,这你们我每个界面啊,都给大家看一下,快速的看一下,你们跟着来, 照着来做啊,跟着来做常规设置,这这些都勾选,然后仅在标签的时候,这些都勾选啊,仿照来这个来设置,还有工具,这这个勾选热键 这些,这这这些都是无所谓的啊。禁止随机。这扫描设置,这扫描设置,这要看一下啊,默认开启快速扫描这两个,然后在这这些都勾选插件没有啊,插件没有,没有添加 语言,这你可以反选择这个英文啊,但是咱们就用中文吧。调试器选项在这设置的是使用硬件断点,这个要进行设置啊,然后这些使用 windows 调试器, 如果说你不是用咱们的这个单机呢?你用你的游戏呢?你用 windows 的调试器不行,那你就用这个 v e h 的这个要跟你们说,不是说非要用这个的啊。好, 然后点击下这个 log, 这些你们都去。呃,基本的照着做就行了,那下面再再讲几个知 知点啊,二 d 游戏与三 d 游戏,二 d 游戏呢?大多数的这个数据啊,他都是用这个二 d 或者二点五 d, 呃,大多数他都是用这个整形,比如说啊,人物的血值,还有现在的这个是, 这个是快捷栏啊,快捷栏,快捷栏显示的这些红药以及蓝药的数量,二 d 或者二点五 d, 那么常用的他就是一个用整数型来表示这些数量 啊,那如果是三 d 的游戏呢?他的血值或者蓝量啊,还有这些数量,呃,他通常用浮点型啊,坐标啊, 人物的一个坐标,三 d 游戏的一个人物的一个坐标,还有一些其他的数据,他常用的是浮点型啊,就是说你们就记住就行了。说我们三 d 游戏大多数常用 用的是用浮点型,他的坐标啊,然后这些呢?他都有可能用浮点啊,然后我们二 d 或者二点五 d 的时候呢啊,他的坐标,呃,常用的是整形,然后这些呢?都常用的是整形,整形在这是如何表示呢?再看一下右侧这新的扫描,再次扫描,撤销扫描 啊,精确数值值大于值小于搜精确数值,那么比如说啊,我们这有一个五,那我就搜五,这是精确数值,对吧?然后你还可以其他说值大于,介介于两值之间, 然后减少的数值是数值增加了。先去熟悉一下,后面我们都会用到这些类型进行扫描啊,先熟悉好,我点击一下新的扫描啊,之前这个是扫描过,下面还有个 数值类型啊,二进制字节啊,二字节,四字节,八字节,单双浮点,这些字节,数组字符串等等这些都去熟悉一下啊,这些勾选呢,都跟着来勾选一下啊,我们先来简单的附加一下 附加这个单机啊,单机游戏啊,附加。然后我用这个红药先来做视力,他是一个应该是一个二点五 d 的游戏啊,他不是三 d 游戏啊,好,我们就按照整数形来搜索啊, 这个数量啊,红药数量这里显示五,对吧?四字结呢,代表的就是一个整形。好,我们点击首次扫描,他有了这么多,那我们就吃一个药,他变成了四个,那我们点击四,就是在这些扫描到的数据的基础上呢,我们再次扫描,在这里边去筛选, 看哪个变化成了四,再次扫描,所以说他叫做再次扫描。好,那我们很明显这个不是他变成了六了,对吧?目前来说他还是四,所以说把它删除啊, 那我们就可以把它脱下来,脱下来之后双击这个数值给他改一下,看能不能给他变动,改为六,他没有变啊,血脂一般是不能变的,因为这个血脂要变的话,你不是无敌了吗?所以说他这些都是属于重要数据的啊, 那我们可以再吃一个,说吃到三,看他会不会这个变到三,跟着变到三确实是变到三了,那这个就证明说是我们血值显示血值的一个 显示血值。好,那么这就是一个简单的一个小试牛刀啊,先熟悉一下这个 c、 e, 还有些其他的说这些还有这些 都可以去熟悉一下,说我有一定的基础了,那你可以就向上追一下,提前的去预习一下,因为下节课开始啊,我们就要啊,以这个人物的一些属性来作为一个切入点,进行一个查找,先提前的去预习一下,然后我们再用便利工具啊,再用一元来把它显示出来。 整套的课程啊,我们从这个模拟再到这个逆向,全程都是实际的操作,进行一个串联的啊,串联的不是说单独的说,我们用一个小按钮下边单独的一个靠进行串联,而是整体的把我们的框架进行一个 完整的串联啊,到这相信大家都听懂了,那么我们就不多说了啊,大家把这节课的知识点啊,基础的部分把它理解,我们下一节课再见。

大家好,我是郑一,那么这节课啊,咱们继续讲一元达摩 ulo 的第三课,标注训练工具的使用。 好,那么咱们打开这个前面课程讲的这个文件夹啊,把这个 ulo 课件的文件夹打开,压缩文件减压好之后,配置环境我们都已经配置好了,那从这节课开始,我们接下来就要一些实际的操作, 用一个小小的实力来给大家进行讲解。打开之后进入这个 ulo 一这个文件夹,然后 ulo 二 这些是什么?是咱们解压出来的那个压缩文件,同时要记住,一定是要在环境配置好的情况下来看咱们这节课,无论你是 gpu 还是这个 cpu 的啊,环境要配置, 那把这个优乐综合工具啊,把它打开啊,这个我已经是打开一个了啊,就把它关掉吧啊,关掉,然后咱们选择点击进入好这个工具的窗口啊,你可以适当的给它拖动的大一点啊,太小了也啊, 不是这么太好操作啊,就适当的给他拖大一点啊,感觉你适合自己的这个眼光就可以了啊。 好,那这个是咱们 ulo 的一个文件夹,这个是大漠的,我解压出来的这个文件上节课是没有的,那这个是什么呀?就是前面的这个我给大家准备的这一套的 后台,大漠后台下载的文件当中的这个大漠点 r r 好解压出来,它这个版本就是七点二三三六,同时啊, 它里边这个大没插件的接口,说明啊,还回来在这在这里。好,它是最新版的了,最新版的里边呢,它就包含了一些 ai 的一些命令,看到没有,上面这增加了一个 ai, 那 这些就是咱们优乐的一些工具都在这还有接口总数啊,你有时间说我工具这一 这一节课说你工具会使用了,那么你就可以自己去看一下他这个接口,说明当中的这个 ai 部分的一个命令,这些命令也很简单,没有多少啊,他已经标注的很明白了啊,已经很详细了,我们后续说把工具篇讲解完成之后, 会讲解这个命令篇啊,会讲解命令篇,在实战当中给大家进行一个讲解,还有注意的一些事项啊。 好,那把它关掉,这个不是本节课的重点啊,回来这个工具。好,那点击,然后把这个工具打开之后,咱们启动一个雷电的一个模拟器啊,雷电模拟器 我是用了一个打地鼠的这样的一个小小的一个游戏来给大家讲解这个工具啊,还是要强调一遍,就说咱们打开这个小游戏的目的啊,是讲解这个工具啊,并不是去操作这个游戏,这一点要哦说明一下。 好,那关于这个打地鼠这个小游戏啊,你随便下载的哪一个都行,你自己去注册一个账号啊,然后登录只要是这个类型的就可以了,然后你来跟着进行一个操作。那首先咱们打开这个工具的时候,新建一个数据及新建 一个数据集,这里有一个标注训练验证,这是两个,先讲标注训练这个界面,点击标注训练验证,可能要分为我们下节课讲了,因为这个课程还是比较细致的。 标注训练这里有一个数据集,我们要做什么,就说你比如说我是这个是打地鼠的一个小项目,那 我们新建一个打地鼠的一个数据集,如果说你在这做的是一个 f p s 类型的一个小项目, 那你在这再次新建的时候,起名字就是 f p s, 所以说在这个数据级是要区分开来不同项目的,那我这里给大家详细的进行举例说我做的是一个打地鼠,那我点击新建,新建一个数据级,名称叫做什么?就叫做 d d s 打地鼠的首字母的一个 大企业,点击确定。好,那你看这个路径他在哪啊?他在哪?这个数据级的路径在哪?是不是在地盘悠了?咱们这个文件夹,然后在这个里边你就可以去找一下啊,就就给大家详细点说,我去找一下地盘 在哪呢?然后是拖动的小一点, ulo 一啊,找一下在哪啊? ulo k j 啊,这个,然后 ulo 一,然后 ulo 二, 然后是 you 了,接着就是在哪个 d a 开头这个文件夹内,然后是 d d s, 对不对? d d s 这个就是咱们打地鼠的这个项目的数据机,那你再点进来之后,你看这里边有三个文件夹,当我们后续说操作标注 完成之后,他的一些文件都在这,暂时你知道。说这个路径,那我再来举例说 我这个环境,当前这个环境的电脑,我做了很多的项目,不仅是这个打地鼠,那我还做了什么?还做了一个 fps 的,那我在这里再次新建一个叫做什么?叫做 fps, 点击确定。好, 那你再来看说,打开这个文件夹,给他退后一步,他这个路径在哪?还是在这个 data 这个文件路径下,你看点回来是吧?他们这一个路看到没有就出现了 fps, 你再双击进去之后,同样的还有这个 对不对?还有它的一些 f p s 这个数据级的一些相关文件,当你训练之后说它还会在这儿,所以说你要注意你这个数据级 选择的是哪一个?你选择的当前是 f p s, 那你做的这个这个训练的一些数据,它都会在这个 f p s 这个文件夹当中,好,那咱们做的是这个打地鼠,对不对?那就打开说新建之后,那可以打开,你可以进行一个刷新,对不对? 那当前的是 fps, 我们要做的是打地鼠,所以说打开,打开谁呀?打开这个打地鼠这个文件, dds 点击确定好这个路径是不是就变了?好,那之后再标注训练的时候,他的这些相关文件都会在这个路径下。好, 那这个上面这讲完了,这个数据机还有下边这个命令,他是什么意思?那还有这个来源,这指定窗口,指定区域指定窗口,指定区域指定窗口呢?就说你要结 哪一个屏幕的一个窗口,那这个时候就有必要了解一下,说 ulo 它标注训练,它是怎么去训练,以及它是怎么去识别的。实际上它标注训练的时候就是 根据不同的图片的动态,每一张图片里边的动态他去训练识别,那最后他去识别这个图片的时候,还是依赖每每一个截图的。 我这么讲可能大家还是听不懂,还是听不懂,那就类似于是什么呀?类似于你这个游戏窗口的一个刷新的一个频率,比如说啊,比如说我这里就简单的举例,相信到这大家能听懂。比如说你现在这个界面说我没有,我没有去操, 操作的时候他是不是这个界面?那你说我没有操作的时候,他就不刷新了,他刷新这个画面他是刷新的,就说每隔五百毫秒或者说一秒他刷新一次, 你不刷新他这些界面,他怎么会变化呀?对不对?所以说他是刷新的。那同样的,咱们优喽说为什么要采集他的图片的数据?比如说你想要,我们还是进来吧,进来一个这个小游戏当中, 这里是讲原理啊,然后咱们再实操说打地鼠这个小游戏,说我也想要打这个小地鼠,对不对? 你看他是动态的,动态的这个图片他可能有不同的形状,这个是比较简单的,他他就就是这个形状,对不对?那有的像一些 fps 类型,他有蹦的,有跳的,有蹲的这种类型,那他都是一个人物, 对不对啊?这个游戏还有这个广告,所以说他抓取他不同的这个部位去训练,都给他归纳为一个人物的一个类。 好啊,在这啊,大家如果晕的话,就先不用去管他,然后咱们就接着来进行一个操作吧,就是你要指定窗口,听不懂的话,你就唯一的说我需要给他指定窗口进行一个截图,我想要训练哪一个窗口呢?我就 给他抓过去,比如说这个小这个准星拖进去,拖进去试一下截图有没有效,这里单张还有定时,先选择单张手动的点击一下截图有没有效果呀?是不是有效果?就说这个 雷电模拟器这个小游戏画面的这个图片已经截取出来了,对不对?那就证明有效, 有效的话他是不是就是咱们的游戏的画面?那这个游戏的画面,你能说我只是截取这一张吗?不能, 因为你看他这些他都是不变化的,但是在游戏当中这些人物啊或者怪物啊,他走跳蹦跳他都是变化的,所以说你需要用到可能几百张图片,上千张图片,然后每一张图片去给他标注, 标注,标注相同的类,然后你再去给他训练,这样讲大家估计就都明白了,你需要需要很多他不同动作的图片,然后按类型去给他标注。 好,那咱们接下来呀,在既然说窗口已经固定了,说这个截图他是呃有效的,那咱们就用这个定时间隔就 让他自动的去截图,否则的话你这样你没法操作了啊。单张截图只是测试一下他截图是否有效,然后定时截图就是间隔多少秒,他自动去截图一张,那我给他设置一秒,好,先把这些给他删除, 先把这些给他删除。那大家在这可能说还是不了解说这个他的这个工具的快捷键怎么用的?那实际上在这大漠优乐综合工具下边有个综合工具说明,你去看一下,这都写着呢。 alt 加 w 是一个标注,加 e 呢,是编辑当前选择框对应的类, 加 q 是删除当前图片,清空当前标记加 q, 那就删除当前图片,我们看一下左边这是不是我截了两张图片,那 a、 l、 t 加 q 是不是删掉了一个,再加 q 没了?好,那接下来咱们就进行 一个重新挑战的一个操作,首先要重新挑战,然后点击开始截图他,他自动的加了一个,两个好,点击开始游戏,然后手动的去打,打一个, 要把他不同动作的这个怪给他,让他出来,好,打一下,再打一下,再打一下,然后再去训练 好,这个可能耗时一点啊,要让他多通通关两次,多通关几次 啊,这个可能就需要一点时间了啊,看这个图片左侧这里都已经累积上了啊,这就他每隔一秒他就截取一下这个画面,稍后我们来看啊,我们先给他通关,通过通关几关。 好,恭喜过关下一关 啊,这个截图如果你感觉这个截的太多了的话,这就给他调个两秒啊, 跟着操作啊,这个就是为了照顾这个新手朋友,要把这个工具 学会使用,咱们才会这么细致的去讲啊,一定要跟着操作好,然后把它点击,点击, 手动的去点啊,就是为了要截取他这个画面啊,画面的图片点击点击 啊,下边这个广告 看出现了不同的这个图片了,它是黄色的。好, 好,差不多了啊,这个关卡可能时间太长了,也没有这个其他的,呃,小怪的一个变化了啊。好,那 咱们就先给他这个停止,停止截图,也可以按快捷键停止,你看一下他有多少张图片了,他有这么多的图片了,有这么多的图片了。 好,咱们点击最上面的这一张,这个它是没有用的, a l t 加 q 给它删掉,因为它不是那个打地鼠的那个画面。好,再把这个删掉,没用,没用,好,再加 q, 好在这它也没有怪物的图片,也没用,删掉 这个就有用了,看到没有这里就有了,再向下好,他也有了,然后这个没有删掉,删掉就是没有的都给他删掉,这个也给他删掉 啊,我们边标注的话,边删边这个删除啊,然后它下边 这个仅显示未标记的,这就是一个小使用这个工具的一个小窍门,我们一个一个的去标注,然后编注,标注好了之后向下走哪个标注了,我们就能够看出来哈, 然后上面这些键你先不用去了解,还有这个桌面,这其实就是屏幕的一个桌面,因为我们不需要这个屏幕的桌面,还有后边这个设置,这啊截图的一个热键,你可以给他进行一个更改,说与你当前的一些设置啊有冲突了,在这你可以给他进行一个更改啊。 目录这还有删除啊,后面我们再给他讲,这个就比较简单,这还有一个添加啊,还有一个添加 好,然后点击第一个,我们先给它进行标注,我们先标注这个小怪,那就 a l t 加 w, 好出来了,这个十字,十字的这个准星呢?那咱们就把它的这个 啊啊,这样吧,这样标注吧,就只标注这个。 好,这个小小脑瓜的一个椭圆形的一个范围,那它是一个小怪,那就是一个 g 啊,就是怪的意思。好一个类啊,它是一个怪物类, 此类不存在,需要添加吗?点击确定添加一个,看到没有,这个时候他就出现了一个怪物的一个类,那 如果说这是一种类型的怪,那其他的类型我们怎么办?那同样的你可以再次进行标注,说 alt 加 w, 这里是什么呀?这里是一个,呃,许,或者说标就标注这吧, 这里是给你们举例啊,它是一个什么?它是一个这个洞口,哎, dk, dk, 他又是一个类啊。点击确定, ok, 然后 alt 加 w, 再次的给他进行标注,选择什么?选择这个 dk 就是洞口,看到没有?这样是不是就区分了?这个是怪,这是一个洞口,他俩相同,对不对?这是一个怪,他是一个相同的, 那这样相信大家都懂,那实际上这个就不需要了,就点击删除,点击 删除,我只是给大家这个演示,他就把这个 d k 这个类看到,看右上角这里可以给他添加类别,在这添加,同时标注的时候添加都可以,也可以在这添加。说我再给他怪怪添加一个类,看到没有,直接在这就下来了, 对不对?好,那把刚才的这个 d k 这个类给它删掉,鼠标右键删除,把它删除, 然后把这个 g g 这个给它删除。这个 啊,作者强调过啊,这个不要这个大面积的去删除,因为他是要便利一次的,就说这个累的时候不要去删除他耗费资源的。这个我是给你们演示,尽量你们操作的时候要考虑好这个累,你要标注哪一个?不要像我刚才这样,我添加很多累,在 再上右侧去删除,因为他是便利的啊。这个,呃,之前这个作者说过啊,不要,不要去这么去做啊。 好,那第一张图片标注完了,那就第二张图片。好,这个也是同样的给他进行一个标注,他们两个是一个怪,虽然你看头一个图片他没有带这个,带这个小眼镜是不是就是哭的这个画面?但是 他们两个是一个怪,所以说 a l t 加 w 都可以给他进行标注,实际上这种他已经是敲完了,就是已经是打完他了,打完他他才会出现这个眼泪,这种他才是没打完的。那出现眼泪的实际上就不需要了,这个图片就给他删除,因为你打完他了,他 是消失的时候就出眼泪了,所以说你再去打他就没必要了,就是直接让他加 q, 把他删掉,看下一张图片,这个他没有这个眼泪,对吧?而且加 w 再次给他进行标注, 要记住啊,你如果精度要高的话,你要把这个边缘尽量都给他标注好,那咱们就是做一个小小小的课件,就快速一点,下次我就快速一点了啊,快速一点好,然后说我标注这一个怪,那还有一个小窍门,说怎么能快速的说,像我们这样说一次一 标注,然后鼠标去点击这个类,再点击,确定是不是比较慢呢?那怎么样快速一点?把这个类鼠标右键设为默认类,把它进行勾选,进行勾选,勾选之后你标注完成之后,他默认就是这个怪物类。好, cdr w 快速的标注 好,然后下一下一张啊,这个也没有用,删掉,然后咱们呢就快速一点操作,看一下多长时间啊,这个讲的太细了啊。好, a r t 加 w, 快速一点吧。 好,把这个 ok, 然后摁空格啊,是下一张图片,这张图片啊已经标注完了,摁空格到了,下到了下一张了, 然后继续 r t 加 w, 好,按空格,下一张 a l g 加 w, 好,空格,这个可以删掉了啊,好,删掉 好空格,然后继续这样的去标注好空格,这个已经是把它打打掉了,哎呀,他加 q 删掉这个,加 w, 继续进行标注, 这里咱们就暂停吧,相信大家到这就会了,我把下边的这些图片呢都给大家 标注完,标注完成之后,我们再来讲这个训练的参数,先暂停。好,那么到这啊,出现了一个新的一个物品,就是这个小星星,那你就需要给他再定义一个类了 啊,可以再给他定义一个类,这个叫做什么呀?这个叫做金币,因为他增加的是一个金币金币对不对?所以说 a l t 加 w 的时候,可以把这个小星星给他圈上 好,然后再给他增加一个类,这是第二关的图片了啊,这个就不能设设设置这个默认类了啊,或者说修改类啊,这个就叫做给他,你可以在这说标注完成之后,鼠标右键 啊,这有删除还有复制,可以给他进行一个修改,这个叫做什么?这个叫做金币 gb 吧啊,随便起一个叫做 gb 吧,快速一点啊,点击确定好,可以 看到他已经增加了,然后就去这么去操作。好,我们继续这个暂停啊,标注完之后,然后咱们再来讲右下角的这个参数,暂停 好了啊,这个已经是全部标注完了啊,大家可以看一下左侧这里啊, 他这里有标,还有文件名后边的这个零开头啊, o o 开头就证明你标注了,证明你标注了,如果是 x 的话,就证明你未标注,可以看到啊,咱们全部标注完了,标注完成之后,那么下面我们就来开始进行一个这个训练 还还有一点啊,跟大家说一下吧,除了你看这个 o, 还有这个 k 呢啊,下边还有这个仅显示未标记,你可以点击一下,勾选之后,你看这里他都没有了,那就证明说你已经全部标注完了,对不对? 因为仅显示未标记,如果有未标记的他就显示出来了,但是你勾选之后,你看图片都没有了,就证明你所有的图片全部都标注完成了。好,那就把它去掉,勾选 好,然后可以从上到下,你看一下咱们呃圈住的这些,对吧?这些小红框好 好,还有这个小黄色头的这个怪物啊,他们两个虽然是一个怪,但是这种的需要打两次啊,打两次,你看这种他这个头上边没有这个黄黄色的小帽子,对不对?但是我们都给他定义为这一个类了,就是这个怪啊, 好,定义这一个了,然后在后边的识别当中,你就可以用鼠标点击他两次就行了,那个黄色的帽子需要点击两次,这个没有黄色帽子的鼠标点击一次就给他 打下去了,所以说所有的示范这种就给他直接点击两次就行了,就给他打下去。好,那这里标注完成,再来看右下角这选择模型,这这个五 n 呢是训练最快的, 就是它是最小的,然后逐渐的增大,同时它逐渐的也是 越来越精准,越来越精准。比如说你像一些 f、 p、 s 类型的,你需要这个瞄准头部,那你就尽量的去给它最大了,这个可能训练起来的时间就要长一点,那咱们演示的话就取一个 s 吧,啊,比这个 n 稍微精准一点,取一个 s 训练轮数,他这里规定的是最少是三百次,就说你不能说二百二百多次啊,不行,最少是三百次。 这个 p 处理这十六,一般情况下默认就可以了,如果你的显卡不好,这就要进行给他调低, 如果显卡不好的,比如说现在我的这个七五零啊,正常的话,你就需要给他向下调的调低的啊,但是我就不调了,能抛起来,因为之前我测试过工作县城这里八啊,就这样默认。好, 然后咱们就开始进行一个训练,点击开始啊,这里不用给他全屏啊,点击一下这个啊,窗口的一个屏幕啊,给他拖动一下,调整一下, 好等待他啊,等待他。 大家一定要跟着课程下来啊,有 耐心的跟着下面去操作,因为后续还涉及到了这个转换啊,模型的转换,虽然说咱们发过那个大漠作者他录制的视频,但是有一些人可能,嗯, 听着可能不是那么,呃,太太好这个操作,因为毕竟是咱们这里的,是用一个小实战嘛,所以说尽量跟着我的课程来进行一个操作。好,我们稍作等待啊,他这里卡是正常的,因为电脑的配置是比较低的。 好,我们等一下,看他能不能跑起来 好了啊,可可以了,但是这个速度调整一下吧,不调整的话太慢了。 看到没有?大家看到没有,这一第, 第一次的话这里才跑,跑到百分之六十七,我得调整一下啊,我们点击一下这个,这个停止,把这个批处理给他调整到八啊,给他向下调整,再次继续开始,要不然太慢了啊,这个训练一次的话可能要一两分钟,那么 三百次太耗费时间了。同时这个模型我们稍后再来个给他重新选择一下,如果还这么慢的话,再重新选择, 尽量让他快一点这个训练啊,然后在你实际的这个项目操作的过程当中,你就具体的去根据你自己电脑的配置去调整啊,右下角的这个参数。好了,我们再等一下,看一下他的一个速度, 这样咱们还是把它这个换一换吧,我看一下这个模型调到调到五 n, 然后这个我们给它工作现成 再次改一下。 好,这次好像是稍微快一点, 同时他这个速度,这个图片可能也是有点多啊,也是有点多, 然后这个类啊,也是有两个,也是有两个类,那如果说你有很多个这个类型的话,你这个电脑只能是勉强的去跑,像这个七五零的显卡的只能是免 啊,这个还是有点,这个太慢了啊,他不是,不是不能跑,不是不能训练啊,你看他卡在这,他不向下走,就证明你这个太慢了啊。点击停止,咱们给他十六,给他换回来,然后八 啊,我这个模型给他调小一点吧,就将就着去,让他跑吧,将就着跑完吧, 咱们这是这个做这个视频,要不然的话,正常你训练项目的话,是不能用这这么低配置的电脑的啊,太浪费时间了, 这么一点图片可能都需要几个小时。训练三百次的话, 好,咱们先暂停吧,要不然 他这个有点耗费时间。跑起来之后,然后跑完之后咱们再继续吧啊,这些都是没问题的啊,他已经是开始跑起来了,但是这个速度你看还是很慢啊,我们看一下这个录像啊,二十九分钟。 好,然后就有点耐心吧,让他跑完三百次啊,先放在这吧,然后咱们先暂停,跑完三百次之后咱们再来继续讲。好,先暂停 好了啊,咱们继续,因为训练这个三百次啊,已经是训练完成了。训练好之后,那么这里啊,他会弹出一个这个成功的一个提示,我们点击啊确定,然后成功之后,那这一步做完之后,接下来呢,咱们就可以给他 进行一个这个转换,模型的一个转换好。然后呢你们刚开始接触这个工具啊,大家一定要把这些啊给他熟悉一下这些界面,还有这个仅显示未标记。这里啊都讲了开始停止转换啊,稍后来讲这个转换,因为模型现在已经是训练完成了, 这也要看一下点击这个看到没有?把右侧的这个什么隐藏了,这个按钮隐藏了,点击这个,然后再把它再点击就打开了。添加类别,你可以手动的说,在这我添加一个 e 啊,将那个类点击添加下边就出来了。好,然后咱们再来看一下,还有这个界面还有哪些没讲 好,那这里就是指定一个窗口,这里是根目录啊,默认就是给默认就是一根目录,因为咱们新建的一个这个数据集,新建的一个数据集,然后你指定他的一个根目录好。 呃,然后接下来咱们就把训练好的这个模型啊给他进行一个呃转换。我们先 呃进入这个文件夹,来看一下训练完成之后,它都生成了哪些文件?它会有一个 p t 文件的啊?点 p t 的一个文件,因为你没训练好的话,它不会生成这个点 p t 文件。好,咱们先打开来看一下,打开之前的文件夹 啊,退回来先看这个,这是 c f 一啊。呃,打地鼠,这个是咱们的,还有这个 f p s, 你看一下这里边没有其他的,只有这两个,是不是这个里边文件还是空的, 然后这个里边是空的,也就说等同于这两个文件夹都是空的,只有两个文件夹。那再来看一下咱们这个打地鼠,这个文件夹当中 他多生成了一个文件,同时他又多出来了一个文件,对不对?那这两个文件看一下空不空,他不空了。咱们之前啊截图标注好的这些文件都在这,然后再看一下这个这个文件夹,那这些是什么呀?这些实际上就是 你标注的一个这个啊,标注的一些文件的一些信息,这些大家都不用管,就说这些,你不不能删啊,不能删掉 啊,你圈的多大范围每一个图片啊,标注的这个框框,标注的多大?都还有这个图片都在这两个文件当中。那咱们再来看一下这个 v 五杠七点零这个文件当中都有什么?哎,这里生成了一个点 p t 的一个文件,那这个就是我们训练好的这个啊,数据 训练好的。呃,模型训练好之后呢,那咱们再给他进行一个转换啊,训练好之后进行转换,点击转换。呃, 请输入模型加密的一个密码,因为这个模型通常你跑项目的时候都是需要进行加密的。好,那咱们就给他一二三啊,简单点吧,一二三四五六,就是六个一,六个一, 还有输入模型的一个尺寸,输入模型的一个尺寸,看下边,他这里有个说明了, 模型输入尺寸默认是六百四乘以六百四,如果你想提高速度,可以适当降低模型输入尺寸,比如三百二乘以三百二,但是速度的提升会带来精度的降低,这里的长和宽是一样的, 并且必须是三十二的倍数,就说他必须是三十二的倍数,那你添加这个三百二,是不是他也是三十二的一个倍数啊?对不对?好,六百四,也就说 六百四模型默认的尺寸是六百四,就是他最最精准的了,最精准的了。但是如果你转换的时候,你这里添三百二,他识别的速度上会提升。你说当后续调用代码的时候,你用六百四 这个尺模型尺寸,那你识别也许是十秒,但是你换成了三百二这个模型尺寸,他识别也许就六秒,或者说八秒,他会比六百四快。所以说根据你自己的实际的操作需求,或者说测试自己去 这个调整啊,这里咱们就默认这个六百四就行了。好,六百四,然后点击这个确定六个一的密码,点确定 好,等待啊,他在转换当中,我们等待, 呃,好了啊,这个消失了,这个窗口啊,然后啊,呃,这个窗口它, 呃,转换成功的时候啊,他在这会有个提示啊,就是成功证明咱们转换成功了,然后点击确定,再把这个窗口给他切出来啊,然后说我们转换模型成功之后,再打开这个文件夹,打开文件夹我们进入什么?进入这个啊?威武杠七点零,同样是进入这个啊, 模型就会在里边哈,我们双击进来,然后我们来看一下,这里边有三个文件,生成了三个文件,这个点 p t 的是默认的一个文件格式, 这个我们用,我们就不用管他,就就用不到啊,就不用管他。然后这个 dm 叉这个文件呢,就是我们训练好的模型,因为之前设置的加密呢,那就是他是加密的,训练好的一个模型,大家自己去记一下啊,这里我就不给你们用这个文件去记了,就说 后缀名是点 d m 叉的是加密的模型,因为你在写项目的时候,你在调用这些模型的时候,通常都是加密的啊, 通常都是加密的,所以,呃,正常来说我们写项目的时候都是用这个点 dm 叉,而下边这个点 onx 后缀名的是什么呀?是我们训练好的模型未加密的, 就是说这个模型你已经训练好了,这个是没有加密的,这个是没有加密的。那通常来说我们调用模型调用哪个?就是用这个加密 模型,用它,这个是训练好的没有加密的模型,那么就是这两个啊,这两个模型就是上面这个是加密的,之前咱们设置加密密码的时候是六个一,对不对?那就是模型加密。下边这个呢是训练好的没有加密的模型,他们两个一个加密, 一个未加密,通常咱们大漠调用的时候是用上面这个好了,那么就呃到了这一步,呃,还有一个是验证, 验证一下这个模型能不能用,就说你训练好了模型之后还要去呃验证一下,说他能不能识别到呀?对不对?都可以用这个工具去测试, 因为你识别到了之后,咱们调用代码用这个模型他才成立,所以说标注训练,你训练好了之后,接下来你还需要去进 进行一个验证,点击验证这个界面。好,咱们应该呃放在下一节课讲,不用一节课来把它讲啊,把它讲讲完啊,可能大家吸收不了这么多知识,所以说到这就停止。那么前面呢,大家先把这个工具的这个标注训练这里先把它学会,我们下节课 再来讲验证者,然后把这个模型啊大家都保存好,下节课就接着这里来讲,直接打开文件夹给大家讲。好了,我们今天就到这里,下节课再见。

哈喽,大家好,我是 lex, 这节课的话给大家简单的讲一下大漠的一些基础工具和开发文档怎么去使用。 嗯,这些那个工具呢?文档我会发在网盘里,博客的,博客上面有地址,自行去下载就可以了。第一个就是大漠工具,这个比较常用啊,呃,只简单的讲几点,一个是绑定句柄,点这里 一个小圆圈,然后放到你要的窗口上啊,注意啊,比如说,呃,有的程序是多层嵌套的一个聚柄,他最外层是一个顶级复聚柄,他 里面可能会有一个这种编辑的,还有一个 stat spa, 然后状态。呃,游戏的话,嗯,看不同游戏而定吧,大家自己去测一下, 比如说上这个就是标题,就是新建文本文档,一个 note pad 一个,里面呢就是一个类名,没有标题, 主要主要是记住标题和类名,主要这两个,那个绑定解绑。 呃,第二个就是找图和找色,抓图,找色,呃,比如说桌面上这个停了八步,然后我去抓,我选取 这个范围双击,那么左上角加载了图片,然后 选取的范围显示这张图片的范围,左上角的 x 是七四九, y 是十五,右下角右下角这个地方八九三九三,左上角右下角 x 一 y 一 x 二 y 二。然后还有一个就是找四点一下, 点一下之后左上角应该会有个放大的圈,我这可能有点 bug, 点击了以后它会显示坐标, 然后 颜色值, app 的颜色,这个我们也会用到啊,偏色的话,这个昨天找色还有找字的时候用, 简单的会借两点就可以了。还有一个注意的地方,就是比如说找这个图,我图的大小是这些, 我图结的大小是这些,你有可能会找不到,所以找的时候大范围可以,再如果找不到的话,范围可以再大一些, 但不是越大越好。你如果从左上角找到右下角,那么 他会耗费性能的,就是范围越小越好。你比如说我只抓 这一点点,这一点,这个图我的范围可以选这些,或者是一个 logo 这么大。 嗯,这边是字库,后面会用到,会给大家讲一下。呃,简单的会抓图和找色,一个剧本绑定就可以了。 呃,接下来是一个测试工具,这个测试工具会要需要这个注册码和附加码的,这上节课给大家有介绍 注册工具的作用是什么呢?因为我们每个游戏的聚柄和绑支持绑定的模式都是不一样的,我们在写之 钱需要先去测试一下,比如说记事本的,我去绑定 你就能看到他有一共有三个,第一个是外层聚冰,第二个是艾迪特聚冰,第三个是 that spa, 然后对应的类名标题,这个我们后面会用到 绑定参数呢,这个就是需要我们去设置的,比如说一般后台的话, 比较常见的一个 windows 和 windows 三,我认识一个 windows, 点击绑定好使成功,然后我们就可以去测试一下,比如说截图啊,截图成功了啊,查找颜色 啊,应用是空白,没法去测试吗?然后鼠标,鼠标的话,比如说我们让他右键 red click, 可以键盘,键盘输入 p please, 比如说输入一个,呃诶诶,可以撸串儿,一二三一二三也可以,文本输入 也可以。呃,后面的话暂时用不到。呃,这些绑定参数 去哪里获取呢?比如说我这么多参数,我到底应该用哪个呢?那么现在就要到要用到。第三个就是 大漠的一片接口文档,比如他有一些,这里面有个箭鼠的, 有涂色的,查找图片, 等一下给大家讲一下。简单讲一下常用的,比如说刚才这个,呃,绑定,说绑定模糊,搜一下,笨办法就是挨过去查嘛,挨个点,他可能没有显示标题,这个版本没有显示标题 版的 window 整出型,那么它就是绑定的,区别整张绑定代码。我们看一下 大漠般的温度,这个 ex 的话般的温度是个基础,后面都是衍生扩展的, 我们就看他对应的吧, 高级用户使用收费的。 第一个就是聚柄整数型,一定要注意这个数据类型啊。整数型第四步类组成 屏幕获取颜色的方式有哪几种?我们现在是温度,他有 gdi, gdi2, 看你需求啊,并不是说你把所有的点上 就行,效果不是很好,需要越少越好。然后鼠标的 window, 后台的 window 是三,是窗口 dx 模式, 然后这个我没设置, 还有个是键盘的 显示,鼠标键盘帕布雷克,还有模式就是对应的,你去查一下就行。查这个参数他 让你去填,是填什么数据类型啊?这个数据类型是什么含义啊? 他后面都讲的很详细, 比如像这个都幺零幺是推荐使用的。 呃,绑定测试工具,就给大家简单的讲到这里,后面用的时候再说, 然后给大家讲一下这个 api 的常用文档 啊。窗口类的话,我简单的整理了一下美举,只给大家简单的看一眼美举,美举类型, 比如,比如这个他一定要看清数据类型是整数形,当零的时候是桌面,是桌, 桌面,然后装口,聚柄抬头标题,然后克拉斯内是类名,就我们刚才获取的,然后至于这个就是 你以哪个 super 或者哪以以哪个参数去查询。比如说一的话,如果只设置一的话就是一个抬头,二的话就是类名,一加二的话就是 一加二的话是就是都用后面有个实力还返回值, 我们只需要 s 的话,比如说这个,只需要这个就可以了。打印他的返回值, 然后查找区别 啊。类名艾特, 然后返回值没找到,返回零,发动 spa, 然后正如星的聚柄要发送的文本,成功一,失败零,然后实力代码,然后绑定窗口 啊,刚才讲过还有个肩膀 解绑成功,失败。呃,是参数,不需要参数那个,呃,他是退出的时候去执行。这个后面我们我们会用到。还有 获取窗口状态,聚柄标志啊,我们后面会应到是否存在,然后是否勿响应。 比如这是实力代码,大漠 get window 聚丙三,他就判断是否最小化,如果是一,那就是已经最小化了 哦。键盘鼠标找图,找色,多去配置找字,嗯,这是比较常用的,就是免了,免得, 嗯,新学的同学去挨个搜去了,然后到时候会发到博客让大家学这门课的时候,或者是后面的时候自己去搜一下就可以,然后后面的话,呃,比如说这上面没有的话,嗯, 大家还是要靠自己就百度或者从这边挨个找嘛,没办法。比如说 ig, 我们上节课的 ig 是怎么来的?为什么要用注册码?都是大漠给定好的, 多调试,多打印出他的返回值就可以了。 嗯,好,这节课就简单的讲到这里,好,谢谢大家。

大家好,咱们开始今天的课程啊,咱们今天呢要来讲这个大漠,大漠插件, 那么这节课呢,总共讲以下几点啊,第一点是认识大摩擦键,就是咱们知道大摩擦键是什么鬼啊。第二呢是这个使用大摩擦键,那么在使用过程中啊,他使用的时候也分为好几个步骤 啊,比如说啊,咱们等下再说,然后还有使用过程中啊,你出现了一些错误啊,这些错误方法的分析啊, 不,不是说使用大漠出现的问题,而是说你怎么去在使用大漠的过程中啊,你使用大漠是有个过程的,这个过程出现的问题啊,还有一个呢,就是解气这些模块,因为咱们一般 使用大货插件的话啊,就是咱们一般都是用的模块吗?对吧?咱们必须得知道这个模块的原理,知道吧啊,你不能光单纯的去使用他脱离的模块,你也要来正常的使用啊,就知道他的原理这样子。 那么首先第一点,咱们要先认识一下大漠插件啊,那么怎么能认识他呢?那么我这里的话,我也没有往上写啊,因为在总结也不如人家自己总结的好,那么咱们打开他的官网啊,咱们来看一下,这是人家所写的啊, 那么首先呢,大漠插件呢啊,实际上就是一个 d l 啊, d l l d l, 那么呢,它是采用 v c 六点零编写的啊,咱们先不管它这些啊,那么如 如果说你要调用的话,知道吧啊,那么他是一个采用这个 com 接口的啊,也就是说你调用的方式的话,也是采用 com 接口的方式来调用啊,那么 他适用于所有语言啊,当然啊,像安卓上面就没有试过,电脑上啊这些,呃,一元啊,是吧?这些 拍子啊什么的啊,都都是试过的,这些都是试过的,可以用的啊,那么他这个版本呢啊,那么咱们课程上啊,就是说咱们整套课程,咱们目咱们所用的这个版本呢,是三点,一二三三那个免费版, 知道吧?啊,因为在后面呢有发展成很多,就是有有收费版本,那么咱们用的呢是免费版的啊,很久之前一个免 免费版,那么呢他这个插件呢啊,这里有告诉你他的特色啊,那么这里特色呢,咱们只看前三点就行了。第一点文字识别领域啊,那么呢他在这个文字识别领域识别速度和准确率啊,是 number one, 你看人家自己说的啊,那么呢他只需要几百毫秒,然后性能强劲,是吧?这文字识别啊,就识字方面,然后呢还有后台建署啊,也就是说,呃, 可以后台操作你的鼠标键盘这个操作鼠标键盘不是说电脑上这个铭文啊,就是说刚才我鼠标指针这个啊,那么操作这个是前排,他就是后台啊,那么还有一个涂色,就是找图找色啊,然后怎么样取色,怎么各种 各样的底色,这种知道吧?那么第四点就不看了,第四点的话就和咱们所用到的技术无关啊,他是采用这个的话,呃,就是更深层次的啊, 那么他这个里边呢啊,咱们所用到的呢,也就四点啊,也就四点。第一点就是文字那一方面啊,文字沼字和识字啊,也就这两个啊,这是第一个,然后第二个呢是后台建署 啊,当然不能只说是后台建筑吧,就是他这个大漠插件里面给你集合的建筑也有前台啊,也有前台,当然这个后台的话也要看对,也要看目标了,因为有些目标不同,那么这个可能就用不了啊,那么同时你要知道啊, 你们一般在开发的过程中开发的都是游戏啊,我如果没猜错的话都是游戏或者是模拟器什么的脚本是吧。啊,那么在那些你可能用后台用不了啊,那么你非得想解决他,你要不啊,去找大漠的官方要不呢啊, 看看他的收费版本就是 vip 版,能不能解决啊,如果不能解决,那么他他这个版本他就不让你用,明白吧啊, 所以说一般的话如果说什么啊,后台怎么操作不了啊?怎么的是吧?直接来问,那么这样啊, 第一啊,你先把当前这个版本所有的绑定方式,现在你还不知道绑定方式,咱们等一下我告诉你啊,咱们之后告诉你这个绑定方式都去试一遍, 都试一遍还不行是吧?啊,那么呢,当前这个版本不支持,可以采用收费版,就是 vip 版啊,最新版的免费版,最最最新版的 vip 版啊,就掏钱的那种版本啊,那么你看看这个行不行,那么这个还不行 是吧,那么因为你用了大漠插件,大漠插件他让你不行,那你肯定不行,对不对啊?他不支持,就像我没有开发这样的功能一样啊, 明白了,那么你还,但是你这样的情况下还想用后台怎么办呢啊?联系大漠作者啊,让他进行开发,明白了,那么这种的话就定做啊,当然大漠插件他本身也支持一个定做服务 啊,他支持定做服务的,那么这个我就不说了,因为咱们是用免费版的啊,咱们也不是去搞游戏, 那么第二是后台建鼠啊,第三就找图找字取色啊,然后比色,就各种各方面,就涂色方面啊,那么总结算下来就是涂色字,然后还有鼠标键盘,就这几点 啊,那么在下面那些呢,就是他给你提供的一些东西啊,大家请看,他给你提供的啊, 支持什么各种方式啊,什么什么颜色啊,识别啊,连连几个背景色是吧?这些都是只是啊更深层次的一个介绍啊,更深层次的一个介绍啊,后台是吧 啊,答题系,这个咱就不看了,那么再往下看呢,在他又有什么啊?这里是免责声明啊,就是你开发的软件啊,跟他无关,明白吧?因为他只是提供了 插件啊,如果你们用来做坏事的话,跟他无关,是这个样子的啊,那么呢,弹幕插件的话,咱们现在还不是很了解,对吧?啊, ok, 那么呢咱们来看一下, 这个是大漠插件三点一二三三版本的一个文,一个文件啊,咱们打开来看,那么它里边提供了这么多一个这么多的文件啊,时间有效文件呢啊,就两个啊,或者说就三个,哪三个呢? 第一是 d m 点 d l r, 那么这个文件呢,是大漠插件的主体啊,你调入的时候调入的就是他这个插件里面所提供的代码,了解吧?啊, d m 点 表,那么呢还有一个呢,是大漠接口说明,那么大漠接口说明这个帮助文件,大家请看,这是个帮助文档对吧?这个呢是大漠插件啊,他的一些使用说明 里边所提供的一些函数啊,来打开来看它里边所给你提供的一些函数,比如答题啊,提供的一些函数这些发出文档晓得吧? 啊,就是提供的一些函数命令啊啥的介绍啊这种,那么还有一个呢,就最后一个啊,注册大陌生人刀器,这是注册的,注册大陌的, 但是不知道是啥对吧?啊,咱们呢来了解一下大漠的使用过程,那么呢你就能大概明白了啊,就是说大漠 应该如何来使用啊,那么他使用的时候啊,他有三个啊方就是大漠的话使用大漠的话有三个步骤啊,第一呢你要注册这个插件啊,这个注册是什么意思呢?是要注册收费吗? bo no no no no, 不是啊,不是 这个注册插件呢,因为呢大漠他是采用 com 库选编写的对不对?那么你要把这个 com 库注册到你的本机上面知道吧?啊所以说呢你要注册插件啊,这个是系统的注册,相当于注册的注册表一样,这个样子,明白吧? 啊?那么第二创建对象,那么创建对象呢是什么呢啊?是这个大漠的话你注册完成之后对吧,你需要在这个软件的调用, 那么如何在软件内就是如何你用易元去借用呢啊,应该如何用易元去借用呢?明白没? 对不对啊?用一元调用,在一元当中有一个类啊,有一个类叫做对象,那么这个对象的话啊在一元就采用这个对象形式进行调用,那么采用对象形式进行调用的话,首先要创建这个对象, 知道吧?要先创建大漠的对象,了解吧?啊?咱们不明白对象是啥? ok, 咱们稍后回去写一遍啊,回去写一遍,那么第三呢?就开始使用啊,第三就是开始使用,那么呢咱们可以来试一下,首先第一点啊,咱们先注册。


窗口才睡啊, 先追这的,弄弄弄一个可以控制他开始暂停,继续停止, 就是学一下县城吧。 painting, 嗯, 开始暂停,暂停 继续, 估计叫 呃,就几个小时可以录制呃,十十来节啊,几节视频吧。 嗯,然后就是后台可以点击这个开始的按钮,然后他同样可以点击别的啊,比如游戏啊,网页啊,或者模拟器啊, 雷电模拟器,后台啊都可以啊。那怎么选呢?我们我们在这里,在程序一开始的话,我们先把它取到窗口去啊,后台的他需要窗口去柄啊,双击这个程序即便亮窗口去柄, 现成的话他需要一个现成去比去比转速型啊。 出行窗口聚柄的话,我们先开用大模工具看一下这个窗口啊,拖这个圈到这里。他这个窗 口看起来是有多个巨饼的啊,多个多个巨饼对吧?多个巨饼的话 多个置顶的话,我们我们用那个精益助手啊,精益助手拖这个圈啊,拖这个圈到。我们要点的是这个开始的按钮,我们拖到拖到他这里 标题,我们然后在这里看到什么,在这里右键啊,三层一一代码,三层一代码,然后是精益模块命令啊,然后复制并关闭, 然后在芋圆上面粘贴啊,粘贴出来一个纸。程序叫做功能取锯柄啊,就是取到我们这个按钮的锯柄啊, 我们现在试一下是不是对,是对还是错啊。窗口去饼等功能,取去饼, 调色输出 窗口距离 创稿之饼表示一下。 添加一个经典毛款 调试 三三幺八四四,我们用大拇工去看一下,做到这开始这里三三幺八四是对的对的, 然后我们把这些功能给加上,开始暂停,继续停止, 插出一个嘴唇需用来控制他暂停的。继续吧, 定一元 长寿时间整肃。行啊, 然后我们定一个逻辑变量,是否暂停是否暂停。 逻辑性啊。 点击点击这个开始按钮的话是否暂停了一下, 这里写一个判断选手, 但如果是要暂停的话,正在卡在这个循环里面啊,是否暂停? 嗯,两百吧。 延迟 延迟时间啊,这定义颜色自己定义的颜色。 我们现在写一下他的后台点击啊,判断选手 i 等于零 let s。 嗯,鼠标消息啊鼠标消息 窗口制品水平坐标垂直坐标 窗口脆饼就是我们取的这个窗口脆饼 水瓶坐标五五。 我们是点这点就开始点他这里啊点他这里啊点他这里 设定一延时。 嗯,给他拜拜拜拜。好,秒 暂停的话就是是否暂停啊,等于针啊,让他 等于真的话,在这里他就会使循环的啊。暂停了啊。 she is she 是否暂停等于假 停止就结束啊。 我们现在试一下啊, 带麻拉长一点好看一点。 我们先这里给他清零啊,然后点一下开始会点后台会点我的手表 是在我这个开始按钮这边,他不会跑过去点的啊。这种就是后台点击了,后台点击我鼠标在这里啊,那么现在暂停啊,点一下暂停啊,他 刚才点赞停了,他们用是我这个代码,这里这里的代码刚才是鼠标照的太快去掉了判断选手 给他补上去啊 们接着试啊,开始 暂停啊,这一次暂停了啊,这一次代码起作用了,然后点击继续啊, 接着弄了啊,后台就是我的鼠标在,比如我在这开始按钮这里,他他鼠标不,会不会影响我们电脑操作别的东西啊?别的东西你想怎么操作都行,他反正他这后台去点啊。 呃,这一集就到这里吧,到这里, thanks。

啊,接下来给大家录制第十七集啊,就是啊,大漠沼字还有识别字啊,大漠的话早志,还有识别字的话,要先建立一个大漠智库啊,我们在这里又见新家啊, 海文版大漠是酷, 然后我们在弹幕工具上面啊,就是这样的啊,打开或编辑新建字库, 然后我们刚才新建的大漠支付把它添加进来啊,然后接下来我们我们就用这个使用方法来实验吧,我们这样啊, 嗯,抓头啊,抓头之后把这个使用方法给他都抓上来, 抓上来之后要在这里啊,点一下这个,看我操作点一下这个小格,小格的点啊,然后移到这个使用方法上面啊,他这里是黑色,我们就点到黑色里,点一下出来了啊, 然后我们提取点赞多个,看一下是什么样的。有一个舍字,有一个用字,有一个方字,有一个 法式,把它添加到字库里面。十,添加到当前字库用 添加到当前字库方,添加到当前字库法, 添加了当今支付他这里这个工具上面,这里就代表已经识别成功了,然后我们要在代码上面试一下,一个是找字啊,一个是一个是识别啊, 我们上一次的代码这里这一段给它屏蔽掉, 早知的大末叫做 fire 啊,这里是大末点 fire 呃, s t r fire s t r 啊, 范围的话,范围的话,这这找字或者识别文字,不用整图,我们就再点一下抓图啊,这这这个范围找就行啊,这里对吧, 这这这里就是他的范围了啊, 使用导致的话,要先给他呃,设置一下智库的 的一个路径啊,叫做 set s e t 啊, 这些的话在大漠帮助文档都能查到啊,都能随便都能查到,这有有,这个帮助文档要经常查,然后这些命令不用记住,一般的话我们可以把大漠的命令看成一个整程序啊,然后就提供参数,得到结果就行。这里啊,返回这整数型 两个参数,第一个参数字库的需要取值为零至十九,最多支持二十个字库啊,字库文件名啊,它的路径这里有,例子,是安静,静静的例子 零,呃,路径就是取运行末路 g r 实验文本,实验文本点 tst, 这里可以吃啊,然后看一下这里面需要什么参数, 要找的字,使用方法 是 ps, 这是它的色彩描述啊,色彩描述,我们是这里啊,在这里,这个栏有一个色彩描述啊这里,然后复制下来。 行车度一般零点九就行,颜色 x y 三点一二三三的。大漠一样是变体型啊,我们调试一下 早至 点一下实验文本,系统找不到指定的文件,但是路径报错了。 实验文本我看一下啊,是不是弄错了 啊,这里叫大漠车库,不是实验,我们把它改一下啊,所以说我录视频没有备,没有,没有备课啊, 大漠之苦, 呃,它,它有,它不是负一,就代表找到了,这里是找到了啊,然后我们接着来 o c r, 就是识别啊,一般的话弄个变量接收啊,返回文本,文本 ocr, 呃,文本性 范围跟上面的一样啊,范围跟上面的一样啊, 接下来就看其他的, 他就还有两个参数。呃,色彩描述啊,色彩描述是一样的,相射度 零点九, 返回原本,返回原本, 调试一下啊, 点一下能找到他这里有数据能找到啊,然后假设我们把这个给挡住啊,看一下能不能找到他。这是前台的,肯定是找不到的 啊,找不到这个负一,它是返回是负一,然后返回是空文本啊,没有识别到是空文本, 找字找不到就是负一,返回是负一啊,然后十 o c 啊,如果 o c 啊没有数据,他就是空文本啊,空文本在这里 不挡住是可以的。我们这个没有绑定窗口,没有绑定窗口就是针对整个电脑屏幕的, 找到坐标,然后 o c r 出结果的文本啊,这一集就差不多了啊,就这样啊,看一下这个怎么停止的。

这节课我们讲在 m f c 里边如何免注册的使用,大漠啊,我们新建一个空的这个 m f c 工程, 这里选择,我是用的 vs 二零一九啊,选择 m f c 应用,往下拉一下,有一个 m f c 应用新建它,选择一个位置,我们选一下啊,常用的位置,嗯?叫什么呢? class 吧, class show 课程展示创建,这里有一个应用程序的类型选择的,我们不要选这个多个文档,这个类型点一下有一个基于对话框。多个文档类型呢,就是像 office 啊,那些 程序有那个标题栏呀,工具栏那些东西,我们大部分用的像简单一点就是一个对话框程序,然后点下一步,其他直接点完成就好,等待一下,他会创建完成。 然后我们可以看一下二零一九下面一个 m f c 程序的一个主要的几个文件吧。 呃, p c 区点 h 啊,这是一个预编一的头文件, 他必须说你新加的一个任何 cpp 软件第一行都必须包含这个啊,在以前的版本中是叫 std afx 那个文件,他现在这个版本就是把名字换, 你看每一个 c p p 文件里边第一行都是这个 demo resource 呢,就是我们定义的一些资源 类的东西, target 是那个 s t k 的版本。 framework 就是 m f c 需要用到的哪些投文件,它是都包含在 framework 里面,它这 p c h 应该是 include the framework 啊,你看是吧, 它这样的话,你每个 c b p 文件里面包含这个 p c h 的时候啊,它就默认的把这个 m f c 里边所有的投文件都包含进来了啊,最关键的就是 class show 点 h 和 class show dialog 点 h, class show 点 h 呢?就是说负责创建这个 dialog 的, 你可以看一下它这个 cpb 文件里面实现了哪些东西,它这个里面的实现的代码啊, 它有一个 initial instance, 像我们如果,呃你做的程序防止多开的话, 就一般是在这个 initial instance 里面创建一个那个护齿体。这个后面的课程会讲到啊,就是说在这个程序启动的最开始的入口部分就是 initial instance 这个函数, 我们可以看一下下面你看 class show dialogue, 它创建了一个 dialog, 创建了一个模特对话框,叫读 model, 它不是 create。 毛豆和格瑞特有两个区别啊,格瑞特他是不会遮挡后面的,像毛豆对话框就模特对话框呢,他会遮挡后面就是你点不下去,你只能点这个对话框。 这个如果你对 m f c 程序不是太熟悉的话,可以啊,上网上找一些其他的 m f c 的课程,你最起码了解一下基础空间的使用是吧?不然的话,呃,跟着我这个课程上会比较累,因为我不太 会强调这些基础性的知识啊,还是说从实战的角度啊,尽快的带大家入门一个怎么用这个 c 加加和 m f c 写一个这样的自动化测试的一个工具, 这个 cpp 啊,这个 a p p 的这个类看完了,我们看一下这个大 ilog 类, dialog 类呢,就是说这个对话框的主类,那我们所有事件的处理界面,事件的反馈都会在这个 dialog 类里面处理,你看它有几个函数啊,然后一定写 dialog, 就是说这个这个对话框被创建完的时候,他会首先进 这个函数,那么如果你有一些都去配置文件啊,初始化的操作呀,比如说启动其他县城啊,包括注册大漠呀,这些东西都可以放在啊,你那些 大家 logo 里面做,我们正常来说只会动这个从正常来说啊,就是说一个程序的开始都会从这个大家 log 类里面开始,很少动这个 a p p 的类,因为 a p p 的类太太靠前了, a p p 是管理这个大 ylog 的,那我们所有东西最好是在大 ylog 里面做,不然的话你在 app 里面做一点,然后在这个大 ylog 里面做一点,会乱。而且第二个基本上我们的操作都是跟界面有关的, 是吧?那界面的东西那本来就是放在这个大 ilog 里边的,你这个 app 的这个类里边也获取不到界面的东西。比如说你在界面上放一个对按钮,你响应这个按钮点击的事件,那么你在这个 app 里面也无法获取啊, 它会默认生成在这个这个 dialog 里面呢,因为 m、 o、 c 嘛,它都是继承于这个,然后它又继承,最后它会继承 一个 cvin 的类,那 cvin 的类其实就是 windows 变成里面的一个包含了窗口聚饼的一个东西。大家做 windows 下面的成语一定要懂这个 windows 这一块的基本的东西啊,比如说聚饼啊 啊,晋城啊、县城啊,这些东西基本上要懂,不要说不是说你多精通,但是你要知道这个名词,然后我如果哪一天用就用到了啊,我脑子里面应该有这样一个目录,图书馆的目录, 我们看书也是啊,很多都是,你不能太追求技术细节,因为时间有限,是不是尽快的掌握一门新的技术,先把这个目录形成在大脑里边,然后你具体用到哪一块,再去深入的研究。 我们再回到这个几个函数里边啊,然后 cs command, 他是想一个消那个命令消息的,比如说,哎,我现在看到这个不知道什么意思,那我不管, 放着是吧?我后边用到了,那我再去了解它。 on patient 呢,是响应这个对话框整个绘制的,你如果想把这个对话框做的很漂亮,那你一般是在 on my patient 里面处理 啊,这些都是啊,如果你不懂这些东西,那可以放取。比如说这个 declare message map 什么意思啊?看不懂没关系,不用管,我会用就行了。我知道,比如说我现在这个程序,我要读这个配置文件,我,那我,那我就在昂语那些 w 里面处理,是吧?那我要注册大梦,我就在这里面处理。 我哪一天需要响应这个重绘的事件了?比如说我想着让这个段画漂亮一点,背景色换一下,按钮颜色换一下,那我再去研究一下,找一下这个 option 的是怎么做的, 我需要去做这个按钮事件这个消息处理了,或者说我需要做一个 idit 这个 空间的消息处理的,那我再去研究一下这个消息处理的方式。我们到这个 c b p 的类里面看这个引力写的 vlog 啊,呃,你看它这些都是默认的函数,都不用管,上面其实都不用管,你要做的其实是在这后面添加, 人家也给你加了注视,再次添加额外的初始化代码,前面放一个 todo 是什么意思啊?它是一个编程习惯,就是说我,比如说我写写代码,不可能一天写完了吧?那我在未完成的地方加一个注视叫 to do, 就说将来会做的,这样别人看你的代码也知道这里还没有完成。那么回到怎么注册一个大漠的组建啊?大漠组建注册大漠他有两个概念,一个是跟大漠的服务器注册授权,就是说你在大漠那边 注册了一个账号密码,拿到一个那个 k 码,你要和他注册通过了,你这个 k 是对的,你才能使用他的函数呀,对不对?还有一个免注册,我们这个讲的免注册是什么呢?是针对于系统的 大漠组件,它是一个 com 组件,对外我对我们分装成了一个 com 组件,然后你想使用这 com 组件, windows 下是规定你必须要把这个 com 组件注册到你系统变量里面, 就基本上你要执行一个批主力,但是正常来说,你们看商业性的脚本,他不可能让你再执行一个东西吧? 嗯,你直接把主城域打开,他就可以直接用大漠了。那为什么他,因为是他使用了一个免注册的方法。这个免注册的方法呢?也是大漠官方提供的一个文档,一个方法,我们从以前的代码里面扒一下,看他怎么用的, 实际上原理是什么?是从这个 d m, i, g, d, l 里面获得 这个函数,然后调用这个函数,把这个大漠 d, l 的路径传到这个函数里面,然后调用它 就可以完成一个注册到系统里边的一个操作,然后下面呢就会开始真正的跟大漠注册这个你的 k, 然后注册成功的话,会把这个版本号打出来,是这样一个东西,我们把这个代码复制一下啊, 复制到这里,这里有几个东西啊?为什么要调用 ceo initialize, 这是也是 windows 规定的,如果你调用 com 组建的东西呢?必须要在你那个县城里面声明一下 这个啊,初始化这个相当于一个环境吧,然后我们看这里有个函数,识别不了它是什么。 get work direct, 看名字就知道获取当前的这个程序正在执行的一个路径,是不是你不知道这个,你这个程序会被放到哪个路径下边, 那么就获取一下啊,这个函数是怎么实现的呢?看一下啊, 也复制过来,因为我这里为什么是 w h service 呢?我是把这些常用的一些函数啊,获取这些什么加密啊,各种什么 mac 地址啊这些东西啊,全部分装在了一个类里面,然后我需要使用的时候,我直接啊调用这个就行了。那我们为了客 课程演示嘛,我们就把这个函数拆出来,我们放到最下面,把这个类名改一下,这是这个类,是吧?然后把它声明一下, out, 加 g, 返回到定义里面,我们在这里,在这里声明吧, private 声明。成一个 private 声明的时候,就不需要加这个类名了,直接声明这个函数题函数那个呃名字就行了,就这样, 然后这样,那么这个时候我们就可以调这个函数。哎,那这里有一个红定义 country 没有定义,那我们看一下 country 是怎么定义的?看这名字也知道,就是说计算一下它这个, 呃,有多少个,多少个这个数组吧。字符字符数组有多少个吧,可以看他的 参数。刚 model five, 你如果查一下这个 minus apr 是这个函数的话,就知道这个参数就是多少个多少个,一般怎么算呢?它其实这个红啊,应该就是 size, 就是先获取,先获取这个速度的占的空间,我们再除以一下 size 的 tr, 一般就是这样算的啊,那个红定义一定也是这么写的,我们来看一下啊。 嗯,看是吧,也是这么写的,它这个意思也是 already 零啊,为什么是不是 teacher 呢?因为人家写这个红是不知道什么 结果,有可有可能是 int, 对不对?有可能是啊,其他的类型是吧。人家就写一个二瑞零,你看这些东西都是啊,写 在框架里边的一些东西,就是说你常用的一些分装都写好了,就是说你,然后你随着你工,你这个项目不停的完善,然后你这个框架会不停的完善,那这样你开发一个新的项目的时候,就不需要重复的实现这些东西了, 做起来就会非常快。好,这个 get worker 完了,你看这里也就是获取到了 windows 二零零九,它这个东西还是 挺那个挺智能的啊,那以前很早的时候,我们用二零零三,甚至二零零五,二零零三的时候都没有这么智能的, 我们在这里把这个 conder 定义一下,我们放在最前面好了,然后我们也用这个, 你看这里也可以识别了。这里呢?我是把这个啊,为什么要加这个东西呢? 这个你看这个一个变量的开头啊,名字啊,一般来说成员变量我们会用 m 杠开头,然后这个类型呢,就是 str, 就是亲类型,然后后边是代表他的名字,这是一个 就是说你写一个商业化程序的一个基本的编程习惯,这样的话,以后你看到这个变量变量一眼就知道他是什么意思。 我们生命成 cstine 变来,这样的话我在 on english 里边获得一次,那么我在 其他函数里面就直接可以获得这个这个当前执行的目录了,是不是我不需要再调用这个函数了?这个是一个什么东西呢?看一下啊, 点 h 开头的永远都是一个 handle, 都是一个句柄, h instance 是吧?下面还有一个这个类型结构的定义,这个是定义一个那个呃,函数的类型,我们也可以放在这个图文件里面定 h instance 和那个什么 handle, 还有一个 h w, n, d 啊,总原理上来说它都是一个东西,其实对 windows 来说它就是一个硬特型的变量,它通过这个变量可以找 找到这一个资源。一般来说我们就是 low 的,一个 dl 的时候,加载动态,加载一个 dl 的时候啊,都会把这个返回的句柄定义成 h instance。 这个函数呢就是一个函数的,这,这是一个类型了,函数的类型 set dl pass, 就是那个 d, l, i, e, g 导出的一个函数类型,它是两个参数,一个是啊 w 恰的 pass, 就是说你大漠的那个 d l 的路径,还有一个是模式返回,只是浪, 看怎么用啊。先录的 library library, 我们这因为这个 dior 会放在我们那个程序执行目录的同目录下面,所以说我前面获取这个执行目录以后,然后加上这个 dior 的路径,就拼成了一个完整的一个 这个 dio 所在的路径,然后加载了。我们写代码的时候,很多同学写代码的时候,掉入一个函数以后,不不判断他的返回值,然后你这个程序一多了以后,就代码量一多了以后,你出问题,你并不知道他哪里出了问题, 知道吧?所以说我们要养成一个习惯,任何一个函数,你首先不要相信他的输入,就说他的参数,你也不要相信他的输出就是他的返回值,这个是非常非常重要的一个编程习惯,你把这个习惯养成以后, 你项目出问题了,你会非常快的,非常容易的定位到它在哪个,问在哪里, 你看我们这里简单的判断一下,如果是等于 nine 啊,直接 rent first, 或者说你这里,哎,弹一个对话框, 告诉告诉用户,我这个成语出错了,是不是 mcgbox 无法加载 d m r e g 点 d l 哎呀, 这样的话出这个问题你就知道,哎,那肯定是十有八九是这个路径出问题,还有一种是可能你这个 dl 被杀毒软件 啊给占用了,所以你也无法加载。然后我们如果加载成功了就往下走嘛, 因为下载不成功,它这就是 renforce 了,下面也走不了了,是吧?它就是一个流程控制,先声明一个这个函数的结构是函数的变量, 就是这个变量的类型,就是这样,这个就是我们之前的一个定义的啊,然后获取这个 get proc gs, 就是获取这个 dl 里面的这个函数名,然后返回也是啊,那,那我们这里也在那个 给他一个提示,好吧, 无法获取函数地址, 那么要么就是你这个 d l 出问题啦,还是说怎么弄都可能出现这样问题是吧?如果正常的话呢,就会继续往下走,那我们这里又拼了一下大漠这个主 d l 的一个路径,然后我们再调一 用这个函数,直接把这个主路径传进去,第二个参数传零,哎,这样就完成了一个大漠组件在我们系统里边免注册调用的一个功能。 这个完成了以后,接下来呢,我们要做什么?就是真正的向大漠服务器注册,我们这个授权是不是看他怎么注册的啊? dm soft 没这个类型,这个类型从哪里来?这个类型是从也是大漠给我 我们的一个内裤生成的一个那个工具,然后我们会生成他对应版本的一个两个两个类型说明,一个叫 o b 键点 h, o b 键点 c p p, 这两个 我放在下面啊,导入进来,然后加一下, 先加原文件,再加头文件,你像这些动作,其实如果你框架写好了啊,那这些东西都不需要做这个,这里我们主要是为了演示嘛, include 一下啊, o b 键,你看它这里就有了嘛,我们可以打打开这个 o b 键 文件看一下啊,你看它定了,实际上就定义了一个大漠 soft 这样一个类,然后你后面就可以用它这个函数了。怎么用呢?这个是个 k 是吧?我来看看我的 k 是多少啊? 看这个纸啊,放进去, 这里是我定义 log ur 是我定义的一个输出异常提示信息的一个东西啊,我们这里先简单的用这个弹出, 呃, 如果,如果说我们需要弹出一个比较复杂的消息怎么办?就是说,比如说返回值,我要弹出来,这样啊, fmat 一下, fmat 就是支付串处理的函数, 格式化处理的函数码, d m 杠 right, 哎呀 嗯哎,复制怎么不行? 有的时候打字太快,键盘反应不过来啊, 然后这样输出就会把 这个这个字符串,他会把这个纸传到百分之 d 里面嘛,弹出来这个也是啊,如果是成功了,那我们这里也再输入一下 代码格式化一下, ctrl k 加 f 快捷键也会用啊,衡量一个程序员能力的高低,就看他快捷键用的怎么样。 你看这样一个完成就完成了一个大漠啊,注册和这个的一个过程啊,我们都在 unit 系列里面做的啊。其实如果你以后, 呃,因为什么呢?因为这个大猫的这个注册的函数,它需要向服务器申请一个授权的动作,这样会就是导致一个卡的现象,如果你在 online 练习大 vlog 里面做 太多工作的话,有卡有卡住的,有有等待返回的一个工作的话,你整个界面就会就是展示出来,就是比较卡,不是比较卡就卡在那里了,必须要 等待这个函数返回成功或者失败以后,你的一个界面程序才恢复正常,不然的话你点不动了,你点了下面会显示未响音那种状态, 所以说后面我们会把这个拆到一个县城里面做,这样的话界面归界面,县城归县城,这样的话就不会互相影响,即使这个大漠授权失败了或者卡住了,那我见面也不死啊,是不是这样的话体验会好一点?那我们 这个时候来编一下啊。啊,有个东西顺便提一下,关于这个 t 杠 t 是什么东西啊?杠 t 的内容是一个, 因为 windows 下面我们有两个东西,一个是 w 叉,一个是 cha, 就是一个宽字符,一个窄字符。我们写这个商业化程序的时候呢,一般都是默认是 unico 的编辑的,你点击属性会有一个那个 c 加加。 嗯?这哪个来着? unicord 是在哪设的? 因为二零一九就从好像是从二零一三开始就是默认的全部都是这个啊。对对,高级这个默认的这个自负级就是 uniqlo 自负级 知道吧?就是说以前还是支持 ask 自负极,现在都不支持了。你看点一下使用多字节自负极,这个好像是我后来装的这个装了一个组件才支持的。默认你安装二零一九是不支持这个 一边,而且一般为什么要装这个组呢?一般老外的开源的项目都是这个多字符字母器,多字节字符器就是阿斯卡,因为老外就是 a, a 到 z 嘛,这么多字母字母就可以完全解决了。但是说你考虑到国际化或者说中文的啊,因为我们一般都是用 unicolo, 用 unicolo 的时候, 这杠 t 其实就是恰的意思啊,如果你那个设置成 ask 的时候,就是单字节的时候,那个杠 t 调用的就是 a, 包括所有函数,你后边都会有一个这个 w, 还有一个 a。 两个啊,你看大部分 windows 函数都是有两个格制, 那这两个值是什么意思呢?就是说在宽字符下是,如果你设置成 unicle 的,那我会就调用那个 w 的,如果你设置成多字节的,他就会默认调用那个 a 的。 这里顺便提一下啊,以后像这些小知识点也会穿插着穿插着提一下就说。但是对于你来说,如果是你,你是一个新手,刚接触这个,那我暂时看不懂。这个没关系,你就是按照这个复制出来,自己实现就行了。第一步先让起来,先把代码跑起来, 然后有需要的时候再慢慢研究这些东西。你哪天哎,不行了,哎,你说这什么东西呢?那你去百度一下也行,问一下也行,在群里面讨论一下也行。 而是说做新技术的时候不要去追求细节,不要去追求技术细节。嗯,我们刚刚编映了一下,看这个啊,是否忘记像圆怎么样?这个刚 我们一开始就说了点 cbp 文件里边。第一步第一步叫干嘛? 你看这是老项目跑过来的,像新项目都是 p c, h 的,就不是 s d, d, f x 了,我们再重新生成一下, 哎,变异成功了,变异成功我们可以试着跑一下,看看,他一定是跑不成功的, 你可以下个断点跑呀看看。调试非常重要。第八个模式和 release 模式啊,有很多同学他无所谓,不知道第八个和 release 有什么区别,这个其实是非常重要的东西,你写一个商业化脚本,商业化程序的时候,一定要是我们调试的一定要是第八个,不要用 release 写,我们写的时候是第八个, 发出去的时候是类似。这两个版本是有区别的,我们看这个函数返回值,鼠标放到上面,哎,你看 d check class show 对吧?已经获得了我们这个程序执行的一个目录,是不是然后这里加起来就会找这个目录,是不是?然后我们看下这个 h instant 的返回值啊?诶? 它是 no, 是不是?它是不是就错误了?它会弹有无法加载,然后确定返回下面都跑不了了,是不是?那为什么会这样?因为这个 d l 你没有拷贝过去,你那个目录是没有这个 d l 的, 我们可以看下第八个目录下,你看它是没有这两个 d l 的,大漠的 d l 也没有,大漠注册的那个 d l 也没有,是不是?我们拷贝一下,从以前的项目拷贝一下 debug, 就这两个问题好进来,然后再执行一下。 f 五过来了,这是 no, 是吧?哎,你看有了吧, 要了吧,要了吧,是不是?然后你再跑一下,他就可以过来了?过来了以后再获取这个地址, 获取这个函数地址,看我们能不能获取到啊,哎,你看也有了吧,是不是? 然后我们就开始调用这个函数啊,这个函数怎么调呢?就是把大魔的路径传进去,大魔的路径也是我们当前的。这个路径是什么? 劝开,然后 d m 点 d l 这个两个杠,右斜杠和左斜杠,右斜杠是一个转移符,默认只是一个斜杠,这是支付券里面的东西啊,左斜杠那就是单个的, 这样都行,表现的都行,没问题。如果还是那句话,如果你现在不懂这个什么意思,那你不要管,你让你的成语跑起来再说。我们看直行,看反位置啊,哎,一一是不是代表成功? 应该就是了吧。来,我们来创建一个大萌的对象,来这里来授权一下啊, 你看返回一,那我们看一下弹幕的文档好不好看,返回一是什么意思? 大漠插进啊, i e g。 看它的返回值一代表成功是吧?有很多同学做的时候可能会返回零啊,零它有个未知 错误,不好判断,其他的都是你都有会,会有一个明显的一个错误判断吧,你会判断一下返回纸,你就知道什么原因,但如果返回零的时候不是太好判断的原因呢?很可能是,呃,你那个大漠 dio 的版本啊不对,和那个 obg 版本对不上,或者说 这两个文件呢?没有对的上最好。你是从大漠的那个官网的后台下一个最新的版本, 这里不等于一的时候我会提示失败。那等于一的时候,我会把它的版本号拿出来看一下版本号多少,你看版本号是这个, 那就行了呀,那这里我们就是完成了一个这个注册的一个动作,看这个多少分就显示出来了。那我们下一步呢?下一节课呢, 我们就开始做这个绑定窗口啊,一些基本的简单的一个操作。好吧,这节课就先到这里。