Vb.net net获取键盘布局

Vb.net net获取键盘布局,vb.net,layout,keyboard,dvorak,Vb.net,Layout,Keyboard,Dvorak,我目前正在学习QWERTY键盘上的DVORAK布局,这意味着当我想在DVORAK中使用键盘快捷键时,比如Ctrl+C,最后变成Ctrl+J,当我不得不用双手点击各种命令时,这种便利性就失去了。Windows似乎没有办法更改快捷方式,并且自动热键脚本在您切换回QWERTY时不起作用,它们会破坏QWERTY的快捷方式功能,直到您退出该脚本 所以我想做的是制作我自己的程序来检测你的布局并发送正确的键,但是首先我需要检测用户使用的是哪种键盘布局,而我似乎不知道怎么做 有没有一种方法可以轻松确定某人正在使

我目前正在学习QWERTY键盘上的DVORAK布局,这意味着当我想在DVORAK中使用键盘快捷键时,比如Ctrl+C,最后变成Ctrl+J,当我不得不用双手点击各种命令时,这种便利性就失去了。Windows似乎没有办法更改快捷方式,并且自动热键脚本在您切换回QWERTY时不起作用,它们会破坏QWERTY的快捷方式功能,直到您退出该脚本

所以我想做的是制作我自己的程序来检测你的布局并发送正确的键,但是首先我需要检测用户使用的是哪种键盘布局,而我似乎不知道怎么做


有没有一种方法可以轻松确定某人正在使用的键盘布局?

我幸运地找到了正确答案

InputLanguage.CurrentInputLanguage.LayoutName
返回一个字符串

如果您的格式是常规的古QWERTY英语,则返回“US”


如果是DVORAK(美国),则返回“United States DVORAK”

您见过此API函数吗?下面是一个在VB.NET中使用它的示例:我不确定这是否适用于检测DVORAK与QWERTY。这似乎有点让我不知所措,我不确定参数应该是什么,也不确定如何处理从VB函数返回的数字字符串。如果你知道,你能解释一下它是如何工作的吗?编辑:我可以使用:InputLanguage.CurrentInputLanguage()获取我的输入语言。但是,这并没有提示键盘布局是什么。我真的不知道。从DVORAK切换到QWERTY时,
GetKeyboardLayout
函数的返回值是否会改变?如果是这样的话,有什么变化,高的词,低的词,或者两者都有?我不知何故偶然发现了一种有效的方法,尽管我之前尝试过。我想我只有在寻求帮助后才能找到答案:/InputLanguage.CurrentInputLanguage.LayoutName。常规格式返回“US”。德沃夏克返回“美国德沃夏克”。无论如何谢谢你的帮助!美好的现在你可以回答你自己的问题,并将其标记为正确答案:)我会投票赞成。我相信它将来会对其他人有用。