大家好,我是库房文仔,那么这期视频讲一下这个 t x t 文件和以下文件的读写操作。现在我手上就有一个读取点 t s t 文件,还有一个写入点叉 s 叉文件, 其中这个 tst 文件里面是有内容的,而这个一笑文件里面就是空白的。我这一期视频要做的事情就是把 tst 文件里面的内容写到这个一笑表格里面, 所以这里其实是分为两步去走的,第一步是读取这个 tst 文件的内容,第二步就是写入一下文件,在按键精灵插件命令文件插件这里 有很多操作文件相关的命令,那么在读取文件之前,我们首先要打开这个文件,我这里说的打开 当然不是鼠标双击的这种打开,而是要用脚本的代码去打开,这样我们的脚本才可以读取到文件里面的信息。他这里提供了一个 open fire 的方法,可以打开文件需要一个文件路径作为参数,我们的文件是直接放在底盘跟目录下面的, 所以他的路径也就是底盘下面的读取点 txt。 打开文件这个命令他是有返回值的,如果打开失败的话,他就返回负一,如果打开成功的话,他就会返回文件句柄。 说到这个文件句柄的话,是不是有一种似曾相识的感觉,其实他跟我们写后台脚本用到的窗口句柄是一个意思,因为文件读写他本身也是属于后台脚本文件并不会真正的在这个界面上打开,整个过程他都是不可见的。 打开文件之后就要读取文件的内容,读取文件内容有很多方法,比如按照这里的视力,你可以读取前面二十个长度的内容,或者一行一行的读取。我们事先不知道他一行内容有多长,所以当然是一行一行的读取了。我这里先尝试读取一行, 需要用到我们刚刚获得的这个文件句柄作为参数,把读渠道的内容打印出来。最后一定要记得关闭这个文件, 虽然我们右眼看不到,但是如果不关闭的话,这个程序他就会一直占用着这个文件,那么这个文件在被占用的时候,你用鼠标双击也是打不开他的, 他这里也有关闭文件的视力,同样需要这个文件聚品作为参数,调试一下看看没有问题。但是这里又有 一个疑问,这个方法他可以读取文件一行的内容,但是他的参数却没有指定要读取的是哪一行,那我要怎么让他读取下一行的内容呢?其实这里面是有玄机的, 我们仔细看这个方法具体的功能描述是从文件当前的读写位置读取一定长度的内容。那什么叫做当前的读写位置呢? 虽然我们看不见这个文件被打开,但是我们可以想象他读取文件内容时候的样子。当这个 tst 文件被打开的时候,光标就自动停留在第一行的起始位置,这个光标所在的位置就是当前的读写位置。 当脚本在读取文件内容的时候,关标也会随之移动,当脚本完整读取了第一行的内容,这个关 标也就移到了第一行的末尾。所以接下来我们只要把这个命令再执行一遍,他就会在光标所在的位置开始继续读取,我们复制这行命令,然后再打印一次,调试 好,他第二次打印出来的果然就是我们文档里面的第二行内容。但是我们事先不知道这个文件有多少行内容,所以我们不可能这样一行行去读取,而且我们就算写循环也不知道要循环多少次, 他这里似乎也没有提供一个可以直接获取文件里面函数的方法,所以我们这里就写一个条件循环, 当读取到这一行的内容,他不是空字符串的时候,就继续执行这个循环,然后循环体里面首先要对刚才读取到的内容做一个处理, 然后就是写入一下文件,我这里先打个注视,示意一下,写入完成之后再继续读取下一行内容。如果读取到下一行的内容不为空的话,这个循环就会继续执行, 否则就会跳出这个循环,然后执行到关闭文件这里脚本大概的代码结构就是这样子,接下来就要继续完成这个数据处理和写入的部分 数据处理放到后面再说,因为我们要先了解这个脚本他写入一下文件的机制,才知道我们要把数据处理成什么样子。 操作以下文件的话,需要用到这个 office 办公文档插件,这里只有打开、读取、写入、关闭四个方法。为什么要在写入之前进行数据处理?因为以下文件它的写入方法是以单元格为 单位进行写入的,但是我们不想把一整行的内容都写进一个单元格里,所以这里就要先进行数据处理,这里每一行内容的列数他都是不固定的,有些只有两列,有些有三列,那我们就需要告诉脚本怎样把这一行内容拆分成相应的列, 刚好这里每一列中间都是隔着一个空格的,所以我们可以利用这个空格来进行拆分。 原来每一行内容读取出来就是一个字符串,经过空格拆分之后,他就会变成一个数组,但是这个数组的长度不固定,要针对这种长度不固定的数组。血循环, 我前两期讲云角本的视频就有提到过,我们可以通过 u 半的函数去获取这个数组的最大可用下标,然后用 for 循环从零开 一直到这个数组的最大下标,就可以完整便利这个数组。而当前单元格要写入的内容就是这个数组取他的对应下标这一项。接下来是写入一下文件,和 tst 文件一样,在对以下文件执行写入之前,必须要先打开这个文件, 打开一下文件的参数,同样是文件路径,当然我们不会在循环体里面去执行打开和关闭文件,因为这两个操作完全没有必要重复执行的, 我们只需要一开始就把这个文件打开,然后在最后结束的时候关闭就可以了。他这里也有关闭一下文件的视力,直接复制粘贴上来一下文件,这里有点特别,打开的时候他获取不到句柄,写入或者关闭的时候,他同样不需要文件句柄作为参数, 因为如果没有文件去凭这个唯一标识做区分的话,如果我同时打开了两个以下文件,我不知道他要怎么去区分我写入的是哪一个以下文件,所以这可能意味着他不能同时操作多个以下文件,你们有兴趣的话可以自己试一下。 接下来是写入一下文件的代码,一共是四个参数,第一个参数代表你在哪个工作表写入,我这里的话都是在第一个表写入的, 第二个参数代表他在第几行写入,他是从一开始算起的,跟我们数组的下标不一样。然后我们这里虽然写了一个外耳循环,但是没有一个变量可以记录他当前读到第几行了, 所以我这里也定义一个变量,也是从一开始和 excel 写入的行号保持一致,然后每读取一行内容, 这个变量的值就加一。第三个参数表示在第几列写入,我们这里把一行内容拆分成数组之后,在变利的同时也定义的一个下标 i, 但是这个 i 他是从零开始的,而以下文件写入的行和列都是从一开始的,所以这里就是 di 加一列。 最后一个变量就是写入的内容,我们之前已经获取到了,所以最后写入命令的参数就是这个调试一下, 因为整个过程都是不可见的,我们就等他提示脚本停止执行就好了。然后打开这个一下文件, 看到这个文件里面的内容确实是按照我们设计的单元格写入的,但是 b 和 c 这两个单元格的内容好像有点问题,感觉这两行的高度好像跟第一 行的不太一样。双击编辑一下看看,发现这两个单元格内容的前面都出现了换行的情况,为什么会出现这种情况呢?其实我刚才说过,当脚本完整读取了第一行的内容,这个光标也就移到了第一行的末尾,而不是下一行的开头。 那这一行的末尾跟下一行的开头中间隔着什么呢?就是隔着换行符,所以我们在读取下一行内容的时候,会把这一行的末尾的换行符也一起读进去, 也就导致了第二第三行开头出现了换行的情况。当然这不是我想要的结果,所以需要用 replace 命令把这个换行符去掉。这个命令我在前两期视频也提到过,它本身是用来替换制服串的,那如果把它替换成空制服串的话,就相当于 是删除了。在数据处理的时候,拆分成数组之前,就先把换行服去掉。换行服怎么表示?我在上一期视频也提到过,在那个场景下,用 c h r 十或者 c h r 十三都是可以的。但是这里不一样,他们两个其实本身还是有点区别的, c h r 十表示关标移到下一行, c h r 十三就表示关标移到当前行的开头。那以目前这种情况来看, c h r 十是一定要去掉的, c h r 十三就无所谓了。所以这里就把 c h r 十替换成空字无串,再调试一下 好,打开一下文件,可以看到现在的内容才是我真正想要的。那如果是反过来,我要从一下文件读取数据, 然后再写入 tst 文件呢?因为以下文件他不能按行读取,不管是读还是写,他都只能针对单元格进行操作,所以只能一个一个单元格读取,如果读取到内容为空的话就换行,然后再把属于同一行的内容进行拼接,再写入 tst 文件。 其实稍微变通一下就可以把以下文件的内容读出来,我这里就不演示了。至于写入 tst 文件,他这里提供了好几个方法可以写入,但是这几个方法之间还是有点区别的,我下期视频再演示一下,那么这期视频就先到这里,谢谢大家。
粉丝4776获赞1.2万

