我从 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,所以我什至无法测试答案中位掩码的解释。