输入法控制能否更丰富一下?比如获取输入法名称,语言名称

功能建议 · 405 次浏览
iamadsl 创建于 2024-03-16 12:22

W10的输入法切换很麻烦,有时候输入法本身也有些问题,想用QK控制输入法,但现在的功能太少了,很多判断都做不了


回复内容
CL 2024-03-16 16:31
#1

获取不到这些信息。(不清楚怎么获取)

CL 最后更新于 2024-03-16 16:31
iamadsl 回复 CL 2024-03-16 23:07 :

我找到这个代码,看意思应该可以获取到输入法名,但我不会用。。https://blog.csdn.net/jacky_qiu/article/details/6016841

我现在在用的一段PY代码,可以准确获取当前是中/英文输入法,比QK的是否为中文输入法判断的准,比如QK在US语言下,也可能判断是中文,甚至还可以切换中英状态。。。先用PY判断中/英输入法,然后再用QK控制输入法中英文状态

import ctypes
import time
import os
 
user32 = ctypes.WinDLL('user32', use_last_error=True)
curr_window = user32.GetForegroundWindow()
thread_id = user32.GetWindowThreadProcessId(curr_window, 0)
klid = user32.GetKeyboardLayout(thread_id)
lid = klid & (2**16 - 1)
lid_hex = hex(lid)
 
print(lid_hex)
if lid_hex == '0x409':
    text='当前的输入法状态是英文输入模式\n\n'
elif lid_hex == '0x804':
    text='当前的输入法是中文输入模式\n\n'
else:
    text='当前的输入法既不是英文输入也不是中文输入\n\n'

CL 回复 iamadsl 2024-03-17 08:26 :
GetKeyboardLayout 我之前测试过,不准。 你可以试试多几种输入法看看,每种输入法的表现可能不太一样。
iamadsl 回复 CL 2024-03-17 09:47 :

啊,我只有一个搜狗五笔,加上US,使用正常。刚才试了一下系统自带的微软五笔和拼音,也能判断出中/英文输入法,配合QK判断输入法状态,基本够用了,其他的输入法没试过,会不会是中文输入法的lid_hex值不同,所以判断不准?我的搜狗和微软返回的都是0x804

回复主贴