開発環境 : WinXP(SP3), VS2008 + MFC
ダイアログベースでプログラムを作成しています。
Win+Dキーを押したときに最小化をさせないようにするために、
PreTranslateMessageでWin+Dキーを押したときのメッセージを捕らえて処理しようと思っ
たのですが、
Win+Dキーを押したときに飛ばされるメッセージが何なのか分からないため処理すること
が出来ません。
どのようなメッセージが飛ばされるのか、ご存知の方はいらっしゃいますでしょうか。
また、これ以外の方法があれば教えていただけるとありがたいです。
SPY++を使用すればどんなメッセージが飛んでくるか調査できます。
[Win]+[D]はWindowsで用意されているホットキーです。
無効にするには、dllを使ったグローバルフックを利用しないと難しいと思います。
WH_KEYBOARD_LL フックプロシージャの WM_KEYDOWN でチェックし、
[Win]+[D]が押されていればデフォルト処理を呼ばないようにする。
([Win]キーの状態は GetKeyState で確認)
そうすればホットキーの生成をスキップできるはずです。
(他のグローバルフックでも出来るかもしれません)
返信が遅くなってしまい申し訳ございません。
maruさん、デゴルガンさん、返信していただき有難うございます。
Spy++を利用して[Win]+[D]押下時のメッセージを調査してみましたが、特にメッセージが
飛ばされている様子はありませんでした。
ですのでグローバルフックを利用した方法を試してみようと思います。
有難うございました。
ちょっと気になったのですが、
「WIN+Dで最小化」だけを防ぎたいのでしょうか?
たとえば、タスクバー上で右クリックしてでるメニューに
「デスクトップを表示」があります、
また、WIN7には、タスクバーの端っこにデスクトップ表示のボタンがあります。
これらの機能でも、アプリケーションは最小化(デスクトップを表示)されます。
体感ですが、WINキーを押した時点でアプリケーションは非アクティブになり
タスクバーか、OS側から「最小化」させるメッセージだけが
飛んできてるだけみたいですね