2008/01/18(金)漢字の読みを得るには
2012.08.04追記。Windows8 RP対応。
MSIMEのCLSIDがかわっていて動かない。
CLSIDを直で書いていたのを、アプリケーションIDからCOM作ってQueryするように変更。
RTM版ではどうなるかわからないけど、たぶん前のWindowsとは互換性がなくなるのだろう。
追記ここまで。
難攻不落と思われた漢字逆変換問題だが、
A_Aと名乗る人物のたった一行の書き込みにより、
事態は急速に解決へと向かったのであった。
というわけで、モジュール化してみた。
春日の山に が しゅんじつのやまに とか出てくるが、
そこはご愛敬なのだと思う。
ライセンス: NYSL
/* jprevcnv.hsp v0.02 */ #module mod_JPRevConv #uselib "oleaut32.dll" #cfunc SysAllocString "SysAllocString" wptr #func SysFreeString "SysFreeString" int #cfunc SysStringLen "SysStringLen" int #define IID_IFELanguage "{019F7152-E6DB-11D0-83C3-00C04FDDB82E}" #usecom IFELanguage@mod_JPRevConv IID_IFELanguage #comfunc FELang_Open 3 #comfunc FELang_Close 4 #comfunc FELang_GetPhonetic 7 int, int, int, var #deffunc init@mod_JPRevConv newcom pIME, "MSIME.Japan" querycom pFEL, pIME, IFELanguage FELang_Open pFEL return #deffunc deinit@mod_JPRevConv onexit FELang_Close pFEL return #defcfunc JPRevConv str string inBstr = SysAllocString(string) FELang_GetPhonetic pFEL, inBstr, 1, -1, outBstr dupptr outWstr, outBstr, SysStringLen(outBstr)*2+2, vartype("str") ret = cnvwtos(outWstr) SysFreeString inBstr SysFreeString outBstr return ret #global init@mod_JPRevConv mes JPRevConv("冬過ぎて春来るらし朝日さす春日の山に霞たなびく")
#usecom だけなんでグローバルスコープになるんか、ちょっと納得いかんね。