在 C# 中禁用数字锁定切换?
我希望只要我的应用程序正在运行,就将 num-lock 保持在 ON 状态,这样,如果用户取消切换 num-lock,它将立即重新打开。在 C# 中实现这一目标的最简单方法是什么?
需要澄清的是,当我的应用程序运行时,我“拥有”用户的计算机,因此在我的特定情况下,用户不需要取消切换数字锁定(这并不意味着我始终拥有焦点)。
谢谢
I would like to maintain num-lock ON as long as my application is running, so that if the user un-toggles num-lock, it will immediately be toggled back on. What's the simplest way to achieve that in C#?
To clarify, while my application is running I "own" the user's machine, so in my specific case there will not be a need for the user to un-toggle num-lock (that does not mean I have focus at all times).
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以通过几次 P/Invoke 调用来完成此操作。查看此页面
You can do it with a few P/Invoke calls. Check out this page
在表单上启用
Form.KeyPreview
,添加对Microsoft.VisualBasic
的引用(或者您可以直接使用本机 API 来轮询数字锁定键的状态)。Enable
Form.KeyPreview
on your form, add a reference toMicrosoft.VisualBasic
(or you can use the native API directly to poll the state of the num lock key).您需要添加一个低级键盘挂钩来执行此操作。 Stephen Toub 在他的博客上撰写了关于设置的教程这个起来。
您的键盘挂钩可以检查 VK_NUMLOCK 的状态。有关 VB 示例,请参见此处。
You need to add a low level keyboard hook to do this. Stephen Toub wrote a tutorial on his blog on setting this up.
Your keyboard hook can check the status of VK_NUMLOCK. For a VB example see here.