• 締切済み

システムメニューのフック(SDK)

はじめまして。 開いている全てのウィンドウのシステムメニューに 項目を追加するプログラムを作っているのですが、 例えばSC_TESTというIDの項目を追加して、 そのSC_TESTが押されたという判断はどうすればいいのかわかりません。 WH_CALLWNDPROCフックをしているのですが、 さすがに下のコードではSC_TESTの部分は動きません。 どの項目がクリックされたかまでは調べられないので しょうか? EXPORT LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp) { CWPSTRUCT *pcwp; char str[256]; if (nCode < 0) { return CallNextHookEx(hHook, nCode, wp, lp); } if (nCode == HC_ACTION) { if (wp == NULL) { pcwp = (CWPSTRUCT *)lp; switch(pcwp->message){ case WM_CLOSE: MessageBox(pcwp->hwnd, "CLOSE", "OK", MB_OK); break; case WM_CREATE: SetExtWindowEx(pcwp->hwnd); break; case SC_TEST: MessageBox(pcwp->hwnd,"AAA","AAA",MB_OK); break; default: break; } } } return CallNextHookEx(hHook, nCode, wp, lp); }

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

1.システムメニューなんだから、WM_SYSCOMMANDのwParamじゃないの? 2.フックが違うんじゃないの? メニューはPostされて来るんじゃなかったっけ? WH_GETMESSAGEでしょう。 あとおまけ。 フックプロシージャは、Win32ではエクスポートする必要ありません。(してもかまわないけど)

NAK18
質問者

お礼

解決しました! その通りでした、ありがとうございます!

すると、全ての回答が全文表示されます。

関連するQ&A