想做一个程序来指定一个已编译程序所使用的输入法,要用什么API啊
最好给个例子,谢谢了

解决方案 »

  1.   

    Hwnd用findwindow已找到,但不知道要用什么API来做,参数都是什么
    我的API书上没有找到
      

  2.   

    希望对你有用
    Option ExplicitPrivate Declare Function GetKeyboardLayoutList Lib "user32" _
            (ByVal nBuff As Long, lpList As Long) As Long
    Private Declare Function ImmGetDescription Lib "imm32.dll" _
            Alias "ImmGetDescriptionA" (ByVal hkl As Long, _
            ByVal lpsz As String, ByVal uBufLen As Long) As Long
    Private Declare Function ActivateKeyboardLayout Lib "user32" _
            (ByVal hkl As Long, ByVal flags As Long) As Long
            
    Const IME_CONFIG_GENERAL = 1
    Const KLF_REORDER = &H8
    Const KLF_ACTIVATE = &H1Dim Layout(1 To 16) As Long
    Dim ActIme As Long'  选择输入法
    Private Sub Combo1_Click()
        ActIme = Layout(Combo1.ListIndex + 1)
        Text1.SetFocus
    End Sub'  初始装入输入法信息
    Private Sub Form_Load()
        Dim AStr As String * 256
        Dim BStr As String
        Dim x As Long
        Dim hMem As Long
        Dim i As Long
        
        x = GetKeyboardLayoutList(32, Layout(1))
        Combo1.Clear
        If x Then
            For i = 1 To x
                ImmGetDescription Layout(i), AStr, 256
                If InStr(AStr, Chr(0)) = 1 Then
                    BStr = ""
                Else
                    BStr = Left$(AStr, InStr(AStr, Chr(0)))
                End If
            
                If Trim(BStr) = "" Then
                    Combo1.AddItem "英语(美国)"
                Else
                    Combo1.AddItem BStr
                End If
            Next i
        End If
    End Sub'  为文本框指定选中的输入法
    Private Sub Text1_GotFocus()
        If Combo1.ListCount > 0 Then
            ActivateKeyboardLayout ActIme, 1
        End If
    End Sub
      

  3.   

    online(龙卷风(白学了,重新充电中)) 
    你的方法我试了,只能指定自己的输入法,而不能指定其它程序的
    是不是要用Sendmessage来发消息啊