下你所需,载你所想!
汇集开发技术源码资料

做游戏通用DLL输入法注入模块开源

:44.257KB :1 :2019-12-10 08:17:53

部分简介

如果想编写输入法程序,那么这19个导出函数都需要仔细的研究,但是对于只想实现注入的我们,现在只需要对ImeInquire()有比较深的认识就可以了。ImeInquire()是启动并初始化当前Ime输入法函数,他的声明如下:

BOOL WINAPI ImeInquire(LPIMEINFO lpIMEInfo,LPTSTR lpszUIClass,LPCTSTR lpszOption)
第一个参数lpIMEInfo比较重要,用于输入对Ime输入法初始化的内容结构,如果这个结构填写错误,就会导致输入法不能正常运行。第二个参数是输入一个class类名,我们需要先使用RegisterClassEx()注册出一个窗口类。
注册表路径 [1] = “Keyboard Layout\Preload\”
注册表路径 [2] = “SYSTEM\CurrentControlSet\Control\Keyboard Layouts\”
输入法总数 = GetKeyboardLayoutList (20, pList)
.变量循环首 (1, 输入法总数, 1, i)
标识 = 取文本注册项 (#现行用户, 注册表路径 [1] + 到文本 (i), )
名称 = 取文本注册项 (#本地机器, 注册表路径 [2] + 标识 + “\Layout Text”, )
路径 = 取文本注册项 (#本地机器, 注册表路径 [2] + 标识 + “\Ime File”, )
加入成员 (缓存_输入法标识, 标识)
加入成员 (缓存_输入法名称, 名称)
加入成员 (缓存_输入法路径, 路径)
.变量循环尾 ()
.变量循环首 (1, 输入法总数, 1, i)
句柄 = LoadKeyboardLayoutA (缓存_输入法标识 [i], 0)
加入成员 (缓存_输入法句柄, 句柄)
.变量循环尾 ()

' 停止输入法注入文件到其它进程中
.如果真 (IMEClearPubString () = 假)
返回结果 = “停止输入法注入其他进程失败!”
返回 (假)
.如果真结束
输入法序号 = 取输入法序号 ()
.如果真 (输入法序号 = -1)
删除文件 (SystemPath + “imedllhost09.ime”)
删除文件 (取特定目录 (9) + “YUCOS.IME”)
返回结果 = “获取输入法序号失败!”
返回 (假)
.如果真结束
返回结果 = “获取输入法序号成功,输入法序号:” + 到文本 (输入法序号)
' 删除注册表关键项
注册表路径 [1] = “Keyboard Layout\Preload\”
注册表路径 [2] = “SYSTEM\CurrentControlSet\Control\Keyboard Layouts\”
注册表路径 [3] = “S-1-5-21-1060284298-606747145-682003330-500\Keyboard Layout\Preload”
删除注册项 (#现行用户, 注册表路径 [1] + 到文本 (输入法序号))
删除注册项 (#本地机器, 注册表路径 [2] + 缓存_输入法标识 [输入法序号])
删除注册项 (#所有用户, 注册表路径 [3] + 到文本 (输入法序号))

ImeConversionList //将字符串或字符转换成目标字串
ImeConfigure //配置当前ime参数函数
ImeDestroy //退出当前使用的IME
ImeEscape //应用软件访问输入法的接口函数
ImeInquire //启动并初始化当前ime输入法
ImeProcessKey //ime输入键盘事件管理函数
ImeSelect //启动当前的ime输入法
ImeSetActiveContext //设置当前的输入处于活动状态
ImeSetCompositionString //由应用程序设置输入法编码
ImeToAsciiEx //将输入的键盘事件转换为汉字编码事件
NotifyIME //ime事件管理函数

ImeRegisterWord //向输入法字典注册字符串
ImeUnregisterWord //删除被注册的字符串
ImeGetRegisterWordStyle
ImeEnumRegisterWord

UIWndProc //用户界面接口函数
StatusWndProc //状态窗口注册函数
CompWndProc //输入编码窗口注册函数
CandWndProc //选择汉字窗口注册函数

做游戏通用DLL输入法注入模块开源

热门推荐

相关文章