【问题标题】:How to detect if keyboard has numeric block?如何检测键盘是否有数字块?
【发布时间】:2023-03-18 04:00:01
【问题描述】:

我正在制作一个小工具,可以用数字小键盘打开键盘上的 numlock。我知道如何用 C# 打开/关闭数字锁定,但我不知道如何确定键盘是否有数字小键盘。

【问题讨论】:

  • 如果您发现 Numlock 本身意味着数字键盘存在。不是吗?
  • @Gul Md Ershad - 请仔细阅读问题说明。谢谢
  • 是的,但是没有数字键盘的笔记本电脑可以通过 Fn 键访问 numlock。在这样的键盘上我不想自动打开numlock。
  • @Amit 我不知道还能说什么。我有一个打开和关闭数字锁定的 C# 函数。我想用这个功能自动开启NumLock。但仅限于键盘,它们有自己的物理数字小键盘(不是通过没有物理数字小键盘的 MacBook 的功能)。不幸的是,我不知道如何确定键盘是否有数字键盘。所以我不能提供任何代码。

标签: c# .net


【解决方案1】:

在项目中导入此 API:

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
public static extern short GetKeyState(int keyCode);

并使用此命令获取 Numlock 状态:

bool CapsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0;
bool NumLock = (((ushort)GetKeyState(0x90)) & 0xffff) != 0;
bool ScrollLock = (((ushort)GetKeyState(0x91)) & 0xffff) != 0;

无 NumLock 返回 0

【讨论】:

  • 它看起来有效。非常感谢您,先生:-)
猜你喜欢
  • 2022-12-05
  • 2012-02-20
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 2012-12-31
  • 2012-04-04
  • 1970-01-01
相关资源
最近更新 更多