vb.net 获取键盘布局
Posted
技术标签:
【中文标题】vb.net 获取键盘布局【英文标题】:Vb.net get keyboard layout 【发布时间】:2013-07-19 05:35:28 【问题描述】:我目前正在我的 QWERTY 键盘上学习 DVORAK 布局,这意味着当我想在 DVORAK 中使用键盘快捷键(例如 Ctrl + C,最终是 Ctrl + J)时,当我有用两只手敲击各种命令。 Windows 似乎无法更改快捷方式,并且当您切换回 QWERTY 时,自动热键脚本不起作用,它们反而会破坏 QWERTY 的快捷方式功能,直到您退出脚本。
所以我想做的是制作自己的程序来检测您的布局并发送正确的键,但首先我需要检测用户正在使用哪种键盘布局,我似乎无法弄清楚如何。
有没有办法轻松确定某人正在使用哪种键盘布局?
【问题讨论】:
你见过这个API函数msdn.microsoft.com/en-us/library/windows/desktop/…吗?这是在 VB.NET 中使用它的一个示例:pinvoke.net/default.aspx/user32.getkeyboardlayout 不过,我不确定这是否适用于检测 DVORAK 与 QWERTY。 这似乎有点过头了,我不太确定参数应该是什么,或者如何处理从 VB 函数返回的数字字符串。如果你知道,你能解释一下它是如何工作的吗?编辑:我可以使用 InputLanguage.CurrentInputLanguage() 获取我的输入语言但是,这没有提示键盘布局是什么。 我真的不知道。当您从 DVORAK 切换到 QWERTY 时,GetKeyboardLayout
函数的返回值是否会改变?如果是,发生了什么变化,高位词、低位词还是两者都有?
我不知何故偶然发现了一种有效的方法,即使我之前尝试过。我想我只有在寻求帮助后才能找到答案:/ InputLanguage.CurrentInputLanguage.LayoutName。常规格式返回“US”。德沃夏克返回“美国-德沃夏克”。无论如何感谢您的帮助!
不错!现在您可以回答自己的问题并将其标记为正确答案:) 我会投票。我相信它将来会对其他人派上用场。
【参考方案1】:
幸运的是,我偶然发现了正确的答案,
InputLanguage.CurrentInputLanguage.LayoutName
返回一个字符串。
如果您的格式是常规的旧 QWERTY 英语,则返回“US”
如果是 DVORAK(United-States),则返回“United States-Dvorak”
【讨论】:
以上是关于vb.net 获取键盘布局的主要内容,如果未能解决你的问题,请参考以下文章