大家好,我是多多,欢迎大家观看我电脑端按键精灵第六十九节这节课呢,咱们继续讲窗口里面的内容,判断窗口是否存在,得到窗口程序路径,还有一个卡屏检测 在这呢,这个判断窗口是否存在的这个命令在这个位置,大家看一下,咱们呢直接插入就行了。然后呢这个就是判断窗口是否存在的命令 啊,它这里面有一个参数,也有一个返回值,这个参数呢就是这个句柄,咱们呢把这个返回值的这个名字呢给它改一下,咱们在这新建一个 t s t 文本文, 咱们把它打开一下,然后点击一下,抓抓获取一下这个文本文档的这个句柄, 咱们把它复制一下, 咱们把这个返回值呢给他调试输出一下。 如果是窗口存在,就是这个句柄存在的情况下,它的返回值呢是一,如果不存在的话,它返回值是零,在这呢给大家试一下 这个就是这个呃,窗口,给大家试一下这个是返会一,因为这个窗口存在啊, 然后呢现在是窗口不存在了,咱们关闭之后窗口不存在,给大家看一下这个是零, 这个参数呢可以是副句柄,也就是顶层句柄,当然呢也可以是子句柄、孙句柄,兄弟句柄都可以。这个主要是 这个命令呢,主要是检测游戏窗口闪翠什么的啊,咱们给大家试一试这个子锯柄啊, 大家看一下,没有任何问题,咱们把这个窗口关了啊,这个是没有,没有这个聚饼。 第二一个呢就是第二个得到窗窗口程序路径, 这个就是得到这个窗口安装的这个位置啊, 呃,这个命令在这个位置,然后呢咱们直接给他, 直接给他插入进来,这个就是得到窗口程序路径的。嗯,这个命令他这里面也是只有一个参数, 然后呢有一个返回值, 咱们打开一下。呃,我制作的这个,呃插件这个软件, 然后呢咱们把这个句柄给他找出来, 咱们把它这个返回 值呢?嗯,给它变一下, 大家看一下。这个就是啊,我的电脑桌面的位置啊,这个是这个软件所在的这个位置啊。 啊,如果咱们把它关了之后呢?启动它返回空啊, 如果没有找到的锯柄,对吧?如果没有找到的这个窗口啊,他是返回为空,锯柄不存在返回为空。 这个命令呢?是有的窗口能获取,有的窗口不能获取啊。 呃,他也是副巨柄,顶层巨柄、子巨柄、孙巨柄,兄弟巨柄都可以啊,这个就不演示了。还有一个呢是获取窗口状态 这个命令,嗯,其实挺有用的。 呃,他的位置是在这个位置,咱们呢把它插入一下, 他这里面呢? 呃,这个就是窗口 drop 的。呃命令,然后它这里面一共有两个参数,这两个参数呢,一个是句柄,另外一个呢?呃,它是这个对应的是一二三四五六,大家看一下,在这个位置 啊,从零开始啊,零,一二三四五六啊,零呢?是判断窗口是否存在,一呢是判断是否激活激活, 二是判断窗口是否可见可见啊,之前咱们讲过隐藏和显示啊,就是那个命令,然后哦,三是判断窗口是否最小化, 四是判断窗口是否最大化,五是是否顶置,六是判断窗口是否响应,这个六 六呢?很重要啊咱们,呃, 咱们不会全部给他测试了啊,咱们测试一下零和三,还有四得了,对吧? 啊?它这里面有一个返回值, 这个是零啊,咱们再新建一个。 呃,咱们打开一下这个新建文本文档,获取一下这个句柄。 他这个呢 是否存在?肯定是存在啊,存在是负一, 不存在的是零,大家看一下啊,我把它关了,不存在是零。 然后咱们打开一下, 咱们再重新获取一下这个句柄, 然后咱们试试这个判断窗口是否最小化,咱们呢把它最小化一下给大家看一下 啊,最小化了是负一,咱们给他啊还原给大家试一下。 它这个还原呢也是负一 哦,他这个把这个参数改一下啊,这个参数是三, 把这个参数改成三才是判断最小化。 咱们调试启动,这个呢是负一,咱们给它还原呢,启动是零啊,还原是零,然后这个呢是 是是否最大化给大家看一下 啊?咱们把这个位置呢给它改成四,给它放大一下, 调试启动最大化,返回负一。然后呢咱们给它还原一下,调试启动,这个呢是零,它这里面最重要的是这个 判断窗口是否响应,咱们呢?给他把把这个参数给他改成六啊,咱们打开一个游戏给大家试一下, 咱们俩获取一下他的距离。 对面的 闪亮了吗?看到吧, 我点击关闭的时候大家看一下啊,他就会发白,发白呢,咱们负一啊,现在没法响应了,看见了吧?没法响应之后返回负一, 大家注意一下这个细节啊, 这个获取窗口状态呢?啊,只能是顶层区别啊。是返回负一,不是返回零,对吧?一般呢就是判断他是否响应,呃,判断他呃卡屏这个状态对吧?你卡了那肯定不会响应了,对不对 啊?这节课呢,咱们就到这了,我呢稍微有点感冒。呃,去喝点药。然后呢?啊,大家如果有学习安健精灵的对吧?有想学习安健精灵的可以加我的 qq 号,也可以加我的 qq 群啊, 咱们下节课再见。

