IMEの初期方式を設定 <TOP>
IMEの初期方式を設定します。
ImmGetContext ウィンドウに関連付けされた入力コンテキストを取得
ImmReleaseContext ウィンドウに関連付けされた入力コンテキストを開放
ImmGetOpenStatus IMEのオープン状態を取得
ImmSetOpenStatus IMEのオープン状態を設定
ImmSetConversionStatus 現在の変換状態を設定
「ひらがな」を設定した場合
「全角カタカナ」を設定した場合
'================================================================ '= IMEの初期方式を設定 '= (ImmSetConversionStatus.bas) '================================================================ #include "Windows.bi" ' ウィンドウに関連付けされた入力コンテキストを取得 Declare Function Api_ImmGetContext& Lib "imm32" Alias "ImmGetContext" (ByVal hWnd&) ' ウィンドウに関連付けされた入力コンテキストを開放 Declare Function Api_ImmReleaseContext& Lib "imm32" Alias "ImmReleaseContext" (ByVal hWnd&, ByVal hIMC&) ' IMEのオープン状態を取得 Declare Function Api_ImmGetOpenStatus& Lib "imm32" Alias "ImmGetOpenStatus" (ByVal hIMC&) ' IMEのオープン状態を設定 Declare Function Api_ImmSetOpenStatus& Lib "imm32" Alias "ImmSetOpenStatus" (ByVal hIMC&, ByVal fOpen&) ' 現在の変換状態を設定 Declare Function Api_ImmSetConversionStatus& Lib "imm32" Alias "ImmSetConversionStatus" (ByVal hIMC&, ByVal fdwConversion&, ByVal fdwSentence&) ' 入力モードを示す定数の宣言 #define IME_CMODE_CHARCODE &H20 '文字コード入力 #define IME_CMODE_CHINESE &H1 'NATIVEモード(設定しない場合ALPHANUMERICモード) #define IME_CMODE_EUDC &H200 'EUDC変換モード #define IME_CMODE_FULLSHAPE &H8 '全角モード(設定しないとき、半角モード) #define IME_CMODE_HANGEUL &H1 'NATIVEモード(設定しない場合ALPHANUMERICモード) #define IME_CMODE_HANJACONVERT &H40 'HANJA変換モード #define IME_CMODE_JAPANESE &H1 'NATIVEモード(設定しない場合ALPHANUMERICモード) #define IME_CMODE_KATAKANA &H2 'カタカナモード(設定しない場合ひらがなモード) #define IME_CMODE_LANGUAGE &H3 ' #define IME_CMODE_NATIVE &H1 'NATIVEモード(設定しない場合ALPHANUMERICモード) #define IME_CMODE_NOCONVERSION &H100 '変換しない(設定しないとき、変換する) #define IME_CMODE_ROMAN &H10 'ローマ字変換モード #define IME_CMODE_SOFTKBD &H80 'ソフトキーボードモード #define IME_CMODE_SYMBOL &H400 'シンボルモード #define IME_CONFIG_GENERAL 1 ' #define IME_CONFIG_REGISTERWORD 2 ' #define IME_CONFIG_SELECTDICTIONARY 3 ' ' 変換モードを示す定数の宣言 #define IME_SMODE_AUTOMATIC &H4 '自動モードで変換 #define IME_SMODE_NONE &H0 'センテンスに関する情報はなし #define IME_SMODE_PHRASEPREDICT &H8 '次の文字を予想するためにフレーズ情報を使う #define IME_SMODE_PLURALCLAUSE &H1 '変換のための複文情報を使う #define IME_SMODE_SINGLECONVERT &H2 '単漢字変換する Var Shared Text1 As Object Var Shared Text2 As Object Var Shared Edit1 As Object Var Shared Combo1 As Object Var Shared Button1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14 Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared iStatus(4) As Long '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Combo1.AddString "ひらがな" iStatus(0) = IME_CMODE_FULLSHAPE Or IME_CMODE_JAPANESE Combo1.AddString "全角カタカナ" iStatus(1) = IME_CMODE_FULLSHAPE Or IME_CMODE_LANGUAGE Combo1.AddString "半角カタカナ" iStatus(2) = IME_CMODE_LANGUAGE Combo1.AddString "全角英数字" iStatus(3) = IME_CMODE_FULLSHAPE Combo1.AddString "半角英数字" iStatus(4) = IME_CMODE_ALPHANUMERIC End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hIMC As Long Var ConversionStatus As Long Var SentenceStatus As Long Var Ret As Long 'ウィンドウに関連付けされた入力コンテキストを取得 hIMC = Api_ImmGetContext(GethWnd) '入力コンテキストを取得できたときは If hIMC <> 0 Then 'IMEのオープン状態でないときは If Api_ImmGetOpenStatus(hIMC) <> Not False Then 'IMEをオープン Ret = Api_ImmSetOpenStatus(hIMC, Not False) '初期入力モードを指定 ConversionStatus = iStatus(Combo1.GetCursel) '初期変換モードを指定 SentenceStatus = IME_SMODE_PHRASEPREDICT 'IMEの初期方式を設定 Ret = Api_ImmSetConversionStatus(hIMC, ConversionStatus, SentenceStatus) 'IMEをクローズ Ret = Api_ImmSetOpenStatus(hWnd, False) End If '入力コンテキストを開放 Ret = Api_ImmReleaseContext(GethWnd, hIMC) End If SetImeMode 1 Edit1.SetFocus End Sub '================================================================ '= '================================================================ Declare Sub Edit1_SetFocus edecl () Sub Edit1_SetFocus() Edit1.SetSelText 0, 0 End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End