私は最終的にユーザー指定のキー(車載プロジェクトの一部)を含む一種のドッキングスクリーンキーボードになるアプリケーションを構築しています。keybd_eventを使用して特定のキーを送信することはできませんか?
これまでのところは良い、私はP/Windowsの、印刷画面を含むほとんどのキーのためにうまくkeybd_eventを呼び出すことができる、など
問題:そのようVK_LAUNCH_MEDIA_SELECTとVK_LAUNCH_APP1などの特定のキーがまったく機能していません。
私は他のキーと同じ呼び出しを使用しています。なぜ、これらの "特別な"キーだけでWindowsがうまくいかないのですか?
詳しい説明:私はキー押しを捕まえようとはしていません、私はそれらを送信しています。
NativeMethods.keybd_event(this.Settings.vKey, 0, 0 | NativeMethods.KEYEVENTF_EXTENDEDKEY, (IntPtr)0);
NativeMethods.keybd_event(this.Settings.vKey, 0, NativeMethods.KEYEVENTF_KEYUP | NativeMethods.KEYEVENTF_EXTENDEDKEY, (IntPtr)0);
ここで、vKeyは、VK_LAUNCH_APP1 (0xB6)
のような仮想キーコードの文字です。私はEXTENDEDKEYが本当に必要かどうか分からないのは、これらの特定のキーが「拡張」(すなわち右 - 右、右シフトなど)と考えられていないからだと思う。
VK_LAUNCH_APP1(Windows 10) 「ベンダー提供のプログラム」は存在していなくてもかまいません(Windows以外)。同様に、VK_LAUNCH_MEDIA_SELECT (0xB5)
は、Windows Media Player(または、設定コントロールパネルで設定したメディアプレーヤー)を開きます。
私はC#のような人ではありませんが、キーボードイベントを扱う既存のコードを投稿すると、C#を理解している人にとっては便利かもしれません。 :) –
あなたは 'keybd_event'関数をどこで呼び出すべきですか?そして、この機能が時代遅れであると言う[ドキュメント](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646304.aspx)の大きなバナーを見ずに、どうやってその使い方を始めましたか?代わりに常に 'SendInput'を使うべきですか?特にあなたを選ぶことを意味するわけではありませんが、あなたは私が見る唯一のものとはまったく離れています。実際には、実際には、キーボードイベントの合成に関する質問をしている人は混乱するほど多くの人がいますが、同じ廃止された関数を使うことをお勧めします。 –
@CodyGrayの大部分は「うまくいく」ため、「プッシュボタン、リリースボタン」よりも何もする必要はないからです。 SendInputはすべて「キューを作って物事をロックしようとしていますが、ここではこれのための構造体があり、構造体を使用しないでください。マウスのこともできるのですか?古い機能で覆われています!" – Tsaukpaetra