カレンダー

09 | 2008/10 | 11
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

最近の記事

月別アーカイブ

カテゴリー

ユーザータグ

最近のコメント

プロフィール

run800m

Author:run800m
元・陸上競技の800m選手。
好きな食べ物はねぎともやし。

専門は機械工学・ロボティクス
興味は経済・経営・生産・心理
・地理・プログラミング・性

QLOOKアクセス解析
フィードメーター - 他人の日記を見るのか? ver.BLOG

QRコード

QR

RSS

はてなRSSに追加
livedoor Readerに追加
My Yahoo!に追加
Googleに追加
goo RSSリーダーに追加
Bloglinesに追加
Technoratiに追加
newsgatorに追加
Powered by SEO対策 RSSプラス

ブログ内検索

リンク

このブログをリンクに追加する

気まぐれ広告

ブログ内容を反映するらしい。
ホントか!?

他人の日記を見るのか? ver.BLOG
デジモノ好きのたわいもない記録 デジタルライフ
GV-MC/RCkit その3
このエントリーを含むはてなブックマーク FC2ブックマーク この記事をlivedoorクリップ! Yahoo!ブックマークに登録 Buzzurlにブックマーク
昨日までで40個のボタンを判別できたので、それに動作を付け加えていきます。

ちなみに改めて何使えるかを考えると、動画や音楽鑑賞ですね。

リモコンの利点を活かして画面から離れると、目が悪いせいもあってそれぐらいしかできることがありません。

そんな訳で普段音楽聴くのに使ってるWindowsMediaPlayer(WMP)と、テレビを見るのに使ってるmAgicTVを使えるようにしたいと思います。
方法は簡単。
リモコンの各ボタンにkeybd_event()を使って、ショートカットキーを割り当てていきます。

まず最初に取り掛かったのが、ミスっても一番影響の少なそうな音量。

「音量↓」と「音量↑」のボタンに、

keybd_event(VK_VOLUME_DOWN,0x00,KEYEVENTF_EXTENDEDKEY|0,0);
keybd_event(VK_VOLUME_DOWN,0x00,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);


てな感じで、ボタンを押し、離す処理を割り当てます。

以下、同じようにボタンに割り当てていきます

「音量↓」 VK_VOLUME_DOWN
「音量↑」 VK_VOLUME_UP
「ミュート」 VK_VOLUME_MUTE
「スキップ」 VK_MEDIA_NEXT_TRACK
「リプレイ」 VK_MEDIA_PREV_TRACK
「停止」 VK_MEDIA_STOP
「一時停止」 VK_MEDIA_PLAY_PAUSE
「再生」 VK_MEDIA_PLAY_PAUSE

これだけで、一通りWMPは扱えます。

mAgicTVの方はショートカットキーが載ってる説明書が見つからなかったので、手探りで色々押して探してみました。

以下の通りです。

各チャンネル
「1」 VK_F1
「2」 VK_F2
「3」 VK_F3
「4」 VK_F4
「5」 VK_F5
「6」 VK_F6
「7」 VK_F7
「8」 VK_F8
「9」 VK_F9
「*」 VK_F10
「0」 VK_F11
「#」 VK_F12
「チャンネル↑」 VK_VK_PRIOR
「チャンネル↓」 VK_NEXT

10〜12チャンネルが若干気に入らないんですが、ボタンがないので仕方ないですね。

数字の1,2,3あたりでフルスクリーンにしたりと、画面の大きさを変えられるようなのですが、どのボタンに対応させようか迷っています。

録画のキーも見つけたので必要があれば「録画」ボタンに対応させるつもりです。


で、ここまでだと操作はできても起動ができないので、起動機能も追加します。

CreateProcessA()を使って、以下のようにします。
int Open_WMP(){
STARTUPINFO si;
PROCESS_INFORMATION pi;

GetStartupInfo(&si);

CreateProcessA(NULL,
   "C:\\Program Files\\Windows Media Player\\wmplayer.exe",
   NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi);

return 0;

}

