2012-02-26 72 views

回答

1

的InputLanguage.CurrentInputLanguage屬性,可以切換鍵盤佈局。不太確定它可以處理單一語言的多種佈局,但我不知道「Phoenetic Key Board」的真正含義。底層的Windows API函數是LoadKeyboardLayout()和ActivateKeyboardLayout(),你可以把它們串起來。 GetKeyboardLayoutList()獲取已安裝佈局的列表,您可能需要使用GetKeyboardLayoutName()來獲取佈局的描述。也由InputLanguage類覆蓋。

通常情況下,用戶可以選擇鍵盤佈局,迫使您的偏好對可用性非常不利。易於使用語言欄。

0

你可以改變你的應用程序的輸入語言是這樣的:

InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(New System.Globalization.CultureInfo("ZH-CN")) 

,但如果你不使用Windows API具有代碼的臨時所需InputLanguage安裝,你可以安裝你的文化輸入語言:

<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()