【发布时间】:2013-01-21 17:43:08
【问题描述】:
我正在尝试为游戏 (Elsword) 重新映射一些键。
首先我用这段代码来模拟按键:
#define WINVER 0x0500
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "dinput.h"
int main()
{
HWND hWndMain = FindWindow(0, "Elsword");
SetForegroundWindow(hWndMain);
Sleep(3000);
INPUT input[2];
input[0].type=INPUT_KEYBOARD;
input[0].ki.wScan = DIK_V; // direct-input scancode for key '1'
input[0].ki.dwFlags=KEYEVENTF_SCANCODE;
input[1].type=INPUT_KEYBOARD;
input[1].ki.wScan = DIK_V; // direct-input scancode for key '1'
input[1].ki.dwFlags=KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(2,input,sizeof(INPUT));
Sleep(1000);
return 0;
}
在所有其他应用程序中它都可以正常工作,但在游戏窗口中它什么也不做......
【问题讨论】:
-
Afaik 很难将输入发送到具有 DirectInput 和全屏模式的应用程序。也许尝试使用窗口模式。
-
我已经试过了,还是不行……
-
您可以尝试 API-Hooking en.wikipedia.org/wiki/Hooking#Hooking_Direct3D,来操作输入数据。
标签: c keyboard directx simulate sendinput