我已经为乌尔都语安装了Phoenetic Key board,我可以从控制面板中选择>语言>键盘 我可以使用我的vb.net代码添加语言和选择键盘吗?
由于
答案 0 :(得分:1)
InputLanguage.CurrentInputLanguage属性可让您切换键盘布局。不太确定它可以处理单一语言的多种布局,但我真的不知道“Phoenetic Key board”究竟意味着什么。底层的Windows api函数是LoadKeyboardLayout()和ActivateKeyboardLayout(),你可以对它们进行异或。 GetKeyboardLayoutList()获取已安装布局的列表,您可能需要使用GetKeyboardLayoutName()来获取布局的描述。还包含InputLanguage类。
您通常会将其留给用户选择键盘布局,强制您的偏好对可用性非常不利。语言栏很容易。
答案 1 :(得分:0)
您可以通过以下方式更改应用程序输入语言:
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(New System.Globalization.CultureInfo("ZH-CN"))
但如果您没有安装所需的InputLanguage
,则可以使用windows api从代码临时安装您的文化输入语言:
<DllImport("user32.dll")> _
Private Shared Function UnloadKeyboardLayout(hkl As IntPtr) As Boolean
End Function
<DllImport("user32.dll")> _
Private Shared Function LoadKeyboardLayout(pwszKLID As String, Flags As UInteger) As IntPtr
End Function
Public Class KeyboardHolder
Implements IDisposable
Private ReadOnly pointer As IntPtr
Public Sub New(klid As Integer)
pointer = LoadKeyboardLayout(klid.ToString("X8"), 1)
End Sub
Public Sub New(culture As CultureInfo)
Me.New(culture.KeyboardLayoutId)
End Sub
Public Sub Dispose()
UnloadKeyboardLayout(pointer)
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
Try
UnloadKeyboardLayout(pointer)
Finally
MyBase.Finalize()
End Try
End Sub
End Class
并以这种方式使用它:
' install keyboard layout temporary
Dim keyboard As New KeyboardHolder(New System.Globalization.CultureInfo("ZH-CN"))
' after finishing what you want remove temporary added keyboard layout:
keyboard.Dispose()