大家好,我是天峰,今天我们来讲按键精灵基础知识第六小节判断选择语句啊,这里话主要讲两个,第一个一幅语句,还有第二个色列语句。 首先我们看一下第一个 f 语句,它固定格式就是 f, 然后加上个 den, 然后加上个 n 的 f 作为结尾,它的意思就是说如果某个条件成立的时候,就去执行相应的命令啊, 主要运用场景就是找色判断,找字判断,还有找图判断啊,这个以后我们会说,我首先我们看一下格式吧,首先是一幅啊,后面加那个条件 啊,条件判断个条件是否成立,然后给他一个赞啊。第二行的话就是这个条件成立的时候要执行的命令,然后的话就是按照一幅作为结尾啊,我们举简单的例子吧, 的母今天啊,定一个变量,今天等于 星期天吧,给他一个预辅判断语句,如果今天等于星期天, 然后给他一个蛋啊,你自己在这里敲回回车键的话,他会自动给你加一个安的一幅的,你就在这里面写一个条件 就行了,写个要执行的命令啊,星期天的话就休息吧, 躺平了,周末就躺平啊,门调试,你看只要他判断出今天这个符合你 啊,这个变量,这个条件成立的话,就会输出这个啊,条件成立就输出这个语句。我们改一下今天星期一, 你看这里不会输出了,因为你今天就不是星期天,是星期一他就不会输出这个躺瓶。我们改一下这里如果是星期一的话就上班吧, 上班摸鱼。 好,我们调试啊,你看只要一成立就会输出这个结果,这个就是一辅一句的用。好,我们看一下一辅一句的第二种格式, if, 但要死,然后 and if 对比上面的话多了一个要死,这个要死的话就是否则的意思 啊,他整段话的意思就是根据一个条件的真假的不同的情况执行相应的语句啊,真的情况执行一个语句,然后假的情况执行另外一个语句啊。另外的命令。我们看下的格式吧,首先是一幅, 然后前面是一个条件,然后加个蛋,下面的话跟着他上面条件成立要执行的命令啊,然后第二种情况话给他一个要死,另外种情况, 另外种情况成立的时候就执行语句啊。啊,这个就是要死的意思。我们举一个例子吧, 今天等于星期天吧, 如果今天等于星期天的话,我换一个吧。输出打排位啊,如果今天不是星期星期天的话, 就是另外一种情况啊,干脆改成周末吧,还有星期六啊, 如果是周末的话就去打排位,如果不是周末的话,就是其他情况给他一个钥匙啊,这个钥匙就包括星期一,星期二,星期三,星期四啊,反正就是不是周末啊, 就是周末的对立面,除了个周末,其他的那种可能性都是包括这个在这个钥匙里面 啊,你看一下调试啊,发现他今天是周末,他成立了之后就会输出打牌位 文。改一下星期一啊,发现你这个今天不是周末的话,是其他情况的话都一律啊。输出这个上班,不管你这里是星期二还是星期六, 都是初初上班,或者你是。呃,是其他情况啊,国庆节 只要是不符合周末的话,都是属于其他情况,他都会输出这个上班 啊,虽然国庆年放假啊,但是他还是要上班,就这个就是一抚一去的啊。第二种格式好,连接好模拟器,然后调试, 你看今天是星期一话符合这个条件就会输出今天是星期一,我们改一下星期天 调试,你看符合这个星期天的话就会输出今天是星期天。好,我们记得输入 输入今天是五一节啊,说明这些条件都不符合,就是另外种情况啊,其他情况的话就输出这个输入有误 啊,这里会显示出入偶物,这个话就是一辅一句。第三种格式了,我们接着看判断语句的第二种色列语句,我们看一下格式, 以手链开始作为开头,然后开始作为那个判断的关键字,按照手链作为收尾啊,我们看下这个手链的话,就是选择的意思 啊,然后 case 的话就是事件合起来就是选择事件语句,他就是根据一个辨认了不同的值去执行不同的命令啊,他比上面的衣服还有按照衣服更加简洁快捷一点。 我们看一下这个例子吧,这格式就是色列 case 开头,然后后面接着一个变量啊,如果变量等于值一的话, case 这里后面跟着那个他的值,如果他是值一的话就直行与距一,如果他的值是值二的话,就值。 语句啊,以此类推啊,这里话还还有一个另外的个命令,叫做 case 要死,就是说上面的条件都不符合的话,就执行下面的一句啊,这样子的话比上面的一幅一句更加简洁一点。 好,我们举个例子吧,啊,就是摇骰子啊,也叫做摇头子,这个骰子的话是一到六六个数数字随机出现的, 首先这个定一个变量,头子啊,这里话这个是个函数的名字,这个函数在这里啊,函数里面给他写上参数,这个是最大值,然后这个是最小值啊, 这个的意思就是说,嗯,从一到六里面随机挑取一个数字,复制给这个头子,然后用这个 scelle cast 语句判断这个头子的值。 如果这个头子的角色的话是一,那么就输出这段摇到一,如果只等于二的话,输出这个摇到二啊,以此类推, 我们给他一个死了要死一句吧,如果上面都不等于的话,说明这个程序错误了,因因为一般情况都会输出一到六的,如果上面都不出现的话,说明这个程序错误了啊,说明 我们就输出这里吧。啊,把傻子摇,把骰子摇碎了,跟周星驰的赌侠样, 上面的所有结果都不出现,就只能是这种结果了,我们调试一遍吧, 把它删掉,调试啊,说明他摇到二,我们继续摇到六 啊,都是根据这个筛子的不同的数值去执行相应的命令啊,这节课就讲到这里。

大家好,我是多多,欢迎大家观看我爱建精灵网页办公填表的第九节,在指定位置输入文本,我们呢先打开这个呃操作插件文档,然后呢把这个 代码给它复制过来, 咱们呢先把它给注视一下,呃,然后调试启动,咱们打开一下这个网页, 打开网页之后呢,咱们要在这个位置输入文本,然后右键检查, 在这个位置呢,给大家说一下这个窗口呢,他有的时候他会在左边,他有的时候也会在右边,有的时候呢他也会在下边,但是呢我经常是把它单独 呃出来这么一个呃小个的这么一个单独的一个窗口,然后右键检查,然后他就会有这么一个蓝色的这么一个位置,然后再右键再复制复制这个 这个 s s 开头的,咱们复制一下之后呢大家看一下这个代码在这呢,呃,这个就是输入指定位置 文本,就是指定位置输入文本的这么一串代码。刚才咱们复制的那个呢叫做类名,咱们给他在这个位置给他粘贴过来,然后呢这个位置是输入文本的这个参数 啊,给大家看一下,然后呢咱们调试启动, 大家看一下这个文本就输入进来了啊,有的时候呢,嗯, 当这个微开头的这个呃输入不了的情况下,就输入不进去这个文本,你也可以尝试用这个代码给他替换一下,对吧?这串代码给他替换一下, 然后呢这时候呢啊,你看看他能不能输入进去,在这呢,这个我就不测试了啊,大家回头大家再测试, 然后呢还有一个,还有一个代码也是一个,呃输入 输入文本的这么一个命令,咱们呢把这个类名给它粘贴进来,然后这个文本文档呢, 你就直接写个我的 qq 号吧。这个输入文本, 呃,这个也是输入的命令,呃,在这给大家说一下,就是说给大家统计一下 啊。这个 v 开头的是一个写法,这个 a 开头的也是一个写法,这个命令呢也是一个写法。呃,这个命令呢?给大家也 测一下这三个写法呢啊,针对不同的情况下,呃,大家可以在测试就说可以解决百分之九十九的输入文本的这么一个啊。技术, 呃,这个技术呢是有一个叫防散的一个人,呃提供的就是也是问了呃好多人这个技术,然后最后,呃有一个人经常使用这个,他研究出来的,他把这些代码提供给我了, 点击调试启动给大家看一下。呃,这个也是可以输入进去的, 大家看一下,没有任何问题啊。这节课呢就到这了,咱们下节课再见啊。


