为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只斗牛犬 2022-10-08 14:14:47
用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了

查看完整回答
反对 回复 2022-10-12
?
不负相思意

TA贡献1777条经验 获得超10个赞

建议试下先用AttachThreadInput附加至目标线程再用activateKeyboardlayout设置输入法。
*****************************************************************
首先需要指出的是你给的那个代码是C的不是Java的。
然后他用的消息不是你的WM_IME_SELECT而是WM_INPUTLANGCHANGEREQUEST,其他的代码你照他的代码搬过来就是了。
我这里没有VB不好测试。

查看完整回答
反对 回复 2022-10-12
  • 2 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号