0

実行時に特定のキーまたはキーの組み合わせ、またはマウスのボタンが押されるまで待機する単純なアプリケーションを作成したいと考えています。この情報を取得するために MouseKeyHook API を使用していますが、いくつかの問題が発生しています。

ボタンの文字列値を保存した値と比較できるため、これは完全に機能しているようです。ここからが本当の問題の始まりです。キーボードのプログラム可能なボタンを押すたびに、何も出力されませんか? なんで?

private void GlobalHookKeyPress(object sender, KeyPressEventArgs e)
{
    HotKey.Text = e.KeyChar.ToString();
}

private void GlobalHookMouseDownExt(object sender, MouseEventExtArgs e)
{
    HotKey.Text = e.Button.ToString();
}

MouseKeyHook API を使用してフックすると、2 つのマウス ボタン XButton1 と XButton2 を取得できましたが、キーボード ボタンについては何も取得できませんでした。

ここに画像の説明を入力

4

1 に答える 1

0

キーボードのプログラマブル キーは、ベンダー ドライバー ソフトウェアを必要とする特定の API を使用する傾向があります。そのソフトウェアは、キーの押下を、標準操作に変換されるアクション (または一連のアクション) にマップします。たとえば、ボタン X を押すことはAキーを 5 回続けて押すことに対応し、ソフトウェアはそれらの 5 回の押下を検出できる必要があります。

マウス ボタンは非常に汎用的であり、Windows API では 8 つの標準ボタンを使用できると思います ( API リファレンスはこちらをご覧ください)。それ以上の場合は、特定のベンダー ドライバーが再度必要になり、それらのボタンをマップする必要があります。

于 2015-11-23T01:12:39.270 に答える