ok, 观众朋友们大家好,我是酷玩文仔,那么这一期视频的话呢,我决定提前来讲一下这个按键精灵的调试脚本。学按键精灵的话呢,调试脚本这个东西你是一定要会的, 那么不管你写什么类型的脚本,你都会用的到,而且可以说不管你是用什么语言来做编程的话呢,都是需要调试的,那么现在我就来讲一下这个, 我这期视频是用按键距离二零一四来来讲解的,因为我发现看我视频的人应该大多数都还在用这个二零一四版本,对吧? 调试程序的话呢,最主要用到的一个命令就是这个 trace paint, 那么我们可以先看一下这官方对这个命令的解释,就是说如果脚本在按键精灵的调试状态下运行, 这行命令会把要输出的信息发送到调试框,那么如果脚本不在调试状态下运行的话呢,这行命令是没有任何作用的,那么我这里的话就可以演示一遍。 那么首先我就定义一个变量,虽然按键精灵二零一四的话,变量可以不经定义,可以直接使用, 为了更快适应最新版的按键机的话呢,我建议大家在写脚本的时候用到的所有变量都在脚本的开头先定义一下,这也是一个比较好的写程序的一个习惯。那首先我定义一个变量, 定义定义了一个变量 a, 那么然后我再给他负一个值,比如说 a 等于一,然后的话我就用这行调试命令来输出 a, 那么首先我们按照正常的 运行脚本的方法,如果我们按 f 十执行脚本,发现没有任何效果,因为我们现在的话不是在调试状态下运行,所以那一行语句的话是不起任何作用的, 那么我们现在就点进这个调试界面,然后那么现在的话就是在调试的效果下运行,然后我按 f 十启动脚本,然后可以看到这里的话 第三行,然后打了一个一出来,那么这个一就是变量 a 的值,那么就说明他第三行这行代码是起了作用的,他就把这个 a 打印出来了。 在调试状态下的话呢,脚本的代码是不可以修改的,我们这里的话打字,打字的话是没有任何作用的,一定要点这里跳出调试的界面,才可以对这个脚本代码进行修改,这样显示变量的 时的话可能不是很明显。那么我们有时候在打印的时候可以做一个制服串的拼接,比如说在这里打印的话,我们首先固定一个制服串 a 等于,然后再用这个符号拼接,然后后面就是变量 a, 这样的话看起来可能会效果比较好,那么点击调试,在执行的时候,那么他这里的话第三行运行的结果就是 a 等于一, 然后的话我再介绍一下这个单步执行的操作,我自己的话就写一下代码,比如说我自己要输出,输出很多很多行的变量, 那么我这里的话有四行变量的输出,然后调试,假如说我点击这个启动脚本的话呢,他一瞬间就把四行代码都执行完,就输出了四个字符串, 那么假如说我想他一行一行的执行怎么办呢?我们就可以用这个单步的操作, 这单步操作的话呢,就是他执行一行的时候,他会暂停,他会自动暂停这个脚本,比如说点击一下单步,然后他执行完第一行输出了,哎,之后他就会暂停,然后第二行的话,他就暂时先不执行,再点一次他就执行第二行, 再点一次就执行第三行,那么他是可以一行一行的执行这个脚本的。那么至于这个步过步过的话呢,在这里的话,其实跟跟单步是一样的效果, 因为我自己的话没有涉及到这个子程序的调用,他布过和单过的区别是这样的,单步的话一次就执行一行,不过的话就是一次执行一个调用,那么 这个涉及到子程序的调用,这个是我后面要讲的内容,所以你们就先不要管这个不过是干什么的,你们只要知道单过可以一次执行一行就可以了。 此外呢,还有一种调试的方法叫做断点调试啊,比如说这一段代码,我需要在他循环了一百个输出之后呢,先暂停一下,先不要输出后面两行的内容,那怎么办呢?如果按照我们刚才单点调试的方法的话呢,我们需要先 一行一行的执行这个命令,执行一百次,那这样的操作显然是不太可能的,对吧?假如说是一千次的,对吧?所以的话,我们就需要在这里在他要暂停的地方设置一个断点,我们点击这个代码编辑 界面左边灰色这个地方,那么如果说我要他在执行第五行之前先暂停一下,那么我就可以把这个断点设在第五行, 甚至这个断点可以设在注视这个地方也是可以的。如果假如说我现在把断点设置到第五行,然后我点进调试这里,然后的话呢,这时候我就不需要单步去操作了,我直接点击这个 f 十启动, 那么他在说出了一百行 a 之后呢,在执行第五行之前,他会暂停一下,对吧?我们看这个 输出界面这里他是没有输出 c 的,对吧?说明这个时候第五行他是还没有执行的,那么这时候我们点击单步他才会输出 c, 然后再点击单步他才会输出 d, 那么这就叫做断点调试。那么最后的话呢,我就选 写一个具体的调试的例子,比如说我这里先定义一个变量 a 还是第一个变量 a, 然后的话呢,我我就一开始负个初值吧, a 是等于零的,然后的话呢, 再做一个循环,循环的话呢,每次 a 就递增一 a 大于十的时候呢,我就让它输出 a, 那假如说当 a 它不是大于十的时候呢,我们就输出一个零, 然后接下来我们就进入调试,那么这个时候呢,我就用单步操作来给你们看一下他这个甲本的走线,那么首先 a 他是等于零的,然后我执行单步操作,这有一个循环,然后 a 等于 a 加一,这个时候 a 是等于一的,对吧?那么 a 等 等于一的话呢,他显然是小于十的,所以他会执行下面这个语句,那么他调试输出来的就是零,然后的话呢,前面前面十次的话呢,他都不是大于十的,所以他会先输出十个零, 然后接下来他就会输出一个十一,那么到后面开始的话呢,全部都会输出变量 a, 就不会再输出零了,那么我们这里可以数一下有多少个零, 一二三四五六七八九十,对吧?前面十次都是输出,输出零那么大第十一次开始的话呢,就执行这一行代码,那么这是一个比较简单的调试。 ok, 那么再总结一下这期视频介绍到的内容,首先第一个 就是 trace page 这个命令可以输出变量值,也可以输出字符串,那么其次的话呢, 我们还介绍了这个单部的功能,他可以一行一行的执行这个代码,那么每执行一行他就会自动暂停这个脚本,这是第二点。然后第三点的话呢,就是一个断点调试的功能,就是当脚本执行到这一行之前, 它会自动暂停。 ok, 本期视频的全部内容就到这里结束,那么这个调试的操作的话呢,以后可能会经常出现在我的按键进行视频当中。