ちなみにWMPは「Windows」ボタン、mAgicTVは「テレビ」ボタンに割り当てました。

「番組ガイド」ボタンもあったので、それにはmAgicTVガイドを割り当てました。

ついでに起動したら、閉じる処理も行いたいので、「クリア」ボタンに
keybd_event(VK_LMENU,0x00,KEYEVENTF_EXTENDEDKEY|0,0);
keybd_event(VK_F4,0x00,KEYEVENTF_EXTENDEDKEY|0,0);
keybd_event(VK_LMENU,0x00,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);
keybd_event(VK_F4,0x00,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);

を追加しました。

「Alt+F4」なんで、Altを押してF4を押してから、離すようにしないといけません。


これである程度の操作は行える訳ですが、WMPやmAgicTVのウィンドウにフォーカスがいつもいってるとは限りません。

誤動作を防止するために、フォーカスしてるウィンドウを特定してからイベントを起こすようにしました。

まずボタンの処理の前に、以下のプログラムを入れてウィンドウクラスを調べます。
int CheckActiveWindow(char WC[1000]){
HWND hWnd,hWnd2;
int i;
char windows_class[2][100]={{"WMPlayerApp"},{"mAgicTVWindow"}};

hWnd = GetForegroundWindow();
for(i=0;i<2;i++){
hWnd2=FindWindowA(windows_class[i],NULL);
if(hWnd==hWnd2) return (i+1);
}

return 0;
}

ウィンドウテキストのように可変では困るので、「mAgicTVWindow」のようなウィンドウクラスを用います。

ちなみにVisualStudio付属の「Spy++」というソフトで、実行中の各アプリケーションのウィンドウクラスが調べられます。

あとは処理をする前にCheckActiveWindow()の返り値から、フォーカスしてるウィンドウかどうかif分岐させるだけです。

今回興味を持ったもの

I-O DATA Windows Media Center専用リモコン GV-MC/RCkitI-O DATA Windows Media Center専用リモコン GV-MC/RCkit

アイ・オー・データ 2007-01-31
売り上げランキング : 2022
おすすめ平均

Amazonで詳しく見る
by G-Tools



関連した記事を見る(タグ検索)
GV-MC/RCkit PC プログラミング
最近の記事を見る

ブログでのnofollowの使い方 後編 (2008/10/01)

ブログでのnofollowの使い方 前編 (2008/09/30)

GoogleChromeに潜む小悪魔 〜GoogleUpdate.exe〜 (2008/09/25)

QLOOKの解析タグのカスタマイズを使いこなす (2008/09/19)

メモリーカード変換アダプタ一覧 (2008/09/15)

Buzzurlを導入してみた (2008/09/09)

Firefox 3のブックマークを解析してみた (2008/09/03)

Googleでの検索順位が一気に上昇・復活 (2008/08/29)

CREATIVE ZEN その9(ZEN関連記事のまとめ) (2008/08/24)

ブログやサイトにソースコードを乗せる時に便利なツール (2008/08/22)


テーマ:プログラミング - ジャンル:コンピュータ

メインカテゴリ:ハードウェア  カテゴリ:GV-MC/RCkit

この記事に対するコメント

この記事に対するコメントの投稿
質問・指摘・その他諸々、古い記事にも遠慮なくコメントして下さい!














管理者にだけ表示を許可する
宣伝・スパム・荒し行為でしかないものは削除します。


この記事に対するトラックバック
古い記事にも遠慮なくトラックバックして下さい!
トラックバックURL
→http://run800m.blog23.fc2.com/tb.php/5-a3769f1a
この記事にトラックバックする(FC2ブログユーザー)

言及リンクのないもの、宣伝・スパム・荒らし行為でしかないものは削除します。
またトラックバック先の内容について当ブログ管理人は一切保障しませんし、責任も負いません。