IMEをOn/Offする

IMEのOn/Offをコントロールするテクニックです。

サンプル(32bit) ダウンロード

'Ime制御
Public Declare Function ImmGetContext Lib "imm32.dll" (ByVal hWnd As Long) As Long
Public Declare Function ImmSetOpenStatus Lib "imm32.dll" (ByVal himc As Long, ByVal b As Long) As Long
Public Declare Function ImmReleaseContext Lib "imm32.dll" (ByVal hWnd As Long, ByVal himc As Long) As Long


Private Sub Text1_GotFocus()
    
    Dim himc As Long
    Dim hWnd As Long
    
    hWnd = Text1.hWnd
    
    'IMEをOn
    himc = ImmGetContext(hWnd)
    Call ImmSetOpenStatus(himc, 1)
    Call ImmReleaseContext(hWnd, himc)
    
    '文字列を反転させる
    Text1.SelStart = 0
    Text1.SelLength = Len(Text1.Text)
    
    'フリガナ監視スタート
    Call Furigana_Start(Text1)

End Sub

サンプル解説

IMEのOn/Offは、3段階で制御を行います。

  1. ImmGetContext関数でコンテキストを取得。
  2. ImmSetOpenStatus関数でIMEの状態をセット。
  3. ImmReleaseContext関数でコンテキストを解放。

肝心のIMEのOn/Offをコントロールしてるのは、ImmSetOpenStatus関数で行っています。

引数の内容は次の通りです。
(引数の名前は、Declare Functionで指定したものです)

メンバー I/O 説明
himc In ImmGetContext関数で取得したコンテキスト
b In IMEの状態
  • 0:Off
  • 1:On

ついでに、ImmGetContext関数の引数は・・・

メンバー I/O 説明
hWnd In フォームのハンドル

そして、ImmReleaseContext関数の引数は・・・

メンバー I/O 説明
hWnd In フォームのハンドル
himc In ImmGetContext関数で取得したコンテキスト

と、なっています。


[ Window Close ]