用hwnd = GetForegroundWindowhCurThread = GetWindowThreadProcessId(hwnd, ByVal 0&)得到活动窗口的线程句柄然后不知道怎么办了LoadKeyboardLayout这个方法似乎只能设置当前线程的。请求帮助图片之家答题队:您说的是控制本进程里本线程的输入法状态。我的意思是控制其他进程的输入法。例如,我打开记事本后,我的程序能把记事本的输入法改成西班牙语,控制别的程序的输入法。我试过SendMessage(hwnd, WM_IME_SELECT, True, "0000040A"),好像没用
2 回答

莫回无
TA贡献1865条经验 获得超7个赞
使用LoadKeyboardLayout函数可以改变输入法的顺序,只要在第一个参数中传递目标输入法的KeyboardlayoutName,第二个参数用KLF_REORDER就可以了。
例如,aa = LoadKeyboardLayout(〃00000409〃, KLF_REORDER) 使英文变成第一。那怎样获得KeyboardlayoutName呢?因为使用GetKeyboardLayoutname可以返回当前输入法的KeyboardlayoutName,所以我们可以先用GetKeyboardLayoutList 函数来取得所有输入法,再用activateKeyboardlayout()函数设置当前输入法,最后就可以得到它的KeyboardlayoutName了

不负相思意
TA贡献1777条经验 获得超10个赞
建议试下先用AttachThreadInput附加至目标线程再用activateKeyboardlayout设置输入法。
*****************************************************************
首先需要指出的是你给的那个代码是C的不是Java的。
然后他用的消息不是你的WM_IME_SELECT而是WM_INPUTLANGCHANGEREQUEST,其他的代码你照他的代码搬过来就是了。
我这里没有VB不好测试。
添加回答
举报
0/150
提交
取消