掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
PopupMenuを使用した時に、WM_INITMENUPOPUP の取得方法は? (ID:28002)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
回答ありがとうございます。 フックを使って出来ました。 function MsgProc(nCode: integer; wParam, lParam: LRESULT): LRESULT; stdcall; var cwp: PCWPStruct; mnuItem :TMenuItem; mnu: HMenu; begin if (nCode = HC_ACTION) then begin cwp := PCWPStruct(lParam); case cwp^.message of WM_INITMENUPOPUP: begin mnu := HMenu(cwp^.wParam); mnuItem := nil; if mnu <> 0 then begin mnuItem := MainForm.PopupMenu1.FindItem(mnu, fkHandle); end; if Assigned(mnuItem) then begin s_DebugMsg(Format('mnuItem取得=%s',[mnuItem.caption])); end; s_DebugMsg('MsgProc:WM_INITMENUPOPUP'); end; end; end; Result := CallNextHookEx(MainForm.m_HookHandle, nCode, wParam, lParam); end; procedure TMainForm.FormCreate(Sender: TObject); begin m_HookHandle := SetWindowsHookEx(WH_CALLWNDPROC, MsgProc,0, GetCurrentThreadId()); s_DebugMsg(Format('m_HookHandle=%d',[m_HookHandle])); end; procedure TMainForm.FormDestroy(Sender: TObject); begin if m_HookHandle <> 0 then UnhookWindowsHookEx(m_HookHandle); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.