みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VC++(MFC)でタスクバーに常駐してる状態でメッセージを受け取りたい

VC++(MFC)でプログラムしています。

画面キャプチャソフトをつくっています。

今現在、PreTranslateMessage(MSG* msg)関数で、WM_SYSKEYDOWNメッセージとWM_KEYDOWNメッセージを拾って、処理するようにしています。これだと、ウィンドウがアクティブな状態だとうまく処理できるのですが、ウィンドウを非アクティブにするとメッセージを拾ってくれません。

理想としてはタスクバーにプログラムを格納しただけの状態でメッセージを拾って処理をしたいのですが、どうやればいいのか方法がわかりません・・

どなたかご教授お願いします。

市販ソフトの紙copiはタスクバーに常駐するだけであとはCtrl+Shift+Gを押せばファイルを保存してくれます。そのようなことがしたいんですが・・

投稿日時 - 2009-05-16 12:40:05

QNo.4963132

暇なときに回答ください

質問者が選んだベストアンサー

こんにちは。

ウィンドウがディスアクティブの場合は、通常のWM_系メッセージを受け取れません。
キーコンビネーションによるイベントを受け取りたい場合は
1.Hotkeyに登録する
2.GetAsyncKeyState()を繰り返し呼び出すことで、キーを取得する
という手段が考えられます。
プログラムを設計する上でスマートなのは1でしょうか。
Hotkeyを使うなら、RegisterHotKey()というAPIがWindowsに用意されていますよ。

投稿日時 - 2009-05-16 13:15:22

お礼

どうもありがとうございます。

Windowが非アクティブなとき、通常のWM_系メッセージはうけとれないんですね。勉強になりました。

その際は、Hotkeyに登録するといいんですね。色々ググッて検索していて、Hotkeyというのもでてきたんですが、関係ないだろうと無視してました・・

2のGetAsyncKeyState()というのも、せっかく教えていただいたので、色々ググッて調べてみようと思います。

早速教えてくださり、とてもうれしいです。私はMFCはまだほんのかじり始めですが、実践しようとサンプルをどんどんつくっています。おかげさまで問題が解決できそうです。このたびはどうもありがとうござました。良いご回答をいただけまして、大変うれしいです。どうもありがとうございました。

投稿日時 - 2009-05-16 17:22:03

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問