首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

如何样禁止Twebbrowser本身的快捷键

2012-02-06 
怎么样禁止Twebbrowser本身的快捷键?就是使TWwebbrowser的快捷键如F5刷新网页,ctrl+N打开新网页失效![解决

怎么样禁止Twebbrowser本身的快捷键?
就是使TWwebbrowser的快捷键如F5刷新网页,ctrl+N打开新网页失效!

[解决办法]
IDocHostUIHandler中有一个TranslateAccelerator方法

Delphi(Pascal) code
// 屏蔽Ctrl+Nfunction TCustomEmbeddedWB.DoFilterMsg(const lpMsg: PMSG): HRESULT;begin   Result := S_FALSE;   if (lpMsg^.message = WM_KEYDOWN)      and (GetKeyState(VK_CONTROL) < 0) then      begin         if 'N' = Char(lpMsg.wParam) then            begin               Result := S_OK;            end;      end;end;function TranslateAccelerator(const lpMsg: PMSG;   const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT;begin   Result := DoFilterMsg(lpMsg);end;
[解决办法]
procedure TForm2.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
mPoint: TPoint;
const
_KeyPressMask = $80000000;
begin
//屏蔽右键菜单
// with Msg do
// begin
// if not IsChild(WebBrowser1.Handle, hWnd) then Exit;
// Handled := (message = WM_RBUTTONDOWN) or (message = WM_RBUTTONUP) or (message = WM_CONTEXTMENU);
// end;

//替换右键菜单
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;

//禁止Ctrl + N
//禁止Ctrl + F
//禁止Ctrl + A
if Msg.message = WM_KEYDOWN then
begin
if ((Msg.lParam and _KeyPressMask) = 0) and
(GetKeyState(VK_Control) <0) and ((Msg.wParam = Ord('N'))
or (Msg.wParam = Ord('F')) or (Msg.wParam = Ord('A'))) then
begin
Handled := True;
end;
end;
end;

热点排行