VB.NET如何获取键盘布局?

4
我目前正在学习在QWERTY键盘上使用DVORAK布局,这意味着当我想要使用键盘快捷键(例如Ctrl + C)时,在DVORAK中它变成了Ctrl + J,方便性在我必须用两只手击打各种命令时丧失了。Windows似乎没有更改快捷键的方法,而且当您切换回QWERTY时,autohotkey脚本不起作用,它们会破坏QWERTY的快捷功能,直到您退出脚本。
所以我想做的是制作一个可以检测您的布局并发送正确键的程序,但首先我需要检测用户正在使用哪种键盘布局,但我似乎无法弄清楚如何检测。
有没有一种简单的方法来确定某人正在使用哪种键盘布局?

2
你看过这个API函数吗?http://msdn.microsoft.com/en-us/library/windows/desktop/ms646296(v=vs.85).aspx?以下是在VB.NET中使用它的示例:http://www.pinvoke.net/default.aspx/user32.getkeyboardlayout。但我不确定它是否适用于检测DVORAK和QWERTY键盘布局。 - Steven Doggart
似乎有点超出我的能力范围,我不太确定参数应该是什么,或者该如何处理从VB函数返回的数字字符串。如果您知道,请解释一下它是如何工作的?编辑:我可以使用InputLanguage.CurrentInputLanguage()获取我的输入语言。然而,这并没有提示键盘布局是什么。 - Postman
我真的不知道。当你从DVORAK切换到QWERTY时,GetKeyboardLayout函数的返回值是否会改变?如果是,那么哪个会改变,高位、低位还是两者都会改变? - Steven Doggart
我不知道为什么之前试过了,但现在我碰巧找到了一个行之有效的方法。看来只有向别人寻求帮助才能找到答案 :/InputLanguage.CurrentInputLanguage.LayoutName.正常格式返回"US"。 Dvorak返回"United States-Dvorak"。无论如何,感谢您的帮助! - Postman
不错!现在你可以回答自己的问题并将其标记为正确答案 :) 我会给它投赞成票。我相信将来对其他人会有帮助。 - Steven Doggart
1个回答

2

幸运地,我偶然发现了正确的答案。

InputLanguage.CurrentInputLanguage.LayoutName

返回一个字符串。

如果您的格式是常规的QWERTY英语,它会返回“US”。

如果它是DVORAK(美国),它将返回“United States-Dvorak”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接