各位观众大家好,我是酷玩文仔,那么这一期视频教程的话呢,主要就做一个比较通用的文字识别教程。 为什么说这种方法比较通用呢?因为他是几乎可以应对所有不同的字体,不管你这个字体是系统自带的什么微装牙黑宋体也好,还是说别人设计的一些特殊字体也好,基本上这种方法都是可以应对的。 然后我这里首先要介绍一个概念,就是说文字识别,他其实本质就是这个图片识别。所以我们这期视频教程的话呢,他写的代码其实 跟以往的图片识别是同一套代码,只不过说他这个关键是在于这个图片的处理。我们知道他这个文字都是有一些 线条来组成的吗?但是他这个线条与线条之间呢,都会有一些间隙,这个间隙的话呢,就直接把这个背景的颜色给暴露出来了。这就造成了一种情况,就是说 我相同的文字在不同的这个背景图片上面,他表现出来的整张图片是不一样的, 所以用我们的传统的这个图片识别的话呢,他是不能够识别到这个文字的,因为他会受到这个背景颜色的干扰。那我们怎么做到让程序忽略这个背景色,仔细识别这个文字的线条本身呢?这个关键就是在于我们去处理这个图片, 然后这个处理图片的工具的话呢,当然可以使用我们这个比较熟悉的 photoshop, 但是因为我们这期视频 需要用到的这个功能过于简单了,我们甚至可以不用 photoshop 这么高端的工具,我们甚至可以用这个系统自带的附件,这里有一个画图工具,我们甚至可以用画图工具来完成今天晚上的这个脚本。 那么首先的话呢,我这里就按一下这个截屏键,按键抓抓这里的话就会有一个 图像,这里就会把这个屏幕截下来。然后我现在的话呢,就要识别一下这个桌面上面的文字,比如说我想识别这个微信这两个字,那我首先当然就是把微信这两个字把它截下来, 未图另称为。然后我自己的话呢就先按传统的这个找图 图方法试一下。首先把微信这个图片的话呢拖到这个附件目录这里, 然后写一个简单的这个找图的脚本,然后我这里的分辨率是这个全高清的幺九二零乘以幺零八零, 然后改一下这个文件名, 然后这里如果找到的话呢,首先是鼠标要移动过去, 然后移动鼠标这个的 可能视频看的不是很清楚,所以我就再加一个弹窗的命令 啊,然后保存一下脚本,保存退出好,执行脚本好找到没有问题,因为的话这个文字它本身就是在这个位置,所以我连这个背景一起截下来的话也是没有问题的, 那么现在我就把这个微信把它移到这个地方,这里的话这个背景颜色很明显,刚才是比较黑的,现在变成了一个偏白色的背景色,那么现在执行脚本的话,他就没有找到了。所以说这个传统的找图方法的话呢,一旦换一个背景就不行了, 我们现在就要把这个图片做一下处理,至于怎么处理呢?这个我们要根据按键精灵找图的逻辑来推。 首先的话呢,按键精灵他找图其实说白了就是一个像素,一个像素这样去匹对他的颜色是否相同,如果都相同的话,那就肯定找到。然后如果有个别像素的颜色不同的话,这个时候就取决于你找图的时候设置的那个相似度。 那么在他一个像素一个像素去匹对的时候呢,有四个位置的像素点是比较特殊的,他就是这个图片的四个角落,如果这张图片的四个角落他的颜色都是相同的话,那这一种颜色就会被视为背景色, 然后他在匹对图片的时候就会自动忽略掉这种颜色,就是说背景色他是会自动忽略掉的啊,那我现在的话就来处理这张图片,首先的话打开这个画图软件,然后把这个图片拖进来就可以了,然后拖进来之后呢,这里图 图片太小不能处理,就在查看这里把它放大。然后我这里的话呢,有这个网格线是可以看到每一个像素点的,然后默认情况像素没有的,所以这个网格线这里这个勾一定要打上,这样的话我们就可以清楚看到每一个像素。 然后这里的话呢,我们虽然看起来他的这个背景色好像都是黑色,但是他这里其实有一些微妙的差别,我们肉眼看不出来,但是他程序判断的话,他只要判断到有一点点差别,他就认为这个不是背景色。所以我们这里的话首先要用这个铅笔工具, 因为铅笔工具的话,他一次只能够点一个像素,这样的话会比较精确。然后我们随便选择一种颜色,不管你这里选什么颜色,因为我们最终都是要把 把这个颜色变成背景色的,而背景色他会自动忽略掉,所以这里选什么颜色都都没所谓。接下来当我把这四个角落的点都变成相同的颜色的时候,这种颜色就会变成背景色。然后找图的时候, 只要这个位置他是这种颜色的话,他就会忽略掉这一个位置,就是说这个位置不管他是什么颜色,他都不会去管他是否匹对的上了。所以我们接下来就要把这些无关紧要的地方,把它全部变成背景色, 然后我现在把这些所有无关紧要的位置全部变成背景色,这样的话他在找图的时候就只会去判断这个线条。这个图片处理的话呢,你可以稍微做的精细一点,也可以随便 互一下就完事了,这个就取决于你这个找图的时候设置的这个精确度,如果你这个相似度设的比较高的话,那你这个文字处理就要相当仔细了。 那如果你这个相似度比较低的话呢,你在处理的时候就可以把一些很细微的地方把它忽略掉。那我这张图片的话呢,就大概处理成这个样子应该差不多了,因为我这个相似度给的是零点八,所以也没有必要吹毛求致,把它每一个相似点都点了很清楚。 然后我现在的话呢,就把这个图片把它另存为微信,然后后面加一个这个文字识别保存。然后的话呢,还是要把这个图片把它拖到这个附件栏这里, 拖进来之后呢,这个文件名也要改一下,然后保存退出 啊。我现在按 f 十直行脚本,然后他马上就找到了,他找到的位置是这个微信截图, 这个是跟他的找图顺序有关系的吗?我之前的视频也说过,他找图的话是从这个屏幕的左上角开始,然后按从左道路的方向这样去扫的,所以他第一时间肯定是扫到这一个。那我现在把这两个截图把它删掉, 然后我再找他就找到了这个微信客户端的程序,然后我现在把这个微信拖到之前那个位置,现在这个背景颜色已经变得比较白色了,然后我再按时他还是找到,这就没有问题,不管我移到哪里他都可以找到。 最后的话呢,顺便说一下,这种方法的话,不仅能够用于这个文字识别,甚至是一些半透明的图片,他也可以这么处理。比如说这个服务的这个一个图标的话,他两个齿轮中间这两个孔他是透明的吗? 所以我们如果要找这个图的话呢,可能是需要把这个齿轮截下来以后,把这个四个角跟齿轮中间这个孔都把它涂成同样的颜色。反正你们就记住,处理图片的时候, 要识别的地方就把它保留下来,不要识别的地方把它全部统一涂成相同的颜色,这样就可以了。 ok, 那么这期视频的话就暂时先到这里。

