フリガナ取得 <TOP>
変換中の文字列の情報を取得します。住所録などの作成においては必要不可欠
ImmGetCompositionString 変換中の文字列を取得
ImmGetContext IMEのコンテキストを取得
ImmReleaseContext IMEのコンテキストを解放
フォームにエディットボックス、テキストボックス、コマンドボタンを2個貼り付けます。
エディットボックス内で文字列を仮名漢字変換しコマンドボタン1をクリックするとテキストボックスにフリガナが入ります。
コマンドボタン2は表示ボックス内をクリアし、再度エディットボックスに入力を促します。
'================================================================ '= フリガナ取得 '= (Hurigana.bas) '================================================================ #include"Windows.bi" ' 変換中の文字列の情報を取得 Declare Function Api_ImmGetCompositionString& Lib "imm32" Alias "ImmGetCompositionStringA"(ByVal hIMC&, ByVal dwIndex&, ByVal lpBuf$, ByVal dwBufLen&) ' 指定のウィンドウの入力コンテキストのハンドルを取得 Declare Function Api_ImmGetContext& Lib "imm32" Alias "ImmGetContext"(ByVal hWnd&) ' 入力コンテキストのハンドルを解放。 Declare Function Api_ImmReleaseContext& Lib "imm32" Alias "ImmReleaseContext"(ByVal hWnd&, ByVal hIMC&) #define GCS_RESULTREADSTR &H200 '最後に変換を行った際に入力された文字列を1バイトカタカナで表した文字列をbufに返す #define vbNullString ByVal 0 '値0の文字列。値0を持つ文字列。空文字列ではない #define vbNullChar Chr$(0) 'NULL文字(\0) Var Shared Text1 As Object Var Shared Edit1 As Object Var Shared Button1 As Object Var Shared Button2 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Text1.SetWindowText "" Edit1.SetWindowText "" Edit1.SetFocus End Sub '================================================================ '= フリガナ取得 '================================================================ Declare Sub Button1_On edecl () Sub Button1_On() Var hImc As Long Var hWnd As Long Var nSize As Long Var Buff As String Var Ret As Long hWnd = Edit1.GethWnd hImc = Api_ImmGetContext(hWnd) nSize = Api_ImmGetCompositionString(hImc, GCS_RESULTREADSTR, vbNullString, 0) Buff = String$(nSize, vbNullChar) Ret = Api_ImmGetCompositionString(hImc, GCS_RESULTREADSTR, Buff, Len(Buff)) Text1.SetWindowText Buff Ret = Api_ImmReleaseContext(hWnd, hImc) End Sub '================================================================ '= クリア '================================================================ Declare Sub Button2_On edecl () Sub Button2_On() Text1.SetWindowText "" Edit1.SetWindowText "" Edit1.SetFocus End Sub '================================================================ '= イベントループ '================================================================ While 1 WaitEvent Wend Stop End