J
jilimi
Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何根据任意一个汉字,反查出当前系统中已安装的各输入法的编码?<br> 例如:我的机器上已安装了五笔输入法、微软拼音输入法,则如果传入“一”字,<br>如何求出“五笔:g 微软拼音:yi1”这样的结果?<br> 好像用 ImmGetConversionList 可以做到,但我只能查到微软拼音的编码,其它的<br>输入法都不行,这是为什么?是不是下面这段代码有错?下面附上源代码,请各位高<br>手帮我解决一下,我很急,谢谢!<br>function QueryCompStr(hKB: HKL; const sChinese: AnsiString): string;<br>var<br> dwGCL: DWORD;<br> szBuffer: array[0..254] of char;<br> iMaxKey, iStart, i: integer;<br>begin<br> Result := '';<br> iMaxKey := ImmEscape(hKB, 0, IME_ESC_MAX_KEY, nil);<br> if iMaxKey <= 0 then exit;<br><br> dwGCL := ImmGetConversionList(hKB,0,pchar(sChinese),nil,0,<br> GCL_REVERSECONVERSION);<br> if dwGCL <= 0 then Exit; <br><br> dwGCL := ImmGetConversionList(hKB,0,pchar(sChinese),@szBuffer,dwGCL,<br> GCL_REVERSECONVERSION);<br><br> if dwGCL > 0 then<br> begin<br> iStart := byte(szBuffer[24]);<br> for i := iStart to iStart + iMaxKey * 2 do<br> AppendStr(Result, szBuffer);<br> end;<br>end;