DirectInput について助けが必要です。何をしようとしているのかを説明します。キーを 1 つだけ押したときに、プログラムがキーの組み合わせをゲームに送信するようにしたいと考えています。例: 「r」を押すと、「1」、「3」、「2」、「4」のキーが押されます。ここからいくつかのコードを見つけました。しかし、それらは正確には機能しませんでした。
public static void Send_Key_Hold(short Keycode)
{
INPUT[] InputData = new INPUT[1];
InputData[0].type = 1;
InputData[0].ki.wScan = Keycode;
InputData[0].ki.dwFlags = (int)(KEYEVENTF_SCANCODE);
SendInput(1, InputData, Marshal.SizeOf(InputData[0]));
}
public static void Send_Key_Release(short Keycode)
{
INPUT[] InputData = new INPUT[1];
InputData[0].type = 1;
InputData[0].ki.wScan = Keycode;
InputData[0].ki.dwFlags = (int)(KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE);
SendInput(1, InputData, Marshal.SizeOf(InputData[0]));
}
ここに私のコードと私の質問があります: Send_Key_Hold を使用しているときは、ゲームで 1 つのキーのみを押し、最初のキーが保持されているため、他の組み合わせキーは押されていないと思います。Send_Key_Hold と Send_Key_Release を一緒に使用すると、ゲームのボタンが押されません。しかし、デスクトップ (つまり、ゲーム以外のアプリケーション) では、キーを押します。