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

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

  •  
  •   mouyase · 2024-05-16 09:46:17 +08:00 · 1889 次点击
    这是一个创建于 425 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求

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