V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AX5N
V2EX  ›  程序员

AutoHotkey 的 Send 效率太低怎么办

  •  
  •   AX5N · 2018-09-03 08:04:57 +08:00 · 2845 次点击
    这是一个创建于 2274 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主要是拿来修改某游戏的按键映射,那个游戏的按键控制面板实在是太简陋了,所以打算用 AHK 让一个键能映射到几个按键上,虽然一个键能发出好几种命令,但其实在不同场景下只有一种命令能工作。

    因为自带的映射功能只能一个键映射到另一个键上,所以就绕个弯路用 Send 来实现。但是 Send 的效率太低,有时候能立即反应,有时候要按好几次才能反映过来。而 SendInput 在游戏里不工作,SendPlay 在 vista 之后就彻底废了。所以又只能转回头解决 Send 的效率问题了,有没又什么好的解决办法?

    目前尝试过增加延时(SetKeyDelay),和使用钩子(#UseHook),但效果都不尽如人意。

    不知道 AHK 脚本编译后的效率核 C 比如何,如果用 C 自己实现的话,会提升效率吗。

    代码:

    a::Send {Enter}
    
    noe132
        1
    noe132  
       2018-09-03 08:37:51 +08:00 via Android
    SendInput 试试用管理员权限执行脚本?
    有时候会有这个问题
    另外设置脚本 cpu 优先级最高能改善延迟的问题
    AX5N
        2
    AX5N  
    OP
       2018-09-03 08:59:56 +08:00
    @noe132
    其实退一步来讲,就算能运行 SendInput 我也没法用,因为我那游戏必须要有至少 1 的延迟,否则按键触发不出来,而 SendInput 无法设置延迟。

    CPU 优先级我也尝试过,无果。
    huaxianyan
        3
    huaxianyan  
       2018-09-03 09:02:22 +08:00
    down 和 up 有没有试试呢?我之前碰到 send 但是触发不了的时候我就让他按到能触发为止
    loqixh
        4
    loqixh  
       2018-09-03 09:48:22 +08:00
    不是效率问题, 是游戏一般用 DirectInput, 没处理到你的消息
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2707 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:42 · PVG 14:42 · LAX 22:42 · JFK 01:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.