2012-05-02 20 views
0

Win2K(またはそれ以降)では、仮想キーVK_LAUNCH_MEDIA_SELECTを送信して、プレイヤーを開始できます。どのプレイヤーが仮想キーを送信するかを決定する方法VK_LAUNCH_MEDIA_SELECT

複数のプレーヤーソフトウェアがインストールされている場合、どのソフトウェアをインストールするかを決定するにはどうすればよいですか?

サンプルVBSコード:

Wscript.CreateObject("Wscript.Shell").Sendkeys chr(&h88b5) 

http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx

http://msdn.microsoft.com/zh-cn/library/dd375731

VK_LAUNCH_MEDIA_SELECT 
0xB5 
Select Media key 

答えて

1

VK_LAUNCH_MEDIA_SELECTは、実際にシステムによって受信され、APPCOMMAND_LAUNCH_MEDIA_SELECTとしてlParamWM_APPCOMMANDに変換されます。だから理論的には、このためのハンドラを実装しているプログラムを起動することができます。

  • Internet Explorerの
  • Windowsのヘルプ
  • DVDプレーヤー
  • CDプレーヤー
  • Media Playerの
  • ボリュームコントロールシステムトレイアプレット
  • :(古いが) This pageWM_APPCOMMANDをリッスンデフォルトのアプリケーションが一覧表示されます

O明らかに、そのうちのほんのいくつかが実際にはAPPCOMMAND_LAUNCH_MEDIA_SELECTに適用されます。

しかし、翻訳メカニズムが実際にどのように機能するのかわかりません。すべてのアプリケーションが翻訳されたWM_APPCOMMANDメッセージを受信するとは限りません。私のキーボードで、私はVK_VOLUME_UPを送るボタンを押してみました。ボリュームは、ボリュームコントロールシステムのトレイアプレットによって処理されるため、期待どおりに上がります。しかし、私はnotepad.exeのインスタンスを開き、そのメッセージをSpy ++で監視しました。フォアグラウンドにいても何のメッセージも受信しませんでした。奇妙なことに、notepad.exeにフォーカスがある限り、再生/一時停止ボタンが押された場合、VK_MEDIA_PLAY_PAUSEWM_APPCOMMANDで受信されます。私はVK_LAUNCH_MEDIA_SELECTでテストしますが、実際にどのボタンに対応しているのか(キーボードには対応しているかどうかはわかりません)

+0

フィードバックをいただきありがとうございます。私のテストでは、Virtual Key VK_LAUNCH_MEDIA_SELECTの送信はVBSで行われます:Wscript.CreateObject( "Wscript.Shell")Sendkeys chr(&h88b5)CDA(CD Audio)ファイルのデフォルトアソシエーションをNotepadまたはPaintまたは他のプログラムに設定しますそれでも、同じ仮想キーを送信して対応するプログラムを開くことができます。 – neorobin

1

マイク・クワンの返信ありがとうございました。

多くの設定をテストすることにより、さまざまなオーディオファイルに関連付けられたプログラムがテストされます。 CDA(CD Audio)ファイルに関連付けられたCDA(CDオーディオ)に依存します。

メモ帳にCDA(CDオーディオ)ファイルのデフォルトの関連付けを設定したり、任意のプログラムペイントや場合、それはまだ対応するプログラムを開くには、同じ仮想キーを送信することができます。何のフックがメッセージを処理していない場合

1

前面のウィンドウは、WindowsがAppKeyキーでをチェックし、それを処理するために取得することが、その後のフック(HSHELL_APPCOMMAND)をシェルのメッセージを処理しない場合には、WM_APPCOMMANDメッセージに応答して欲しいものは何でも行うことができますレジストリ。(Process Monitorを使用して特定のキープレスの番号を見つけることができます)

+0

ご意見ありがとうございます!これらについては、私はまた、いくつかの学習が必要だと言った。 – neorobin

関連する問題