0

メディアキーのようなキーボードのキーを押すのと同じように、バックグラウンドで実行されているときにレシーバーがあるかどうかを知らずに動作するメディアプレーヤーコントローラーを作成しようとしていnext trackます。

keybd_eventSendInputまたはhttp://inputsimulator.codeplex.com/を使用してみましたが、wsender ウィンドウのみがフォーカスされています。

VK_MEDIA_NEXT_TRACK送信者ウィンドウにフォーカスを置かずに、キーボードのプレスをシミュレートする方法はありますか?

4

1 に答える 1

3

これは、あなたが思っているよりもはるかに簡単に実装できます。これらのキーボード キーは特殊で、キーストロークを生成しません。代わりにWM_APPCOMMAND メッセージを生成します。MSDN ライブラリの記事からわかるように、「次のトラック」キーのコマンドは APPCOMMAND_MEDIA_NEXTTRACK です。

そのメッセージは、フォアグラウンドを持つウィンドウに送信されます。これはほとんど何もせず、代わりにデフォルトのウィンドウ プロシージャに渡します。それが命を吹き込むところです。それは、シェルフックがそれを見ることができるようにするシェルコマンドに変わります。それがカスタマイズされていない場合は、Explorer がそれを取得します。

したがって、自分のウィンドウに WM_APPCOMMAND を送信するだけです。隠しても問題ありません。小さな Winforms アプリで作業が完了します。必要なのはSendMessage()の pinvoke 宣言だけです。WM_APPCOMMAND はメッセージ番号 0x319 です。完全な例はこちらです。

于 2013-05-24T23:42:13.063 に答える