各位观众大家好,我是库网文仔,在案件进行第十三期的视频里面呢,我就介绍了调试脚本的方法, 然后调试脚本的时候呢,可以在下方这个控制台这里输出变量,然后也可以执行单行的命令,或者执行单个的调用,可以暂停脚本,或者是直接在脚本里面设置断点, 这些都是写大型脚本必备的调试功能。但是调试命令的话呢,他就只能在调试的时候使用, 有些时候有些信息我们希望在这个脚本正式运行的时候呢,也能显示出来,比如说鼠标当前所在的坐标,或者说整个脚本的执行进度等等。如果以弹窗的形式来展示这些信息的话呢,他又会导致整个脚本暂停运行,因为 弹窗他有一个特性,就是你必须要手动点确定,然后这个窗口消失了,他才会继续往下走。这时候的话呢,就可以考虑一下用这一期视频介绍的方法, 他可以直接在这个屏幕上打印文字信息,又或者说在右下角的这个托盘里面以气泡的形式来展示一些文本信息。 这个命令的话呢,就在按键精灵自带的这个插件命令这里,这里有一个信息提示,插件里面的话一共就只有四条命令,前面两条是用于在屏幕打印信息和清除信息的, 最后一条就是用来显示气泡的,所以这期视频没什么技术含量,也就跟大家介绍一下这几条命令的使用方法。至于第三条发送手机短信的命令我就不讲了,这个是要绑定飞信的, 而且必须要是微信的好友才能够发送短信,感觉意义不是很大,有兴趣的话可以自己尝试一下。首先演示一下如何在屏幕打印信息,首先要确定打印信息的显示范围,文本内容,还有这个文本的颜色, 文本内容的话会显示在这个范围的左上角,超出这个范围的部分的话呢,就会被截取隐藏掉了。 另外还要注意他这里这个颜色的顺序是反的,平常我们说的这个颜色是 rgb, 但是到这里的话是 bgr, 所以默认的这个零零 f 他其实是红色而不是蓝色。直接插入一条命令, 他这里的话默认的左上角坐标是零零,所以等一下这行文字就会在屏幕的左上角出现。保存退出。执行一下 可以看到屏幕左上角这里已经是有东西打印出来了。那比如我想在屏幕的左上角显示当前鼠标的坐标的话呢,首先我这里就写一个死循环, 然后循环里面呢,首先就是获取鼠标当前的坐标, 然后再把它输出在屏幕上面就可以了, 这里制服穿的拼接要用 and 这个符号,然后 x 和 y 之间的话呢,中间给它加一个空格,加一个逗号,调试一下 可以看到现在左上角的话呢,就可以显示这个鼠标当前所在的坐标了。然后我想在第二行输出鼠标当前坐标的颜色要怎么写呢?如果直接在相同范围内打印的话呢,第二行输出的内容就会把第一行覆盖掉, 所以这里的话呢,还要将左上角的这个众坐标往下移。我之前的话呢,测试过他一行文本的这个高度是十六个像素, 因为这个命令是不能设置自己的大小的,所以这个十六个像素的高度应该是固定的。那么要输出当前坐标的颜色的话呢,首先当然是获取到这个点的颜色, 横坐标就是 x, 这种坐标就是 y, 这两个变量的话呢,在上面这一行已经是获取到了,然后再把 这个颜色输出这里左上角的重坐标就是十六,然后最后这里再给他加一个一百毫秒的延时。那我现在去调试一下脚本, 那么可以发现的话呢,现在屏幕左上角已经是可以显示到这个鼠标当前的坐标和当前坐标的颜色了,当然我们甚至可以把这个文本的颜色改成当前坐标的颜色, 然后色号这里前面再给他加一个方块, 好 执行一下脚本。那么现在可以看到打印出来的字体颜色呢,也会跟着这个鼠标的移动动态变化了。然后你们可能会注意到 新输出的内容,他如果这个长度比较短的话,他可能不足以覆盖之前所输出的内容,所以就会导致上一条内容的最后几个字符漏了出来。比如说现在的这个坐标, 他的坐标是一一六三八,但是后面还跟着一个蓝色的七,还有一个黑色的八,因为这个纵坐标从四位数变成了两位数,所以最后两位数字他就会一直残留在这里,那么这种情况怎么解决呢? 其实非常的简单,只要在这个文本内容后面加空格就可以了。 坐标这里根据我们现在屏幕的分辨率,横中坐标都是四位,这是最长的,然后最短的话横中坐标都有一位,那么八位跟两位之间相差了六位,所以这里的话加六个空格, 这样的话就确保万无一失。然后颜色这里的话也给他加一个空格在后面,因为这个字母和部分数字的宽度也是不一样的, 然后再保存执行脚本,那么你们现在就可以看到这个坐标显示的话,是不会再有刚才那种情况了, 之前漏出来的制服现在就会被这个白色的背景覆盖掉。之后再了解一下如何清除这个输出的内容。清除内容的方法就是刷新屏幕,但是我这里说的刷新不仅限于桌面右键这种刷 刷新,任何意义上的刷新都会导致这个内容被清除。首先最普遍的就是我刚才讲的鼠标右键直接点刷新,这个文字就会消失掉。 再就是打印内容对应的位置,他的画面发生变化的时候也会自动刷新。比如我这里在屏幕中间的位置输出文本,这里的话我就暂时先把这个循环去掉,然后这时候我把按键精灵的这个窗口慢慢移动过去, 移动一下,然后再把它撤走,可以看到我这个窗口移动到哪里,它这个文本就消失到哪里, 所到之处就寸草不生。所以说这个文字如果你是在这个视频动画或者游戏界面上面打 打印出来的话呢,基本上就是瞬间消失的,因为视频在播放的时候还有这个游戏画面的话呢,他都是不停刷新的。当然还有一种方法就是用命令来清除这个内容,他就只有一条命令 执行一下就可以了,比如说我这里输出内容,然后一秒钟之后把它清除, 可以看到一秒钟左右的话,他这个文本内容就消失掉了。最后就是可以使用气泡来显示一些脚本运行的关键节点,比如说在脚本停止运行的时候,托盘这里就冒出一个气泡,提示脚本已经停止运行。 在基本命令事件指程序这里就有一个脚本停止事件指程序,在脚本停止运行的时候,这个指程序就会自动 出发,然后我们可以把里面的这个弹窗把它换成气泡执行一下,那么现在这个脚本就在运行,然后我按 f 十二结束这个脚本的时候, 这里就会冒出一个气泡,脚本已经停止。至于其他更巧妙的用法就有带各位自己去探索了。这期视频的话就暂时先到这里,谢谢大家。

