【发布时间】:2017-12-04 23:30:22
【问题描述】:
我有一个 winforms 应用程序,我需要在其中获取用户的当前键盘布局。为此,我使用System.Windows.Forms.InputLanguage.CurrentInputLanguage.LayoutName。
只要用户将表单作为他的活动窗口,它就可以正常工作,一旦他关注其他内容并更改语言,前一个属性将不会返回正确的值,它将返回上次使用的语言,而表单仍然是活动窗口。
有没有一种方法可以获得用户键盘布局的名称,即使他没有关注表单,对可以使用的内容没有限制。
【问题讨论】:
-
您是否预测用户会在 Windows 运行时更换键盘?
-
@MickyD 他可能没有,但我需要知道他是否有。
-
这个 .NET 类使用 Windows API GetKeyboardLayout。 msdn.microsoft.com/en-us/library/windows/desktop/ms646296.aspx 如您所见,键盘布局可以逐个线程定义。 .NET 类为当前线程读取它,因此您看到的可能是正确的(只要您不缓存该值)。或者您正在寻找不同的信息?
标签: c# winforms layout keyboard keyboard-events