主 题:怎样获得汉字的输入法编码?
作 者:Sniper(sniper) 时 间:2000-02-16 08:21:00 请问怎样获得一个给定汉字的输入法编码。比如取得其拼音码和五笔字型码?
回复人:tonyhan()2000-02-16 08:34:00
恐怕不行,每个汉字的内码是固定的,他与输入法无关。
回复人:WHQ()2000-02-16 13:59:00
用Windows自带的通用输入法编辑工具(在附件中,如没找到,请用安装盘装一下),选择逆转换,在Windows的系统目录下找相应的码表文件(.mb),转换后会生成一个文件格式的文件,所有汉字的输入法编码都在里面。
回复人:Sniper(sniper)2000-02-16 14:03:00
Visual C 问题,当然是指用VC实现了。另外,我也不是指内码,而是指输入法编码。
回复人:sky__horse(江湖满地一渔翁)2000-02-16 14:46:00
要编程实现,问题就麻烦了,大致思路如下:
1.确定用户正在用那一个编码方案(这一步可能最麻烦) 2.按WHQ的思路找到你准备好的码表数据(内含或外带的) 3.按图索骥查码表 不知是否可行,祝你好运气 回复人:Fancy()2000-02-19 16:01:00
這里有一段Delphi的源碼, 看一看定有收獲
////////////////////////// procedure TfrmQueryComposition.btnExecuteClick(Sender: TObject); var iHandleCount: integer; pList: array[1..nHKL_LIST] of HKL; szImeName: array[0..254] of char; i: integer; sFound: string; begin lstComposition.Items.Clear; // 取得目前系統已安裝輸入法之各個鍵盤配置(Keyboard Layout) iHandleCount := GetKeyboardLayoutList(nHKL_LIST, pList); for i := 1 to iHandleCount do begin if ImmEscape(pList[i], 0, IME_ESC_IME_NAME, @szImeName) > 0 then begin sFound := QueryCompStr(pList[i], edtExam.Text); if sFound <> ‘‘ then lstComposition.Items.Add(StrPas(szImeName) ‘: ‘ sFound); end; end; // 將鍵盤焦點交給 edtExam, 方便繼續查下一個字 with edtExam do begin SetFocus; SelStart := 0; SelLength := 2; ToChinese(Handle, True); end; end; { of btnExecuteClick } 回复人:Sniper(sniper)2000-02-20 09:36:00
对不起,Delphi的程序我看不太懂,有VC 的代码吗?
回复人:Sniper(sniper)2000-02-22 16:39:00
我按这段Delphi代码试写VC 程序,现发现两个问题,请教一下:
1.ImmEscape调用只取到了“微软拼音输入法”一种输入法,但我的系统中共有4种输入法。GetKeyboardLayoutList()调用中取得的数字是对的; 2.我找不到QueryCompStr在VC 中对应的API。 回复人:Sniper(sniper)2000-02-28 08:31:00
我这50分就没人要?
回复人:Sniper(sniper)2000-03-13 08:23:00
等到现在都没有更一步的资料,上面的高手中Fancy的回答与我的想法最为相近,与我要的答案只有一步之遥,所以我将所有分全给了他。
回复人:gatr()2000-11-22 22:35:00
有两种方法:
1:对于用输入法生成器做的输入法,用输入法生成器的逆转换功能,就不仔细讲了。2、编程,我通过它将许多输入法解密了,可以考虑给你源程序。 |
|
来自: wangzai117 > 《我的图书馆》