▼ 2008/01/18(Fri) 漢字の読みを得るには
難攻不落と思われた漢字逆変換問題だが、
A_Aと名乗る人物のたった一行の書き込みにより、
事態は急速に解決へと向かったのであった。
というわけで、モジュール化してみた。
春日の山に が しゅんじつのやまに とか出てくるが、
そこはご愛敬なのだと思う。
/* jprevcnv.hsp v0.01 */
#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}"
#define CLSID_MSIME "{019F7150-E6DB-11d0-83C3-00C04FDDB82E}"
#usecom IFELanguage@mod_JPRevConv IID_IFELanguage CLSID_MSIME
#comfunc FELang_Open 3
#comfunc FELang_Close 4
#comfunc FELang_GetPhonetic 7 int, int, int, var
#deffunc init@mod_JPRevConv
newcom pFEL, IFELanguage
FELang_Open pFEL
return
#deffunc deinit@mod_JPRevConv onexit
FELang_Close pFEL
pFEL = 0
return
#defcfunc JPRevConv str string
inBstr = SysAllocString(string)
FELang_GetPhonetic pFEL, inBstr, 1, -1, outBstr
dupptr outWstr, outBstr, SysStringLen(outBstr)*2+2, 2
ret = cnvwtos(outWstr)
SysFreeString inBstr
SysFreeString outBstr
return ret
#global
init@mod_JPRevConv
mes JPRevConv("冬過ぎて春来るらし朝日さす春日の山に霞たなびく")
#usecom だけなんでグローバルスコープになるんか、ちょっと納得いかんね。

loading...
1: 矢野 2008年01月18日(Fri) 午後9時01分
私のパソコンで実行すると、
「ふゆすぎてはるきるらしちょうにちさすかすがのやまにげたなびく」
と、違って表示されました。
私のパソコンは、WindowsXp sp2で、ATOK 2007を使用しています。
それにしても、どうして霞が「げ」になるのでしょう。
2: つーさ 2008年01月20日(Sun) 午後2時45分
おろー、バージョンによって取得できる文字列が異なるのか。
うちは、Win2Ksp2 + ATOK2007ですが、
このCOMコンポは、MSIME側で提供されるもののようなので、
おそらく内部ではMS-IME2000が結果を返しているのかな。
ちなみに、うちでは
「ふゆすぎてはるくるらしあさひさすしゅんじつのやまにかすみたなびく」
と出ているのですが。
3: hoo- 2008年08月12日(Tue) 午後1時17分
難攻不落と思われた漢字逆変換問題だが→なんこうふらくとおもわれたかんじぎゃくへんかんもんだいだが
すごい!