【问题标题】:Real keyboard simulation真实键盘模拟
【发布时间】:2020-12-01 23:00:53
【问题描述】:

我正在尝试为游戏编写机器人。几个月来我遇到的最大问题是键盘模拟
我的操作系统是 Windows 10。在该操作系统上,当尝试通过代码模拟按键时,Windows 10 会在请求中添加一个标志。此标志表示此按键来自程序,而不是来自硬件。
这样游戏就可以检查用户输入并过滤所有模拟按键

我的游戏就是这样,所以我一直在尝试找到一种方法来通过它。

虚拟盒子
第一个解决方案是从虚拟盒子运行游戏。然后从主机运行机器人程序。当专注于 VirtualBox 时,程序能够毫无问题地模拟键盘。 (那是因为VirtualBox做了“欺骗”关键模拟来自硬件的操作系统的硬话)

这种方式效果很好,但主要缺点是在VM上运行游戏超级慢,游戏翻转很多。我已经尝试了多个关于如何在 VM 上获得最佳游戏结果的教程,但都没有真正奏效..

真正的键盘模拟
我最近想到了这个想法。我想知道我是否可以以某种方式欺骗我的电脑,使其认为按键来自硬件。
也许使用公对公 USB 电缆并将 PC 连接到自身,然后进行真正的键盘模拟(从 USB 的一侧发送键盘请求并通过另一侧获取它)。
或者也许有其他方法可以实现这一目标?

我不想要的东西
有一些解决方案可能会奏效,但我不想尝试:

  1. 将我的操作系统更改为 Windows 7:我不想降低我的操作系统版本
  2. windows 7 的双启动:我在 linux 的双启动之前尝试过,让它工作起来很糟糕

问题是,你知道如何以 Windows 10 不会添加“老鼠”标志的方式模拟键盘

【问题讨论】:

    标签: windows keyboard simulation


    【解决方案1】:

    选项 1

    Windows 驱动程序正是您所需要的。在您的 Windows 驱动程序中,创建一个键盘 HID 设备,然后通过此 HID 设备发送您的密钥。

    • 优点:
      • 软件总数
    • 缺点:
      • 复杂
      • Windows 驱动需要签名(你必须付费),或者你必须将你的 windows 10 设置为Test Mode 才能加载驱动

    选项 2

    使用 Arduino 发送您的密钥。参考https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

    • 优点
      • 简单易学
    • 缺点
      • 需要硬件。

    【讨论】:

    • 选项1:我可以将驱动程序写入当前操作系统吗?我看过在 VM 选项 2 上运行自定义操作系统的视频:我得到了硬件 =) 可能会选择这种方式
    • 是的。驱动程序错误可能导致蓝屏死机。我建议您在一个系统中编写驱动程序,但在另一个系统(如 VM)中测试(调试)您的驱动程序。
    【解决方案2】:

    你需要driver level key simulation
    因为D3D game engine 制作的一些游戏会阻止system level simulation,例如winAPIpykeyboard

    我曾经使用driver level key simulation 在游戏中作弊,比如lol、cs、pubg...

    所以,如果你使用 python,你可以使用keyboardmousectypes
    如果你是win32平台,你可以使用winiopydamo

    他们都是driver level simulation

    ps:如果您的游戏阻止了一种解决方案,请尝试另一种解决方案。


    keyboard
    ctypes simulation

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 2015-03-11
      • 1970-01-01
      • 2011-02-02
      • 2021-06-15
      • 2011-09-17
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多