鱼C论坛

 找回密码
 立即注册
查看: 3751|回复: 3

[已解决]屏蔽输入法问题。

[复制链接]
发表于 2016-11-16 12:02:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想屏蔽某个窗口的输入法。

查了一下

可以用ImmAssociateContext(窗口句柄, NULL)这个函数,

可是我怎么用了之后还是能用输入法在那个窗口里打字。

调用的 C:\\Windows\System下的 imm32.dll,

返回值是0.

或者说,我输入一个字符,然后怎么判断是不是调用了输入法。

@无符号整形 @小甲鱼 @不二如是 @~风介~
最佳答案
2016-11-16 12:17:35
DEMO:
HIMC hIMC;

hIMC = ImmAssociateContext(hWnd, NULL);   // It makes IME disable for
                                             // hWnd window.

   // Then you can do whatever you want without IME.

   ImmAssociateContext(hWnd, hIMC); // If you want to enable
                                    // IME again, then you can
                                    // use the previous stored IME
                                    // context(hIMC)
                                    // to restore IME.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-16 12:17:35 | 显示全部楼层    本楼为最佳答案   
DEMO:
HIMC hIMC;

hIMC = ImmAssociateContext(hWnd, NULL);   // It makes IME disable for
                                             // hWnd window.

   // Then you can do whatever you want without IME.

   ImmAssociateContext(hWnd, hIMC); // If you want to enable
                                    // IME again, then you can
                                    // use the previous stored IME
                                    // context(hIMC)
                                    // to restore IME.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-16 13:00:52 | 显示全部楼层

我也是这么用的,小甲鱼老师,
只不过我是在python里。
from ctypes import *

imm32 = windll.LoadLibrary(r'c:\\Windows\System32\imm32.dll')

imc = imm32.ImmAssociateContent(一个记事本的窗口句柄, None);

然后我还是能在那个记事本里打字。。

查看imc的值是0。

然后又试了试
imc = imm32.ImmAssociateContent(一个记事本的窗口句柄, 0);

还是0.

然后我想可能是要先激活输入法才会捕获,
time.sleep(3)
imc = imm32.ImmAssociateContent(一个记事本的窗口句柄, None);

结果还是0.

之后查到另一种获取输入法布局的。
user32.GetKeyboardLayout(记事本线程ID)
然后返回值还是0。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-18 09:26:24 | 显示全部楼层
你需要这个。GetLastError()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 18:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表