如何把TWebBrowser控件中的右键菜单干掉(50分)

  • 主题发起人 blueshine
  • 开始时间
B

blueshine

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把TWebBrowser控件中的右键菜单干掉
 
截获鼠标消息,如果是右键,则发出一个左键的消息覆盖
 
这种方法可行,但是如果这个窗口还有其他需要右键菜单,则不可用,还有没有其他方法
 
加个ApplicationEvents
写上以下代码就OK

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if IsChild(WebBrowser1.Handle, Msg.Hwnd) and
((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)) then
begin
dxBarPopupMenu.PopupFromCursorPos ;//做你想做的事
Handled:=True;
end;
end;

//看看我做的DEMO是否合你的要求?
http://bbs.soft163.com/uploadImages/20027814494249082.zip
 
设置一全局变量,当鼠标进入webbrowser后,置变量为true,当鼠标离开webbrowser后置该变量为
false.然后在截获鼠标事件之前先判断该变量的状态,如果为true则截获鼠标事件的程序段执行,
否则,跳过该程序段。
关于如何获得鼠标是否在webbrowser中,可以自己写过程,也可以利用有mouseenter、mouseleave事件
的控件做webbrowser的容器即可
 
lfpsoft的方法很好,你的语句中不应使用IsChild,而应直接比较Handle
无锡空心菜的方法也不错,只是有些麻烦,过于繁复
不过谢谢大家的讨论,呵呵,学到不少东西
结贴喽
 
顶部