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段階で制御を行います。
- ImmGetContext関数でコンテキストを取得。
- ImmSetOpenStatus関数でIMEの状態をセット。
- 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 ]