Windows XP (SP1 以降) で MCE 対応リモコンを使う
Windows XP (SP1 以降)では "Windows XP Media Center Edition" 対応のリモコンを使う事ができます。"Windows XP Media Center Edition" は単体売りされていませんが、リモコンと GUI を用意すれば同等の事が可能となります。簡単に入手できるリモコンとしては
・WM_KEYDOWN
いくつかのキー入力は普通に WM_KEYDOWN メッセージで送られます。フォームの KeyPreview プロパティを True にすればフォームの OnKeyDown で捕まえる事ができます。
|
・WM_APPCOMMAND
主要なキー入力はWM_APPCOMMANDメッセージで送られます。
|
|
と宣言しておき、
|
このようにしてキーを取得します。
・WM_INPUT
特殊なキー入力はWM_INPUTメッセージで送られます。
|
|
|
このように最初にリモコンデバイスを登録しておく必要があります。認識させるデバイスを増やすには Rid の配列を増やして下さい (上記の例は MCE 対応リモコン用となっています)。dwFlags に RIDEV_NOLEGACY を指定するとレガシーなポートに繋がれているデバイスを無視します。以下に主なデバイスの usUsagePage と usUsag を列挙します。
| デバイス | usUsagePage | usUsag |
| キーボード |
0x0001 |
0x06 |
| マウス |
0x0001 |
0x02 |
| ゲームパッド |
0x0001 |
0x05 |
| ジョイスティック |
0x0001 |
0x04 |
| キーボード (Generic desktop) | 0x0001 |
0x80 |
| キーボード (Consumer controls) |
0x000C |
0x01 |
| MCE 対応リモコン (Vendor-defined) |
0xFFBC |
0x88 |
そして...
|
これでWM_INPUTメッセージを取得できるようになります。
|
|
|
以上を設定すればWM_INPUTメッセージでデータを取得できます。以下にサンプルコードを書いておきます。
|
こんな感じでデータを取得できます。
・おまけ
"サイバーリンク・マルチリモコン(MultiR.C./CL-RC2)" でのキーに関する資料です。
| ボタン | メッセージ | コマンドまたは UsagePage / Usag / RawData |
| ホーム | アプリケーションで制御不可 | N/A |
| Power | WM_INPUT | アプリケーションで制御すべきではない |
| DVD/VIDEO CD | WM_INPUT | 0xFFBC / 0x88 / 0x048000 |
| 音楽 | WM_INPUT | 0xFFBC / 0x88 / 0x040800 |
| 写真/静止画 | WM_INPUT | 0xFFBC / 0x88 / 0x041000 |
| ファイル再生 | WM_INPUT | 0xFFBC / 0x88 / 0x042000 |
| テレビ | WM_INPUT | 0xFFBC / 0x88 / 0x040200 |
| 録画 | WM_APPCOMMAND | APPCOMMAND_MEDIA_RECORD |
| ラジオ | WM_INPUT | 0x000C / 0x01 / 0x03040000 |
| 主/副音声 |
WM_INPUT | 0xFFBC / 0x88 / 0x040010 |
| 文字放送/CC | WM_INPUT | 0xFFBC / 0x88 / 0x040020 |
| Last CH | WM_INPUT | 0xFFBC / 0x88 / 0x040040 |
| 字幕切り替え | WM_INPUT | 0xFFBC / 0x88 / 0x040008 |
| 音声切り替え | WM_INPUT | 0xFFBC / 0x88 / 0x040002 |
| アングル切り替え | WM_INPUT | 0xFFBC / 0x88 / 0x040001 |
| BACK | WM_APPCOMMAND | APPCOMMAND_BROWSER_BACKWARD |
| Info/EPG | WM_INPUT | 0x000C / 0x01 / 0x03000002 |
| DVDメニュー | WM_INPUT | 0xFFBC / 0x88 / 0x040004 |
| 音量Up(+) | WM_APPCOMMAND | APPCOMMAND_VOLUME_UP |
| 音量Down(-) | WM_APPCOMMAND | APPCOMMAND_VOLUME_DOWN |
| ミュート | WM_APPCOMMAND | APPCOMMAND_VOLUME_MUTE |
| チャンネルUp | WM_APPCOMMAND | APPCOMMAND_MEDIA_CHANNEL_UP |
| チャンネルDown | WM_APPCOMMAND | APPCOMMAND_MEDIA_CHANNEL_DOWN |
| ↑ | WM_KEYDOWN | VK_UP |
| ↓ | WM_KEYDOWN | VK_DOWN |
| ← | WM_KEYDOWN | VK_LEFT |
| → | WM_KEYDOWN | VK_RIGHT |
| 決定 |
WM_KEYDOWN | VK_RETURN |
| 再生 | WM_APPCOMMAND | APPCOMMAND_MEDIA_PLAY |
| 巻き戻し | WM_APPCOMMAND | APPCOMMAND_MEDIA_REWIND |
| 一時停止 | WM_APPCOMMAND | APPCOMMAND_MEDIA_PAUSE |
| 早送り | WM_APPCOMMAND | APPCOMMAND_MEDIA_FASTFORWARD |
| 前のチャプタ |
WM_APPCOMMAND | APPCOMMAND_MEDIA_PREVIOUSTRACK |
| 停止 | WM_APPCOMMAND | APPCOMMAND_MEDIA_STOP |
| 次のチャプタ | WM_APPCOMMAND | APPCOMMAND_MEDIA_NEXTTRACK |
| 数字キー | WM_KEYDOWN | VK_0...VK_9 |
| クリア | WM_KEYDOWN | VK_DELETE (リファレンスでは VK_ESCAPE) |
See Also:
MSDN: "Using the Remote Control Device with Windows"
| BACK |