Win+Dキーを押した時に最小化をさせない方法

[戻る]
ぽちこう 2011/01/13(木) 22:25:48
開発環境 : WinXP(SP3), VS2008 + MFC

ダイアログベースでプログラムを作成しています。
Win+Dキーを押したときに最小化をさせないようにするために、
PreTranslateMessageでWin+Dキーを押したときのメッセージを捕らえて処理しようと思っ
たのですが、
Win+Dキーを押したときに飛ばされるメッセージが何なのか分からないため処理すること
が出来ません。

どのようなメッセージが飛ばされるのか、ご存知の方はいらっしゃいますでしょうか。
また、これ以外の方法があれば教えていただけるとありがたいです。

maru 2011/01/14(金) 11:26:35
SPY++を使用すればどんなメッセージが飛んでくるか調査できます。

デゴルガン 2011/01/17(月) 10:47:52
[Win]+[D]はWindowsで用意されているホットキーです。
無効にするには、dllを使ったグローバルフックを利用しないと難しいと思います。

WH_KEYBOARD_LL フックプロシージャの WM_KEYDOWN でチェックし、
[Win]+[D]が押されていればデフォルト処理を呼ばないようにする。
([Win]キーの状態は GetKeyState で確認)
そうすればホットキーの生成をスキップできるはずです。

(他のグローバルフックでも出来るかもしれません)

ぽちこう 2011/02/01(火) 19:26:54
[[解決]]
返信が遅くなってしまい申し訳ございません。

maruさん、デゴルガンさん、返信していただき有難うございます。

Spy++を利用して[Win]+[D]押下時のメッセージを調査してみましたが、特にメッセージが
飛ばされている様子はありませんでした。
ですのでグローバルフックを利用した方法を試してみようと思います。

有難うございました。

ryo 2011/02/01(火) 23:56:14
ちょっと気になったのですが、
「WIN+Dで最小化」だけを防ぎたいのでしょうか?

たとえば、タスクバー上で右クリックしてでるメニューに
「デスクトップを表示」があります、
また、WIN7には、タスクバーの端っこにデスクトップ表示のボタンがあります。
これらの機能でも、アプリケーションは最小化(デスクトップを表示)されます。

体感ですが、WINキーを押した時点でアプリケーションは非アクティブになり
タスクバーか、OS側から「最小化」させるメッセージだけが
飛んできてるだけみたいですね

古いスレッドには追加発言できません。