5

keybd_eventを使用する多くの例では、bScan パラメータの値が 0x45 になっています。

その 0x45 値の意味は何ですか?

0x45 はキーボードのスキャンコードであるという印象を受けましたが、さまざまな数のキーに使用されているため、それについてはよくわかりません。

私の目標はkeybd_event、.NET P/Invoke または Delphi のいずれかを使用して、型をより制限し (たとえば、列挙型またはフラグ付き列挙型を使用して)、コードの保守が容易になるようにすることです。

4

1 に答える 1

4

これは確かにスキャン コードであり、多くのキーボードでは NumLock キーのスキャン コードです。

のドキュメントに添付されているサンプル コードkeybd_eventは、NumLock 状態を切り替える方法の例です。したがって、当然、スキャン コードとして 0x45 が使用されます。私の推測では、あなたが見つけた他の多くの例は、単にkeybd_eventMSDN の例からその値をやみくもにコピーしただけです。通常、アプリケーションはスキャン コードを無視して仮想キー コードに応答するため、通常、スキャン コードとして渡される値は問題になりません。

SendInput最後に、ではなくを使用しますkeybd_event。その理由は、前者を使用すると一連のイベントをキューに入れることができるからです。一度に 1 つずつイベントをキューにkeybd_event配置すると、偽のイベントが実際のイベントに散在する可能性があります。SendInputそして、その問題が導入された主な理由の 1 つです。

于 2013-02-25T10:42:10.987 に答える