IMEのWindowsバージョンを取得          <TOP>


GetKeyboardLayout キーボードレイアウトのハンドルを取得
ImmGetProperty 指定された入力ロケールに関連付けられているIMEのプロパティや機能に関する情報を取得
 

 
'================================================================
'= IMEのWindowsバージョンを取得
'=    (ImmGetProperty.bas)
'================================================================
#include "Windows.bi"

' キーボードレイアウトのハンドルを取得
Declare Function Api_GetKeyboardLayout& Lib "user32" Alias "GetKeyboardLayout" (ByVal dwLayout&)

' 指定された入力ロケールに関連付けられている IME のプロパティや機能に関する情報を取得
Declare Function Api_ImmGetProperty& Lib "imm32" Alias "ImmGetProperty" (ByVal hkl&, ByVal dw&)

#define IGP_CONVERSION &H8              '変換関連の機能
#define IGP_GETIMEVERSION -&H4          '指定したIMEに対応するシステムバージョン番号
#define IGP_PROPERTY &H4                'プロパティ情報
#define IGP_SELECT &H18                 '選択継承機能
#define IGP_SENTENCE &HC                '変換モードの機能
#define IGP_SETCOMPSTR &H14             '変換文字列関連の機能
#define IGP_UI &H10                     'ユーザーインターフェイス関連の機能
#define IMEVER_0310 &H3000A             'Windows3.1用に作成されたIME
#define IMEVER_0400 &H40000             'Windows95用に作成されたIME

Var Shared Text1 As Object
Var Shared Text2 As Object
Var Shared Button1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hKeyLayout As Long
    Var IMEWinVersion As Long

    'カレントスレッドのキーボードレイアウトのハンドル取得
    hKeyLayout = Api_GetKeyboardLayout(0)

    'IMEのWindowsバージョン取得
    IMEWinVersion = Api_ImmGetProperty(hKeyLayout, IGP_GETIMEVERSION)

    'IMEのWindowsバージョン表示
    Select Case IMEWinVersion
        Case IMEVER_0310
            Text2.SetWindowText "Windows 3.1用に作成されました。"
        Case IMEVER_0400
            Text2.SetWindowText "Windows 95用に作成されました。"
        Case Else
            Text2.SetWindowText "取得できません。"
    End Select
End Sub

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