• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

返回列表 12345678» / 16
发新话题 回复该主题

[技术交流] 【院刊】-【201409期】百分百能解决输入框无法接收sendstring命... [复制链接]

1#

百分百能解决输入框无法接收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编码是多少。

  1. 字符编码 =Asc("玩")
  2. TracePrint 字符编码
复制代码

您所在的用户组无法下载或查看附件



玩字的ASC码是-12826,我们点击下QQ聊天窗口,按下atl键不放,然后连续按下小键盘数字键 -12826 ,松开atl输出结果:(不是玩字而是其它字符)

您所在的用户组无法下载或查看附件



我们现在来查看下“玩”字的Unicode编码是多少

  1. 字符编码 =AscW("玩")
  2. TracePrint 字符编码
复制代码

您所在的用户组无法下载或查看附件


玩字的ASCW码是29609 我们点击下QQ聊天窗口,按下atl键不放,然后连续按下小键盘数字键 29609,松开atl输出结果:(出现的是个玩字,说明QQ聊天窗口的编码方式是Unicode编码


您所在的用户组无法下载或查看附件






我们把编码输入的方式,写成脚本




从模拟的角度来思考,脚本大致过程为:

1、获取需要输入的字符串中的每个字符
假设字符串为:变量"str"
则字符串中的每个字符即为:

  1. For i=1 To Len(str)
  2. 单个字符=Mid(str,i,1)
  3. Next
复制代码
注:变量"单个字符",即为当前获取的每个字符。

2、获取每个字符对应的编码

当要获取对应字符的Unicode编码时,则使用AscW命令,若为ANSI编码使则使用ASC命令。


Unicode编码获取:


字符编码=AscW(单个字符)


ANSI编码获取:


字符编码=Asc(单个字符)


若编码<0则+65536



代码:

  1. If 字符编码<0 Then
  2. 字符编码=字符编码+65536
  3. End If
复制代码


3、将编码用键盘输入出来,则自动转换为文字


代码:
  1. For k=1 To Len(字符编码)
  2. KeyPress Asc(Mid(字符编码,k,1))+48,1
  3. Next
复制代码
解释:
Asc(Mid(字符编码,k,1))为获取单个字符的编码的每个数字。(因为编码是一串数字,我们要想输入必须拆开)
为什么每个编码还+48呢? 因为如果不加48,那脚本会自动输入0-9,而不是Num0-Num9,每个数字的按键码差均为48。
如果是输入0-9,那就真的输入一串数字了,不会根据编码生成文字!


源码:

  1. Function SendString(发送内容, 发送延迟, 文字编码类型)
  2. If 文字编码类型 = "ANSI" Or 文字编码类型 = "Unicode" Then
  3. Dim str, 字符编码,i, k
  4. str = 发送内容
  5. For i = 1 To Len(str)
  6. If 文字编码类型 = "ANSI" Then
  7. 字符编码 = Asc(Mid(str, i, 1))
  8. Elseif 文字编码类型 = "Unicode"
  9. 字符编码 = AscW(Mid(str, i, 1))
  10. End If
  11. If 字符编码 < 0 Then
  12. 字符编码 = 字符编码 + 65536
  13. End If
  14. KeyDown 18, 1
  15. For k = 1 To Len(字符编码)
  16. KeyPress Asc(Mid(字符编码, k, 1)) + 48, 1
  17. Next
  18. KeyUp 18, 1
  19. Delay 发送延迟
  20. Next
  21. SendString=1
  22. Else
  23. SendString=0
  24. End If
  25. End Function
复制代码

点击QQ聊天输入框,运行脚本,使用ANSI编码方式在QQ输入框中输入的结果如下:

您所在的用户组无法下载或查看附件


输出的是奇怪的字符。



使用ANSI编码方式在ie浏览器中输入的结果如下:

您所在的用户组无法下载或查看附件


输出正常。



使用Unicode编码方式在QQ输入框中输入的结果如下:

您所在的用户组无法下载或查看附件

输出正常。



使用Unicode编码方式在ie浏览器中输入的结果如下

您所在的用户组无法下载或查看附件

输出的是奇怪的字符。



大家可以参照上面的测试方式,测试所要输入文字的输入框,是属于哪种编码方式。


楼主测试了下,360浏览器和ie浏览器的输入框是ANSI编码,DNF 和最终幻想的输入框也是ANSI编码方式,大家之后要测试浏览器或者游戏,可以优先选择ANSI编码方式。


这种编码方式模拟输入的方法,支持字符,文字,字母,数字的输入。
代码做成了命令库,需要的同学可以下载:

您所在的用户组无法下载或查看附件






本文由按键学院提供技术支持


按键学院实战班(入驻最终幻想)火热招生


按键学院基础视频抢先观看


    已有6评分我要评分查看所有评分

    本主题由 超级版主 瑞祥幽冥狼 于 2022/3/17 17:43:51 执行 审核帖子 操作
    <strong>按键学院交流群(开放中):376122403<br />
    <br />
    <a href="http://bbs.anjian.com/thread-548439-1-1.html" target="_blank">按键学院开班<strong> <font color="Red">【安卓导师】+【实战导师】招聘导师</font></strong>啦~~<font color="Red"><strong>待遇特别好,有钱,就是任性。</strong> </font></a><br />
    <br />
    <br />
    <a href="http://bbs.anjian.com/t
    2#

    112131 erffdfffff

    3#

    人在了回下 求教 sendstring 还是无法输入游戏聊天框 QQ和浏览器输入框正常 游戏聊天框 则没反应 除了ANSI 还有那几种编码 可以测试
    附带源码
    Dim HH
    HH = Plugin.Window.GetKeyFocusWnd()
    Call Plugin.Bkgnd.KeyPress(HH, 13)
    Delay 20000
    Function SendString(发送内容, 发送延迟, 文字编码类型)
    If 文字编码类型 = "ANSI" Or 文字编码类型 = "Unicode" Then
    Dim str, 字符编码,i, k
    str = 发送内容
    For i = 1 To Len(str)
    If 文字编码类型 = " ANSIg" 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
    Call Plugin.Bkgnd.SendString(HH, "在吗?")
    Delay 20000
    Call Plugin.Bkgnd.KeyPress(HH, 13)
    Delay 20000

    4#

    看看

    5#

    按时发生发发发

    6#

    多方通话

    7#


    8#

    11111111

    9#

    看学习一下。。。99

    10#

    这个必须要学习

    11#

    thanks................

    12#

    多看看多學習

    13#

    百分百能解决输入框无法接收sendstring命令—

    14#


    15#


    16#

    ......

    17#

    特意来学习的,高手真多啊,谢谢高手

    18#

    斤斤计较快乐

    19#

    学习学习学习

    20#

    一看就知道是用alt输入的=.=


    【紫猫编程学院】火热招生中

    教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

    报名咨询QQ: 345911220 微信:zimaoxy

    紫猫学院免费教程

    加入交流QQ群: 7333555


    发新话题 回复该主题