请问 如何屏蔽调 webbrowser的右健菜单(100分)

  • 主题发起人 主题发起人 myri
  • 开始时间 开始时间
M

myri

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]请问 如何屏蔽调 webbrowser的右健菜单,加入自己的菜单,比如也实现能插入图片的功能。
谢谢了![/blue]
 
不懂...

设置webbrowser的popupmenu不就行了??
 
屏蔽flash控件的右键菜单
方法1:拦截系统消息
在form上添加一个Application Events控件,然后在其OnMessage事件中输入一下代码:

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.message = WM_RBUTTONDOWN then
begin
//如果去掉下面这行就是屏蔽右键菜单,现在为自定义右键菜单
popupmenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
Handled := True;
end;
end;

方法2:拦截flash控件的右键消息,代码如下:
type
TMyFlash = class(TShockwaveFlash)
public
procedure TWMRBUTTONDOWN(var msg:TMsg); message WM_RBUTTONDOWN;
end;

procedure TMyFlash.TWMRBUTTONDOWN(var msg:TMsg);
var
P:Tpoint;
begin
if popupmenu<>nil then //加入自己的事件
begin
GetCursorPos(p); //获得当前鼠标位置
popupmenu.Popup(p.x,p.y); //弹出菜单
end;
end;
 
我是说的是 webbrowser 处于编辑状态时的情况,然后也实现 插入图片的功能
 
xianjun (2001-11-17 8:40:00)
完美解决方案(你想屏蔽什么键都可以):
下面的代码只对初始化过的WebBrowser的菜单生效,即WebBrowser已经Navigate过某一页
如果对未Navigate的WebBrowser,可以直接弹出其PopupMenu属性里设的菜单。

const
WM_POPUP_DXMENU = WM_USER + 1000;

private
{ Private declarations }
OldWBWndProc: TWndMethod;
procedure WBWndProc(var Message: TMessage);
procedure WmPopupMymenu(var Msg: TMsg); message WM_POPUP_DXMENU;

procedure TForm1.WBWndProc(var Message: TMessage);
begin
with Message do
begin
if ((Msg = WM_PARENTNOTIFY) and (LOWORD(WPARAM) = WM_RBUTTONDOWN)) or
(WPARAM = VK_APPS) then
PostMessage(Handle, WM_POPUP_DXMENU, LOWORD(LPARAM), HiWord(LPARAM));//通知主窗体要弹出菜单
if (GetAsyncKeyState(VK_CONTROL) and (1 shl 16)) <> 0 then //按Ctrl+A全选 Ctrl+C(X)拷贝到剪贴板
case WPARAM of
Ord('A'):
WebBrowser.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);
Ord('C'), Ord('X'):
WebBrowser.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT);
end;
//if WPARAM = VK_ESCAPE then 你还可以象这样拦其他的键
if (Msg < (CN_BASE + WM_KEYFIRST)) or (Msg > (CN_BASE + WM_DEADCHAR)) then
OldWBWndProc(Message);
end;
end;

procedure TForm1.Loaded;
begin
inherited;
if not (csDesigning in ComponentState) then
begin
OldWBWndProc := WebBrowser.WindowProc;
WebBrowser.WindowProc := WBWndProc;
end;
end;

procedure TCQContractView.WmPopupMymenu(var Msg: TMsg);
begin
PopupDxBarMenu; //弹出自己的菜单
end;



 
我说的是 编辑时菜单 如下:
打开
在新窗口打开
---------
剪切
复制
粘贴
--------
文档属性
--------
浏览视图
--------
查看源文件
--------
编辑超级链接
插入图片
--------
属性

以上编辑菜单,如何屏蔽掉,加入自己的菜单??
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部