大家好,我是多多,欢迎大家观看我电脑端按键精灵第七十二节。这节课呢,咱们讲一下 excel 表格读取, 咱们找到这个插件命令,呃,然后呢?呃,找到这个办公文档插件,点击一下这个,呃,打开 excel 文档,在他的下面呢,有这个脚本例子啊,咱们复制一下,给他粘贴进来。 上节课呢,咱们讲过这个写入 excel 表格。这节课呢,呃,咱们就不讲这个写入了,咱们讲读取, 这个呢就是读取 excel 表格的命令。然后呢他有三个参数,也有一个返回值,这个返回值呢就是返回读取的内容。咱们呢啊把这个呃弹窗给他换成调试输出, 呃,换成调试输出给大家看一下啊,然后我给大家说一下这个读取的三个参数啊,分别代表什么?然后呢,咱们打开一下这个 啊,桌面上的这个 excel 表格,这个是我,呃新建了一个啊,里面,呃就是我随便写了一些内容。上节课呢,咱们也讲过, 然后给大家说一下,这第一个参数呢是,呃,第一个参数是文档工作表页, 呃,它代表这个位置,第二个参数呢是单元格,好, 这个呢它代表这个竖的这个方向啊,竖的这个方向啊,它有啊,一二三四啊,五六七八九,这个是竖的方向这个格子啊。然后第三个参数呢代表横的这个方向,然后这个 a、 b、 c、 d, 这个是二呢,它代表这个 b 啊,这个呢就是它的呃参数,呃,咱们,呃关闭一下这个 excel 表格, 然后咱们读取一下啊啊,把这个路径给他改一下 右键属性, 然后把这个 名字给它放进去,注一下它的后缀啊 啊,大家看一下啊, 然后调试启动产地,咱们再打开这个 excel 表格给大家看一下,是这个位置啊,这个没有任何问题啊。 呃,他是这个第一个工作表单页,然后呢是第。呃, 嗯,第一个,这个竖的这个方向,然后第二个位置对应的是这个产地, 然后呢咱们再把它关闭一下。嗯,咱们脚下 这个啊,横向便利读取啊 啊,咱们还是打开一下啊,它这里面一共有四个内容,咱们呢写个 for 循环 啊,这个上节课咱们也讲过,在这就不给大家说了啊,从一到四啊。 呃,然后呢,咱们在执行操作前,先关闭电脑上所有的。呃,打开的 excel 表格啊,咱们要给它关了。然后 这个呢,就是把这个第一行的这个啊都给他便利出来。咱们调试启动,大家看一下啊,水果产地运输时间是否适合保存啊?大家看一下细节啊啊?没有任何问题, 这个是水果产地运输时间跟是否适合保存 啊?这个呃,都是对的,这个是横着便利数据,然后竖着呢,他是他也是四个啊,只不过这个参数的位置需要给他改一下。 呃,咱们给它关一下啊,关闭一下这个 excel 表格,然后呢?呃,咱们把这个位置呢 给他换成一,然后呢这个位置给他换成矮,这个是竖的方向,然后咱们看一下啊,这个电脑上没有任何打开的一个赛奥表格了,咱们调试启动, 大家看一下,水果,香蕉啊,苹果,橙子,咱们打开一下,核对一下,大家看一下啊,没有任何问题。 然后呢给大家讲解一下,判断到底有多少个格子啊?然后呢,咱们以竖的这个方向为例啊,咱们把它变成五,然后给大家说一下,第五个里面呢,它是 是没有任何内容的啊,他会变得出来为空啊,这个呢给大家试一下,调试启动,大家看一下这个位置为空,这个怎么写呢?这个也很简单,咱们呢给他, 嗯,给它变一下啊,咱们给它用度循环, 然后在这加个判断, 然后咱们定义一个变量, 然后 a 等于 a 加一,这个这个写法呢,咱们之前讲过,然后等于空呢,咱们就咱们就跳出一下,对吧? 然后跳出之前呢,咱们给他加个啊,调试输出, 大家注意一下这个细节啊,这个细节是简易啊,因为他这个空了之后呢,呃,我给大家说一下 啊,如果他有四个格子,然后到第五个格子,他微空了之后呢,要把这个五减一,减一才能为,这个才能等于这个四,所以是四个格子。 这个这这个大家在实际操作的时候,大家要知道这个位置需要减一。 呃,如果没读取到它就会变成这个空啊,就是俩双引号,是里面什么都不写。嗯,大家看一下这个细节,嗯, 然后这个肯定是四个格子啊,咱们调试启动,大家看一下,没有任何打开的 excel 表格啊,咱们启动一下 啊,一共有四个格子,没有任何问题啊,这个是读取出来的内容,然后对应的是四个格子, 呃,然后咱们多写几个啊,然后给他多写几个啊?水果竟有什么啊 啊?咱们多写几个啊,多写几个给他试试,然后保存一下, ctrl 加 s 保存一下,然后给他关闭,然后调试启动 啊,大家看一下。一共有七个格啊,大家看一下 啊,没有任何问题啊,这个是对的, 呃,还有的话就是有多少格子就读取到多少格子,然后,呃那个就是有多少格子就读取多少格子,然后其他的就不读取了。这个呢?怎么写?我给大家也敲一下,这个其实也挺简单的,就稍微改一下, 把这个位置呢给他改到下面, 然后就这么一个写法,当他为空了之后,直接跳出不执行下面的命令了,然后这时候就是有多个多少个格子就读取多少个格子,对吧? 啊?其实这么写不是很严谨,然后在这加这个面,对吧?放在这里面 加个其他命令放在里面。这个判断啊,之前咱们讲了很多遍,就不在这讲了,大家应该看得出来,这么写最严谨。然后,呃,大家看一下,没有任何打开的 excel 表格啊,咱们调试启动, 大家看一下,有多少个格子就读取多少个格子啊,这个没有任何问题。 然后这个打对勾会出现这个这个,嗯,点击一下这个就不会出现了。这个有多少个格子就读取多少个啊,这个大家要会写, 呃,然后,呃,给大家说一下啊,要把它全部便利出来,也挺简单的啊,然后我把这几个给他啊删除一下, 然后 ctrl s 保存一下,这个其实也挺简单, 呃,和上节课讲的差不多一样的,然后加个,呃,加个 for 循环,然后 呃 g 吧, g 等于一,然后 two uh, 一共是四个格子啊,然后下面加, 然后这个位置呢给它改成几, 大家看一下啊,这个细节应该没问题,给大家调试,然后看一下,没有打开任何一个 save 表格,直接启动。 哦,这个是 哦,这个位置,等它循环完,把这个 a 给它变成零, a 给它变成一 啊,这就对了,因为他这个夹了之后呢,他肯定后面就没法变力了,一直会变成啊,这个一直加一,然后把这个哎,重新变回成一就没 问题。给大家看一下啊,大家看一下啊,没有任何问题。对一下 啊,因为这个写法上节课咱们讲过了啊,然后这节课就啊没必要去讲了,因为循环写入跟循环读取他的写法是一样的啊。大家注意一下这个细节, 看一下啊。嗯,没有任何问题。 嗯,大家看一下,对一下,没有任何问题啊。 呃,这节课呢,咱们就讲到这了,然后,呃,大家如果有学习按键精灵的,或者说研究按键精灵的,大家可以,对吧? 加我的 qq 群和加我的 qq 号,咱们下节课,呃,接着讲。

