网上查了一些资料,还是没头绪,求指教啊!

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

一只斗牛犬
浏览 141回答 2
2回答

莫回无

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

不负相思意

建议试下先用AttachThreadInput附加至目标线程再用activateKeyboardlayout设置输入法。*****************************************************************首先需要指出的是你给的那个代码是C的不是Java的。然后他用的消息不是你的WM_IME_SELECT而是WM_INPUTLANGCHANGEREQUEST,其他的代码你照他的代码搬过来就是了。我这里没有VB不好测试。
打开App,查看更多内容
随时随地看视频慕课网APP