V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mouyase
V2EX  ›  问与答

有什么方案可以在 Windows 下实现驱动级的宏吗

  •  
  •   mouyase · 222 天前 · 1486 次点击
    这是一个创建于 222 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求

    我想要实现在某些游戏(DNF)中,某键按住后自动连发,仅游戏内生效,且不影响正常打字,且同时可以响应多个按键。 在此基础上还想要一些高级的可以编程的宏功能,类似自动连招。

    当前状况

    我之前使用 AHK 开发了一套工具,上面说的功能都能实现。但是 AHK 最低的时间间隔只能是 16ms(这个好像是和系统时钟有关),并且 CPU 占用略高,在高负载的时候延迟会变高。 然后有朋友给我推荐了 reWASD ,这个东西我试过之后,发现 cpu 占用很低,并且延迟也非常低,但是一个是他收费,一个是他影响打字,并且不太好做宏。 本人更希望可以找到一些免费的方案,以用于给更多的游戏玩家提供方便。

    附加情况

    本人有一定的 node 开发经验,但是对 win32 编程不太擅长,所以手搓驱动估计是不太行了,不知道有没有现成方案可以参考。

    信息记载

    我尝试过使用Interception驱动,但是这个目前有一个问题,就是在响应事件的时候,第一次按下触发后,要等待 1 秒左右才有后续的触发,有点类似我们键盘平时按住一个字母一样,但是这种并不能满足需求。参考https://github.com/oblitum/Interception/issues/183

    20 条回复    2024-05-16 19:19:33 +08:00
    TomVista
        1
    TomVista  
       222 天前
    鼠标键盘宏
    mouyase
        2
    mouyase  
    OP
       222 天前
    @TomVista 无效回答
    yorath
        3
    yorath  
       222 天前
    vmebeh
        4
    vmebeh  
       222 天前 via iPhone
    FindWindow 根据窗口类和名来找到目标窗口的 hWnd
    GetForegroundWindow 定期获取最前的窗口 hWnd
    比较两个 hWnd 来判断当前窗口是不是目标窗口
    用 SendInput 发按键消息
    如果需要拦截部分按键消息就需要底层键盘钩子:SetWindowsHookEx
    mouyase
        5
    mouyase  
    OP
       222 天前
    @yorath 这玩意是个虚拟键盘驱动?
    @vmebeh 这是 VC 的实现方式吗?我用 Tarui 能不能做到这些呢
    vmebeh
        6
    vmebeh  
       222 天前
    @mouyase 能用 win32 api 的都可以吧,我用 vb……
    mouyase
        7
    mouyase  
    OP
       222 天前
    @vmebeh win32 编程我是一点都不懂,苦手呀……
    jim9606
        8
    jim9606  
       221 天前 via Android
    你确定你这么在内核里改键盘事件不会被反作弊认定为外挂?
    你还不如考虑下有可编程固件的小键盘。
    ly841000
        9
    ly841000  
       221 天前 via iPhone
    @mouyase 不要想了,你实现不了,实现了现在也驱动都要数字证书,有数字证书 dnf 也会封号
    SkywalkerJi
        10
    SkywalkerJi  
       221 天前
    要过反作弊吗?
    需要的话我觉得还是放弃吧,不如乖乖给罗技雷蛇交钱。
    minami
        11
    minami  
       221 天前
    程序的 16ms 定时精度可以改的,对应的 WIN32 接口是 https://learn.microsoft.com/en-us/windows/win32/api/timeapi/nf-timeapi-timebeginperiod
    minami
        12
    minami  
       221 天前
    @minami 搜了下 AHK 的文档不是有写吗 https://www.autohotkey.com/docs/v1/lib/Sleep.htm
    ysc3839
        13
    ysc3839  
       221 天前 via Android
    你想低成本搞的话,那还是别整驱动了,有没有现成的驱动还不好说,就算有也很难绕过反作弊。
    现在更多是用个单片机模拟 USB 键鼠。
    danbai
        14
    danbai  
       221 天前 via Android
    dd 键鼠驱动
    pinkbook
        15
    pinkbook  
       221 天前
    花钱买外挂,外挂开发人员就是整天研究这些的的,还能帮你规避一下容易过的反作弊
    mouyase
        16
    mouyase  
    OP
       221 天前
    @minami 我试过他这个,虽然看起来 Sleep 的精度变高了,但是反而我在游戏里的输入频率变低了,我不清楚为什么,但是确实不能用
    mouyase
        17
    mouyase  
    OP
       221 天前
    @SkywalkerJi 不需要,连发这东西好多年一直大活都在用,他游戏里自带就三种不同的连发,只不过在打团帧率低的时候基本都失灵罢了
    mouyase
        18
    mouyase  
    OP
       221 天前
    @danbai dd 并不能解决输入延迟
    danbai
        19
    danbai  
       221 天前 via Android
    @mouyase 为啥他不是支持设置按下抬起吗时间都可以控制
    mouyase
        20
    mouyase  
    OP
       221 天前
    @danbai 如果是在 ahk 里用,最小的一个命令执行间隔就是 16ms ,而且 dd 要联网,有时候还会导致蓝屏,属实不好用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:29 · PVG 10:29 · LAX 18:29 · JFK 21:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.