|
2010/01/19(Tue) 10:54:29 編集(投稿者) ■No45663 (たぬき さん) に返信 > 2010/01/18(Mon) 14:53:42 編集(投稿者) > > お世話になっております。たぬきと申します。 > 現在VB.netを使用して、キーボード状態を取得するアプリケーションを作成しています。 > そこで、現在「キーボード入力している間の半角/全角の状態を取得する」 > この問題について困っています。ImmGetConversionStatus関数を使用する方法を見つけたのですが、 > 使用法がよく分かりません。どなたか分かる方いらっしゃいましたら、教えて下さいm(-_-)m
ImmGetConversionStatus は変換モードの取得に使うものなので、IME の On/Off の判別には使えないです。 判別には、ImmGetOpenStatus を使います。
----- 以下、準備
Module Module1 <System.Runtime.InteropServices.DllImport("imm32.dll")> _ Public Function ImmGetContext(ByVal hWnd As IntPtr) As IntPtr End Function
<System.Runtime.InteropServices.DllImport("imm32.dll")> _ Public Function ImmReleaseContext(ByVal hWnd As IntPtr, ByVal hIMC As IntPtr) As Boolean End Function
' On なら True, そうでなければ False <System.Runtime.InteropServices.DllImport("imm32.dll")> _ Public Function ImmGetOpenStatus(ByVal hImc As IntPtr) As Boolean End Function
End Module
----- 以下、Windowsフォームアプリの TextBox で試したサンプル
Private Sub TextBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Enter
Dim hWnd As IntPtr = CType(sender, Control).Handle Dim hImc As IntPtr = ImmGetContext(hWnd) ' 入力コンテキストの取得 System.Diagnostics.Debug.WriteLine(ImmGetOpenStatus(hImc)) ' 表示 ImmReleaseContext(hWnd, hImc) ' 入力コンテキストの解放
End Sub
|