C# からこの関数を呼び出しています: GetKeyboardStatus()
ドキュメントを見ると、ビットマスク値を返すと書かれています。私のコードの目標は、デバイスに英数字の物理キーボードがあるかどうかを判断することです。この関数の呼び出しに成功し、戻り値は 15 です。ただし、ビット マスクを理解していないため、それを 0x0008 値と比較する方法がわかりません。ドキュメントによると、「キーボード ハードウェアが英数字キーがあります。」これを Windows Mobile または Compact Framework の質問としてタグ付けすることはありません。私の質問に答えるために理解する必要があるのはビット マスクと C# だけだと思うからです。答えがビット マスクの操作方法の理解を深めてくれることを願っています (必須ではありませんが)。これが私のコードです。間違っているのはreturnステートメントだけだと思います:
public static bool HasAlphaNumericKeys {
get {
const uint KBDI_KEYBOARD_ALPHA_NUM = 0x0008;
uint returnValue = GetKeyboardStatus();
return returnValue == KBDI_KEYBOARD_ALPHA_NUM;
}
}
[DllImport("coredll")]
private static extern uint GetKeyboardStatus();
ご協力いただきありがとうございます。ただし、これは英数字キーを備えた物理キーボードがあるかどうかを判断するための信頼できる方法ではないことがわかりました。キーボード付きとキーボードなしの 2 つのデバイスを試してみましたが、GetKeyboardStatus 関数は両方で 15 を返したため、回答のビット マスクの説明をテストすることさえできません。