我已经尝试了所有伪造键盘操作的常规方法(SendInput/SendKeys/etc),但它们似乎都不适用于使用 DirectInput 的游戏。经过大量阅读和搜索后,我偶然发现了Interception,这是一个 C++ 库,可让您连接到您的设备。
自从我使用 C++(C# 不存在)以来已经有很长时间了,所以我遇到了一些麻烦。我已经粘贴了下面的示例代码。
看起来无论如何都会使用此代码从代码中启动关键操作?这些示例都只是连接到设备并重写操作(x 键打印 y、反转鼠标轴等)。
enum ScanCode
{
SCANCODE_X = 0x2D,
SCANCODE_Y = 0x15,
SCANCODE_ESC = 0x01
};
int main()
{
InterceptionContext context;
InterceptionDevice device;
InterceptionKeyStroke stroke;
raise_process_priority();
context = interception_create_context();
interception_set_filter(context, interception_is_keyboard, INTERCEPTION_FILTER_KEY_DOWN | INTERCEPTION_FILTER_KEY_UP);
/*
for (int i = 0; i < 10; i++)
{
Sleep(1000);
stroke.code = SCANCODE_Y;
interception_send(context, device, (const InterceptionStroke *)&stroke, 1);
}
*/
while(interception_receive(context, device = interception_wait(context), (InterceptionStroke *)&stroke, 1) > 0)
{
if(stroke.code == SCANCODE_X) stroke.code = SCANCODE_Y;
interception_send(context, device, (const InterceptionStroke *)&stroke, 1);
if(stroke.code == SCANCODE_ESC) break;
}
我注释掉的代码是我试过的,但没有用。