百分百能解决输入框无法接收sendstring命令
作者:
qq250039815 编辑:果果。。
有些游戏中的输入框用sendstring命令输入文字无法输入,遇到这种情况该怎么办? |
游戏输入框[backcolor=rgb(249, 249, 249)]sendstring命令 无法输入之——DNF拍卖行
例如之前的DNF,我们想要写DNF拍卖行的脚本,但是却发现sendstring命令对拍卖行搜索输入框无效了。怎么办?(DNF目前似乎已经支持sendstring命令了,楼主今天进游戏前后台sendstring命令都测试过,可以输入。)
在之前不支持的情况下,有的朋友借助了输入法的短语功能,先把要搜索的内容都编辑成短语,例如:使徒之息百宝袋,我们设置输入法短语:stzxbbd。 然后在脚本中按下这组键既可输入短语内容。
- 您所在的用户组无法下载或查看附件
但是,用这种方法要设置大量的输入法短语,非常不方便。
——可能有的朋友不需要输入汉字,只需要输入英文字母数字即可,这种情况,用keypress一个个输入或者用命令库里的 Call Lib.键盘.KeyList(键码组,模拟方式,毫秒延时) 这条键码组命令即可。
除了输入法这种麻烦的方法,还有其他的方法吗?
有的,那就是编码输入。
百分百能解决输入框无法接收sendstring命令——编码输入
其实对于编码输入,大家并不陌生。曾经在网上流传过一种娱乐玩法,就是让你按住“Alt”键,然后输入一串数字(小键盘区,即Num0-Num9),再松开"Alt"会发现当前激活状态的输入框里会出现字符,文字。没错,其实这个就是编码输入。按住ATL 键后,按下数字,再松开,会将数字转换成相对的字符或者文字。
输入框所采用的编码方式不是相同的,有的使用Unicode编码方式,有的是使用ANSI 编码,那我们怎么知道输入框是属于哪种编码方式呢?
首先,我们需要先了解下下面的两个函数:
ASC函数 | 返回与字符串的第一个字母对应的 ANSI 字符代码。
|
ASCw函数 | AscW 函数返回 Unicode (宽型)字符代码。
|
这里我们以QQ聊天输入框窗口为例,将“玩”字通过按小键盘的方法输入到QQ聊天窗口中,
首先我们需要测试,QQ聊天窗口是Unicode编码还是ANSI 编码。
我们输入下面两行代码,查看下“玩”字的ANSI编码是多少。
- 字符编码 =Asc("玩")
- TracePrint 字符编码
复制代码- 您所在的用户组无法下载或查看附件
玩字的ASC码是-12826,我们点击下QQ聊天窗口,按下atl键不放,然后连续按下小键盘数字键 -12826 ,松开atl键输出结果:(不是玩字而是其它字符)
- 您所在的用户组无法下载或查看附件
我们现在来查看下“玩”字的Unicode编码是多少
- 字符编码 =AscW("玩")
- TracePrint 字符编码
复制代码- 您所在的用户组无法下载或查看附件
玩字的ASCW码是29609 , 我们点击下QQ聊天窗口,按下atl键不放,然后连续按下小键盘数字键 29609,松开atl键输出结果:(出现的是个玩字,说明QQ聊天窗口的编码方式是Unicode编码 )- 您所在的用户组无法下载或查看附件
我们把编码输入的方式,写成脚本
从模拟的角度来思考,脚本大致过程为:
1、获取需要输入的字符串中的每个字符
假设字符串为:变量"str"
则字符串中的每个字符即为:
- For i=1 To Len(str)
- 单个字符=Mid(str,i,1)
- Next
复制代码 注:变量"单个字符",即为当前获取的每个字符。
2、获取每个字符对应的编码
当要获取对应字符的Unicode编码时,则使用AscW命令,若为ANSI编码使则使用ASC命令。
Unicode编码获取:
字符编码=AscW(单个字符)
ANSI编码获取:
字符编码=Asc(单个字符)
若编码<0则+65536
代码:
- If 字符编码<0 Then
- 字符编码=字符编码+65536
- End If
复制代码
3、将编码用键盘输入出来,则自动转换为文字
代码:
- For k=1 To Len(字符编码)
- KeyPress Asc(Mid(字符编码,k,1))+48,1
- Next
复制代码 解释:
Asc(Mid(字符编码,k,1))为获取单个字符的编码的每个数字。(因为编码是一串数字,我们要想输入必须拆开)
为什么每个编码还+48呢? 因为如果不加48,那脚本会自动输入0-9,而不是Num0-Num9,每个数字的按键码差均为48。
如果是输入0-9,那就真的输入一串数字了,不会根据编码生成文字!
源码:
- Function SendString(发送内容, 发送延迟, 文字编码类型)
- If 文字编码类型 = "ANSI" Or 文字编码类型 = "Unicode" Then
- Dim str, 字符编码,i, k
- str = 发送内容
- For i = 1 To Len(str)
- If 文字编码类型 = "ANSI" Then
- 字符编码 = Asc(Mid(str, i, 1))
- Elseif 文字编码类型 = "Unicode"
- 字符编码 = AscW(Mid(str, i, 1))
- End If
- If 字符编码 < 0 Then
- 字符编码 = 字符编码 + 65536
- End If
- KeyDown 18, 1
- For k = 1 To Len(字符编码)
- KeyPress Asc(Mid(字符编码, k, 1)) + 48, 1
- Next
- KeyUp 18, 1
- Delay 发送延迟
- Next
- SendString=1
- Else
- SendString=0
- End If
- End Function
复制代码 点击QQ聊天输入框,运行脚本,使用ANSI编码方式在QQ输入框中输入的结果如下:
- 您所在的用户组无法下载或查看附件
输出的是奇怪的字符。
使用ANSI编码方式在ie浏览器中输入的结果如下:
- 您所在的用户组无法下载或查看附件
输出正常。
使用Unicode编码方式在QQ输入框中输入的结果如下:
- 您所在的用户组无法下载或查看附件
输出正常。
使用Unicode编码方式在ie浏览器中输入的结果如下:
- 您所在的用户组无法下载或查看附件
输出的是奇怪的字符。
大家可以参照上面的测试方式,测试所要输入文字的输入框,是属于哪种编码方式。
楼主测试了下,360浏览器和ie浏览器的输入框是ANSI编码,DNF 和最终幻想的输入框也是ANSI编码方式,大家之后要测试浏览器或者游戏,可以优先选择ANSI编码方式。
这种编码方式模拟输入的方法,支持字符,文字,字母,数字的输入。
代码做成了命令库,需要的同学可以下载:
- 您所在的用户组无法下载或查看附件
本文由按键学院提供技术支持
按键学院实战班(入驻最终幻想)火热招生
按键学院基础视频抢先观看