在vb.net中通过API更改键盘语言

时间:2012-04-30 19:50:17

标签: vb.net

我是vb.net的新手,我应该在程序运行时使用API​​函数将键盘语言更改为Farsi(波斯语)(这是一个带有文本框的普通表单)。有人知道我该怎么办? 任何形式的帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

非常容易。无需使用api内置于.net框架中。

Dim TypeOfLanguage = New System.Globalization.CultureInfo("fa") ' or "fa-IR" for Farsi(Iran) 
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(TypeOfLanguage)

More info on localization..

答案 1 :(得分:0)

Dim TypeOfLanguage = New System.Globalization.CultureInfo("fa") ' or "fa-IR" for Farsi(Iran) 
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(TypeOfLanguage)

这样可以正常工作而无需使用任何API。

答案 2 :(得分:0)

会很好,但 InputLanguage 似乎不适用于WPF。 InputLanguage是Windows窗体类型。

答案 3 :(得分:0)

我创建了一个编,该编使用命令My.Computer.Keyboard.SendKeys(“ en-US text”,True)将字符发送到另一个应用程序,但是有时当前输入语言不是en-US,则所有字符发送均不正确。 经过对Ezi单词的研究,我可以通过修改以下内容来解决: 感谢Ezi。

Private Sub ipl(lg As String)
    Dim TypeOfLanguage = New System.Globalization.CultureInfo(lg) ' or "fa-IR" for Farsi(Iran) 
    InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(TypeOfLanguage)
End Sub

Private Sub swlg() 'switch language TH-US
    If InputLanguage.CurrentInputLanguage.Culture.Name <> "en-US" Then
        Do
            ipl("en-US")
        Loop Until InputLanguage.CurrentInputLanguage.Culture.Name = "en-US"
    End If
End Sub