如何屏蔽鼠标右键(TWebBrowser控件)(50分)

  • 主题发起人 江竹人
  • 开始时间

江竹人

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]本人在使用TWebBrowser控件浏览一个网页时,不想用户点击右键弹出IE的菜单(想什么都不弹出),想请各位高手,如何屏蔽它!
 
在HTML里面写语句就行了
 
呵呵,这不是最好的方法,你能在所有的HTML里写这个吗?
比如你浏览他人的网站,别人能让你写吗?
 
本来就是如此,实际上控制权已经交给HTML了
 
可以控制窗体事件
 
嘻嘻,给分吧!
可以下载以下程序看效果:
http://www.lkgarden.com/lfpsoft/MyMenu.zip

以下为代码
1.加入一个ApplicationEvents,在OnMessage事件中加入以下代码:
procedure TfrmMain.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;
 
lfpsoft,你给我的示例我看了,做的很好啊!
我也照你所说的去做,代码如下,但还是不行,请你指正:
type
TForm1 = class(TForm)
HeaderControl1: THeaderControl;
Edit1: TEdit;
Button1: TButton;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
URL : OLEVariant;
begin
URL := edit1.Text ;
webBrowser1.Navigate2(URL);
end;

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
//不显示菜单
Handled:=False;
end;
end;
end.
 
江大峡,运行你的程序后我的w2k的任务栏就变的半透明拉,你是不是应该考虑一下退出程序时
恢复系统的设置?
 
lfpsoft讲得差不多了
你只要在Form1的Activate或create中再加入

application.OnMessage:=ApplicationEvents1Message;

就可以了
 
多谢QuickSilver的提示。
我想在鼠标点右键时,在鼠标的位置上显示自己定义的菜单,如何实现?
 
begin
if IsChild(WebBrowser1.Handle, Msg.Hwnd) and
((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)) then
begin

GetCursorPos(mPoint); //得到光标位置
PopupMenu1.Popup(mPoint.X, mPoint.Y); //弹出popupmenu1的菜单

Handled:=True;
end;
end;
 
写一段JS代码
 
多人接受答案了。
 
顶部