押されたボタンの値を画面に出力するプログラムを作成しています。プログラムのウィンドウがアクティブでないときにも機能する必要があります。問題なく動作する GetAsyncKeyState(int) を使用してみました。ただし、特定の文字列をキーに付けることができますが、すべてのタイプのキーボードで機能するとは限りません (たとえば、英語のキーボードでは shift+2 は @ ですが、私のキーボードではそうではありません)。Windows で行われるキー入力 (メモ帳に書き込むときに画面に出力される文字) の後処理を検出するにはどうすればよいですか?
質問する
861 次
1 に答える
0
Try the OemKeyScan function. With yours you should have the scancode (e.g. the "2" key has a given scancode that is always the same depending on position on the keyboard, e.g 17 for the "2" key):
int whichscancode= 17;
if (key_with_shift)
whichscancode|= (1<<16); // shifted values with 1<<16
for (i=0; i<256; i++) {
int scan= ::OemKeyScan(i); // try all characters for a matching scancode
if (scan==whichscancode) {
// i here is the ascii code of the key on that position
printf("on that scancode is character %c\n", (char)i);
}
}
于 2013-06-11T16:47:45.120 に答える