好,我们今天来看这个朋友,他的一个留言啊,他跟我发了一个字不串啊,大写外,小写外,然后 j, 三五幺八,后面还有一个加号,还有个括号。 他说在调试信息的时候都能调试出来,可以用 for 循环把账号和密码都能够调试出来。但是在录入的时候呢, 前面会少录入两位,并且 y 会录成小写的 y, 后面加号录不出来啊。他问我这个要加什么函数啊? 这是一个那相对来说比较复杂的字,不串输出啊。如果我们可以直接用 c、 s、 g 的话 啊,那就比较简单了。但是他这里的应用场景啊,他是要填密码啊,密码区很多时候是不允许用 csg 的,所以我们要用 k plus 啊。把这个串拆分之后,进行一个单独的输出。 我们之前讲那个字母串拆分输出的时候也讲过,如何把一个字母串啊,把它转换成数数,然后一个一个拆分啊,拆分之后单独的用 kpi 输出,这个以前讲过啊。然后我们就要看, 在这种特殊情况下,他有大小写,又有加号,那还有这种括号,我们要怎么样处理才能把这个字不算拆分工作啊,把它做好啊。我们可以看一下啊,看原代码这一块代码呢,基本上就是以前我们的字不算拆分的时候,用了代 干嘛。它的功能很简单,就是把我们的一个字母串呢,那把它给拆开,我们可以跑下看看啊,你可以跑下看看,调试 好,启动好,我们可以看到啊,我们的程序执行完毕的时候,你看它呢,是不是算这个啊, y、 y、 j 对吧,我们上面把它这个是不算了,把它给啊,把它给先设置好了, 然后成语跑完,他会把这个字符串把它拆分出来,那大写 y, 小写 yj, 后面是数字三五幺八加括号。他每一个字符串都被我们成功的拆出来对不对? 然后我们直接你看,如果我们直接去用 csge 的话,它是可以把它切出来的,但是我们要用 k plus 单独把它打出来的话,就会有问题啊,就会有问题,我们可以看看会出什么问题啊。 我们的快键是 f 十哈,我按一下 f 十。好,你看他把我们的字幕算打出来了,但是他没有按要求打。 首先他没有外啊,他没有大写外,他外是小写。然后呢,他的加和括号他没有打出来对不对啊?看见没有? 哈喽,我也录了少两位啊,少录了两位,看见没有,少录了两位,对吧?然后 y 呢?没有大写,跟他的描述的问题是一样的对吧?少录两位啊, y 没有大写。那我们怎么去解决这个问题啊?好,看,我这一块注视啊,看我这一块注视。我写了啊, a s c 函数啊,这个函数它是可以干嘛?它是可以返回我们的 啊,返回我们按键的键码, 因为我们每个按键呢,它都是有个键码的。比如说我们在这里啊,你看组合键,这里看见没有,我们按一下 ctrl 加一啊,然后点插入,你看 他这里看局的十七对吧,依旧是四十九啊。我们每个按键都有个键码,包括我们 abcd 都是一样的啊, abcd 他都有个键码。然后同一个按键啊,同一个字母键,他的大小写键码是不一样的。你看 字母按键,小写是 a z, a 到 z 是九七,那到一百一十二啊。大写的呢? a 到 z 是六十五到九 九十。你看他的数字是有明显的划分的,明显的划分啊。大写的字母,他的数字键码是要小一点的,然后小写的呢,他是要大一点的。 能不能明白?所以我们可以通过这个箭码啊,来判断我们啊,要输入的这个字符啊,是大写还是小写啊?那比如说现在我们在这里啊,加一个输出条数据, 我们写一下啊,当前按键键码 好,我们来调试输出一下啊。啊,启动 好,你看当前按键键码哦,我没有加函数 好,再来一回啊,好,看见没有。当前按键键码下面都有对吧?八十九啊,一百二十一,一百零六五十一,五十三和四十九。好, 那既然我们可以得到件码,那我们就可以用来判断我们的这个字符啊,他是大写还是小写啊?写个衣服一句就可以了。这里我们可以判断一下啊,用衣服一句啊,如果 他大于啊六四,并且小于九十一,说明我们是什么?说明是大写啊。 那如果我们这个写详细一点吧, 如画大于九十六啊,并且小于一百一十三,那说明是什么?说明是小写啊。这里就 好。那大写的时候我们就要怎么样?我们就需要把它给处理一下啊。小写,直接直接直接 k plus 啊,然后大写呢,大写的话,我们要这里先你可以控制我们的这个键盘上的按 键啊,它不是有个大写键吗,对吧?啊,除此之外呢,你还可以直接加一个 shift 啊。 比如说我们后面的,你看如果我们要写个什么大写的 a, 我们是用 shift 加 a 对吧?我们把组合键啊插入一下看看啊,组合键 shift 加 a, 看见没有,是 k down 十六,然后 k plus a 啊,这个是 a, 所以我们在这里就直接把这个 kid down 啊, k up 啊,十六把它给写过来。 然后我们把这个 k price 就还是一样啊,把这一块直接给把它给覆盖掉就可以了啊。 然后呢,然后我们还要写个 s 啊,上面这个是大写的字母 对吧?这还是字母,下面这个是小写的字母。其他其他情况就是数字啊,还有标点符号啊,都可以用其他表示对吧?其他 那其他情况怎么办?其他情况就直接啊,还是一样直接 keep press 啊,直接 keep press。 但是啊,在其他里面我们还要做一下判断。 如果啊,他这里有加号和小括号啊,我们在这里就把加号和小括号做个判断。 如果你还有其他的其他的这个特殊符号的话,你也是一样的啊,单独在这里要把这个特殊符号把给列明一下啊。我们要把特殊符号单独列明。 这里我这里我写的稍微有点复杂,也许有更好的写法。不过我们先不要去纠结我们的代码它的优化问题啊,优化是最后的事情,我们先把功能去实现它啊。 我们在这里写一个 w 啊,写个 w, 如果我们的这个字符它是加号,那或者是括号,我们就要在这里面呢进行一下特殊处理,单独处理啊,如果不是特殊符号呢,我们就直接把它输出。 然后特殊符号里面呢,我们要对两个特殊符号啊,进行一个单独处理啊,进行一个分别处理加号和括号啊。加号的话是 这边 shift 啊, shift 加等于号,我们插入括号呢,括号就是 shift 啊, shift 加我们的零。 好,就像这样啊,我们要做三个大的判断啊。第一个判断是大写字母,我们需要转换一下,那用 shift 直接加这个字符,转转换成大写, 如果是小写的,那我们就直接输出,不用管。然后其他其他就是在特殊符号的时候,我们应该怎么处理啊?我们首先要把特殊符号把它罗列出来,如果是加号,那或者是括号, 如果你还有其他的特殊符号的话,你要把这个 or 进行一个拼接,看见没有,后面继续写。那边明白,我们这里只有两个的话,我就先只写两个啊,然后等于每一个特殊符号的时候呢,我们把它单独处理一下啊,这样我们再用 k plus 啊 去进行一个输出的话就应该可以了啊。好,我们这里调试看看啊,调试看看, 哎,看见没有,对吧,很丝滑。是不是我们成功了,把这个字母算了,进行一个输出。 好,我们来再看一下代码。我们上面先指定我们的目标怎么串啊,然后生成一个生命,一个数组啊,后面就是用一个 后循环,再加上我们的字符串。处理函数啊,把我们的字符串做一个拆分,这个拆分,然后用 asc 这个函数去判断我们的这个字符啊,他到底是大写字母呢,还是小写字母还是其他。 大写字母的话,我们需要加一个 shift, 加一个 shift 把它进行一个大写的输出。 小写字母我们就直接输出啊,直接输出 k plus 直接输出。其他情况的话,如果有特殊符号,如果是特殊符号加号或者是括号, 你还可以继续往后写啊,比如说你是左括号对吧?像这样,这个你可以自己去拓展。好吧,那我们就不全写了啊。 然后我们就做单独的处理啊。做单独的处理。如果啊,不是这些特殊符号,比如说是数字,那我们就直接怎么样?就直接还是一样啊。 k press 你也可以单独把数字啊罗列出一下啊,罗列出一一个分支来。因为数字肯定他也有他的箭码区域啊。零到九啊,零到九啊,肯定也有他的箭码区域。这个代码呢啊,你可以进行去拓展和修改。好吧,他的主要原理和逻辑啊啊,我已经讲的就很清楚了啊。