IME初期方式を取得          <TOP>


IME初期方式を取得します。

ImmGetContext ウィンドウに関連付けされた入力コンテキストを取得

ImmReleaseContext ウィンドウに関連付けされた入力コンテキストを開放

ImmGetConversionStatus IME初期方式を取得する関数

 

 

 

 

 

'================================================================
'= IME初期方式を取得
'=    (ImmGetConversionStatus.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_ImmGetConversionStatus& Lib "imm32" Alias "ImmGetConversionStatus" (ByVal hIMC&, fdwConversion&, fdwSentence&)

#define IME_CMODE_ALPHANUMERIC &H0      '英数字モード
#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          'シンボルモード

Var Shared Text(3) As Object
Var Shared Edit1 As Object
Var Shared Button1 As Object

For i = 0 To 3
    Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) : Text(i).SetFontSize 14
Next
Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hWnd  As Long
    Var hIMC  As Long
    Var IMEConversion As Long
    Var IMESentence As Long
    Var Ret  As Long

    'ウィンドウに関連付けされた入力ハンドル・コンテキストを取得
    hWnd = Edit1.GethWnd
    hIMC = Api_ImmGetContext(hWnd)

    '入力コンテキストを取得できたときは
    If hIMC <> 0 Then
        'IME初期方式の設定を取得
        Ret = Api_ImmGetConversionStatus(hIMC, IMEConversion, IMESentence)

        'IME初期入力方式の設定を表示
        Select Case IMEConversion And IME_CMODE_ROMAN
            Case IME_CMODE_ROMAN
                Text(1).SetWindowText "ローマ字入力"
            Case Else
                Text(1).SetWindowText "かな入力"
        End Select

        'IME初期入力モードの設定を表示
        Select Case IMEConversion And (IME_CMODE_JAPANESE Or IME_CMODE_KATAKANA Or IME_CMODE_LANGUAGE Or IME_CMODE_FULLSHAPE)
            Case IME_CMODE_FULLSHAPE Or IME_CMODE_JAPANESE
                Text(3).SetWindowText "ひらがな"
            Case IME_CMODE_FULLSHAPE Or IME_CMODE_LANGUAGE
                Text(3).SetWindowText "全角カタカナ"
            Case IME_CMODE_LANGUAGE
                Text(3).SetWindowText "半角カタカナ"
            Case IME_CMODE_FULLSHAPE
                Text(3).SetWindowText "全角英数"
            Case IME_CMODE_ALPHANUMERIC
                Text(3).SetWindowText "半角英数"
            Case Else
                Text(3).SetWindowText "不明"
        End Select

        '入力コンテキストを開放
        Ret = Api_ImmReleaseContext(hWnd, hIMC)
    End If
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End