5

DirectInput でキープレスをシミュレートするにはどうすればよいですか? 現在、初期化を行っています(ただし、それが良いかどうかはわかりません):

#include <dinput.h>

#pragma comment (lib, "dinput8.lib")
#pragma comment (lib, "dxguid.lib")

LPDIRECTINPUT8 din;    // the pointer to our DirectInput interface
LPDIRECTINPUTDEVICE8 dinkeyboard;    // the pointer to the keyboard device
BYTE keystate[256];    // the storage for the key-information

void initDInput(HINSTANCE hInstance, HWND hWnd);    // sets up and initializes DirectInput
void detect_input(void);    // gets the current input state
void cleanDInput(void);    // closes DirectInput and releases memory 

誰かが、たとえばゲームで左矢印キーを押すことをシミュレートする方法を教えてもらえますか?

4

1 に答える 1

9

SendInput

SendInputを使用すると、キーの押下をシミュレートできます。仮想キー コードまたはスキャン コードを使用してキーを識別することを選択できます ( KEYBDINPUT.dwFlagsを参照)。どうやら、DirectInput は仮想キー コードを無視しますが、スキャン コードは処理します。

つまり、スキャン コードで SendInput を使用すると、DirectInput が応答します。

傍受

Interceptionツールキットは、カーネル モード ドライバーといくつかのユーザー モード ヘルパー関数を使用して、キーの押下をシミュレートします。

セキュリティ上の懸念があります。これはクローズド ソースのカーネル モード ドライバーであるため、作成者を完全に信頼する必要があります。作成者が完全に信頼できる場合でも、ドライバーは入力の監視と作成を許可するため、大きなセキュリティ ホールが開きます。たとえば、権限のないソフトウェアがそれを使用して、昇格パスワードを盗聴する可能性があります。また、CTRL+ALT+DEL を含むキーボード入力をブロックすることもできます。

github ページのコメントは、Windows 8 ではまだ動作しないことを示唆しています。

ご自身の責任で使用してください。

于 2013-03-03T13:46:34.987 に答える