.NETで作成されたアプリケーションがあります。10〜15個のボタンが付いたマウス(ハイエンドのゲーミングマウスなど)を使用して、ユーザーがアプリケーションを制御できるようにしたいと思います。
これは簡単に実行できますか、それとも使用できる.NET SDKを備えたマウスベンダーが必要ですか?推奨できますか?
すべてのコントロールをアプリケーション内に配置し、マウスベンダードライバーのみを使用したいと思います。
.NETで作成されたアプリケーションがあります。10〜15個のボタンが付いたマウス(ハイエンドのゲーミングマウスなど)を使用して、ユーザーがアプリケーションを制御できるようにしたいと思います。
これは簡単に実行できますか、それとも使用できる.NET SDKを備えたマウスベンダーが必要ですか?推奨できますか?
すべてのコントロールをアプリケーション内に配置し、マウスベンダードライバーのみを使用したいと思います。
私が間違っている場合は訂正してください。ただし、マウスのこれらの余分なボタンはすべて、通常、ある種のキーボードの組み合わせにマップされません(多くの場合、どのボタンが何にマップされるかを指定できるコントロールパネルアプリがあります)。この場合、KeyDownイベントとKeyUpイベントを使用してボタン4以上をキャプチャできるはずです。
Windowsでは、何かを押すたびに、win32メッセージキューを通過します。これらのメッセージを取得する方法を確認するためのコードを次に示します。
これで(もちろん15ボタンのマウスが必要になります)、ブレーキポイントまたはConsole :: writelineまたはそのコード内の何か、マウスボタンを押して強打すると、押したばかりのメッセージ番号を取得できます。
その後、これらのキー押下を通常のイベントハンドラーにバインドできるかどうかを確認できます。
ベンダーのハードウェアの制御に関するソリューションは、あまり移植性がないことに注意してください。誰もがマイクロソフトのマウスを持っていると仮定しますが、香港などから20ボタンのマウスを購入することにしました。それをサポートするには、新しいコードを作成する必要があります。私はあなたが非常に一般的な解決策を目指すべきだと思います
Windowsメッセージの取得を試みることができます。たとえば、WinFormsでは、フォームのメソッドをオーバーライドして、すべてのメッセージを取得できます。
protected override void WndProc(ref Message msg)
{
Console.WriteLine(
"HWnd:{0}\tLParam:{1}\tWParam:{2}\tMsg:{3}\tResult:{4}",
msg.HWnd, msg.LParam, msg.WParam, msg.Msg, msg.Result);
base.WndProc(ref msg);
}
そして、マウスで少し遊んで、あなたが取らなければならないメッセージが何であるかを見てください。