[请教]如何通过程序来切换别的应用程序的输入法。 如题。通过程序A切换程序B的输入法。望高手指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 更换输入法PrivateDeclare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, _ lpList As Long) As LongPrivate Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal flags As Long) As LongDim la(1 To 16) As LongDim ActIme As Longprivate sub form_load()Dim astr As String * 256 Dim bstr As String Dim X, hMem, i As Long X = GetKeyboardLayoutList(32, la(1)) Combo1.Text = "Ó¢ÓÃÀ¹ú£©"If X Then For i = 1 To X ImmGetDescription la(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 '»ñµÃµ±Ç°ÏµÍ³µÄÊäÈë·¨Private Sub Combo1_Click() ActIme = la(Combo1.ListIndex + 1) Text3.SetFocus End SubPrivate Sub Text3_GotFocus() If Combo1.ListCount > 0 Then ActivateKeyboardLayout ActIme, 1 End IfEnd Sub A=用FINDWINDOW取得那个程序的句柄。B=GETFOCUS()如果A=B那么SENDKEY(CTRL+SHIFT)。或者KEYBD-EVENT我没试。你试吧。 上述方法可能行,但当接受焦点的窗体的tabindex为1的控件(引用vb的说法)不为一可接受文本输入的时候,可能不起作用。 A=用FINDWINDOW取得那个程序的句柄。B=GETFOCUS()如果A=B那么keybd_event VK_CONTROL, 0, 0, 0keybd_event VK_SPACE, 0, 0, 0keybd_event VK_SPACE, 0, KEYEVENTF_KEYUP, 0keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0也就是CTRL+空格 如果客户切换输入法的方法不是Ctrl+空格 就不好办了呀。 如何从txt文件的特定的行里取数据并写入数据到特定的行 求教MSFlexGrid控件颜色问题,谢谢!!! 如何实现动态机械手表的面板? vb 如何访问java web service(使用soapclient 吗),急!在线等待 小问题请教!! 自定义变量问题 help关于vb运行环境的问题 谁有toolbar上的漂亮图标提供,有分相送 请教一个问题? 请问谁有用VB对.wav语音文件进行lpc分析的经验 如何把一个在内存里的图片与窗体的dc关联? sql语句
PrivateDeclare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, _
lpList As Long) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal flags As Long) As Long
Dim la(1 To 16) As Long
Dim ActIme As Long
private sub form_load()
Dim astr As String * 256
Dim bstr As String
Dim X, hMem, i As Long
X = GetKeyboardLayoutList(32, la(1))
Combo1.Text = "Ó¢ÓÃÀ¹ú£©"
If X Then
For i = 1 To X
ImmGetDescription la(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 '»ñµÃµ±Ç°ÏµÍ³µÄÊäÈë·¨Private Sub Combo1_Click()
ActIme = la(Combo1.ListIndex + 1)
Text3.SetFocus
End Sub
Private Sub Text3_GotFocus()
If Combo1.ListCount > 0 Then
ActivateKeyboardLayout ActIme, 1
End If
End Sub
B=GETFOCUS()
如果A=B那么SENDKEY(CTRL+SHIFT)。或者KEYBD-EVENT我没试。你试吧。
B=GETFOCUS()
如果A=B那么
keybd_event VK_CONTROL, 0, 0, 0
keybd_event VK_SPACE, 0, 0, 0
keybd_event VK_SPACE, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
也就是CTRL+空格