屏蔽输入法问题。
想屏蔽某个窗口的输入法。查了一下
可以用ImmAssociateContext(窗口句柄, NULL)这个函数,
可是我怎么用了之后还是能用输入法在那个窗口里打字。
调用的 C:\\Windows\System下的 imm32.dll,
返回值是0.
或者说,我输入一个字符,然后怎么判断是不是调用了输入法。
@无符号整形 @小甲鱼 @不二如是 @~风介~ 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. 小甲鱼 发表于 2016-11-16 12:17
DEMO:
{:10_250:}我也是这么用的,小甲鱼老师,
只不过我是在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。 你需要这个。GetLastError()
页:
[1]