C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 半角/全角キー状態の取得について


(過去ログ 77 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■45663 / inTopicNo.1)  半角/全角キー状態の取得について
  
□投稿者/ たぬき (48回)-(2010/01/18(Mon) 14:51:06)

分類:[.NET 全般] 

2010/01/18(Mon) 14:53:42 編集(投稿者)

お世話になっております。たぬきと申します。
現在VB.netを使用して、キーボード状態を取得するアプリケーションを作成しています。
そこで、現在「キーボード入力している間の半角/全角の状態を取得する」
この問題について困っています。ImmGetConversionStatus関数を使用する方法を見つけたのですが、使用法がよく分かりません。どなたか分かる方いらっしゃいましたら、教えて下さいm(-_-)m
引用返信 編集キー/
■45687 / inTopicNo.2)  Re[1]: 半角/全角キー状態の取得について
□投稿者/ やじゅ (1456回)-(2010/01/18(Mon) 22:14:58)
やじゅ さんの Web サイト
No45663 (たぬき さん) に返信
> 現在VB.netを使用して、キーボード状態を取得するアプリケーションを作成しています。
> そこで、現在「キーボード入力している間の半角/全角の状態を取得する」

DirectInputを使う
VBでマウスの動きを捉える方法(VB2005 + DirectInput編)
http://www.geocities.co.jp/SiliconValley/7406/tips/mouse/mouse3.html
http://www.clks.jp/csg/dx003.html

半角/全角 Key.Kanji
引用返信 編集キー/
■45717 / inTopicNo.3)  Re[1]: 半角/全角キー状態の取得について
□投稿者/ みきぬ (715回)-(2010/01/19(Tue) 10:53:01)
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

引用返信 編集キー/
■45723 / inTopicNo.4)  Re[2]: 半角/全角キー状態の取得について
□投稿者/ たぬき (49回)-(2010/01/19(Tue) 11:37:37)
No45687 (やじゅ さん) に返信
> ■No45663 (たぬき さん) に返信
>>現在VB.netを使用して、キーボード状態を取得するアプリケーションを作成しています。
>>そこで、現在「キーボード入力している間の半角/全角の状態を取得する」
>
> DirectInputを使う
> VBでマウスの動きを捉える方法(VB2005 + DirectInput編)
> http://www.geocities.co.jp/SiliconValley/7406/tips/mouse/mouse3.html
> http://www.clks.jp/csg/dx003.html
>
> 半角/全角 Key.Kanji

回答ありがとうございます。DirectInputを使用した方法も試してみました!
でも、DirectXは動作環境が限られているようなので、違う方法でも試してみます。
丁寧にありがとうございました。
引用返信 編集キー/
■45724 / inTopicNo.5)  Re[2]: 半角/全角キー状態の取得について
□投稿者/ たぬき (50回)-(2010/01/19(Tue) 11:40:03)
No45717 (みきぬ さん) に返信
> 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

わざわざ文字タイプまで判別しなくてもいいのですね!
IMEを少し勘違いしていました。サンプルまで作成していただきありがとうございます。
理解することができました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -