简单的菜单问题?有人会吗?

bamboo2000 2011-05-10 02:54:19
function HookProc(iCode: Integer; wParam: wParam; lParam: lParam): LRESULT; stdcall;
var p: TPoint;
begin
if PEventMsg(lparam)^.message = WM_RBUTTONDOWN then begin
GetCursorPos(p);
form1.PopupMenu1.Popup(p.X,p.Y);
end else Result := CallNextHookEx(hHook, iCode, wParam, lParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
hHook := SetwindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0);
end;

1.任意位置(比如傲游工具栏)右击,弹出自己的菜单,怎么在处理后屏蔽原来的菜单(傲游工具栏右键菜单)?
2.怎样防止第一次菜单没有关闭的情况下再次弹出菜单?(比如在资源管理器中不同位置分别右击)
...全文
143 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bamboo2000 2011-05-13
  • 打赏
  • 举报
回复
发现用Dll做Hook情况会好一点,但还是偶尔有时候会失败,也就是说需要重新InstallHook
bamboo2000 2011-05-12
  • 打赏
  • 举报
回复
to:Avan_Lau
问题1:试了一下,不管返回0还是1都不能解决我说的问题。
问题2:如果是你说的重画事件,该怎么处理啊
bamboo2000 2011-05-12
  • 打赏
  • 举报
回复
to:Avan_Lau
问题1:我试一下。
问题2:在弹出新菜单后,第一次弹出的菜单不响应鼠标移动和点击事件,应该是你说的重画事件
金卯刀 2011-05-11
  • 打赏
  • 举报
回复
问题1:在弹出菜单后,Result 返回1;
问题2:可能是重画问题。确认一下:在第二次弹出菜单后,能不能点击第一次弹出的菜单?
bamboo2000 2011-05-11
  • 打赏
  • 举报
回复
下面这个图是我说的弹出两个菜单的情况


刚刚试了试执行完自己的菜单事项后在不同的地方会有不同的反应,
1.在傲游工具栏上的反应是跟点了右键一样
2.在画图板的画图区域的反应跟右键拖选后没有抬起右键一样
3.在托盘区右击后整个桌面都没有反应了,按Ctrl+Alt+Del后,再按Esc,则Hook失效
4.在桌面上右击执行自己的菜单也偶尔会令Hook失效
bamboo2000 2011-05-11
  • 打赏
  • 举报
回复
to: m617105
弹出菜单具体怎么实现我不是很关心,而且我的代码也能实现弹出了,所以你的回答没有解决我的问题。

to: sanguomi
hook后我已经能弹出自己的菜单了,现在问题是点击自己菜单后,怎么屏蔽系统原来的事件,比如在资源管理器中处理完自己的菜单事件后还会弹出菜单,怎么把这个菜单屏蔽掉。
第二个问题我可以截个图你看一下,我用的就是delphi中的TPopupMenu控件。

to: gyk120
我发现在部分控件上点右键不会出现菜单,比如在TListview控件中,执行完我的菜单事件后会出现一个选择框。这时候还是WM_CONTEXTMENU消息吗?我没有测试过。

gyk120 2011-05-10
  • 打赏
  • 举报
回复
右键菜单有个WM_CONTEXTMENU消息,截获这个消息应该就可以了
sanguomi 2011-05-10
  • 打赏
  • 举报
回复
1.任意位置(比如傲游工具栏)右击,弹出自己的菜单,怎么在处理后屏蔽原来的菜单(傲游工具栏右键菜单)?
HOOK后, 弹出你自己的菜单就可以了

2.怎样防止第一次菜单没有关闭的情况下再次弹出菜单?(比如在资源管理器中不同位置分别右击)
我见过的没同时弹出两个菜单, 除非不是WINDOWS标准菜单
浩南_哥 2011-05-10
  • 打赏
  • 举报
回复
弹出菜单一般都是调用TrackPopupMenu这个API函数
包括form1.PopupMenu1.Popup(p.X,p.Y);//Popup过程内也是调用TrackPopupMenu来弹出菜单

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