Delphi : 使用ApplicationEvents来拦截窗体消息,阻止WebBrowser右键菜单

来源:互联网 发布:protobuffer java 编辑:程序博客网 时间:2024/06/04 17:44

Delphi : 使用ApplicationEvents来拦截窗体消息,阻止WebBrowser右键菜单

(2012-10-25 19:38:35)
标签: 

it

分类: 软件_Software

    项目需要一些全屏展示的web页面,结果碰到一个问题,当窗体上的webbrowse控件打开了网页之后,窗体就不响应键盘消息了~~~~郁闷了会儿,过后才研究出来用ApplicationEvents这个控件就可以实现~~~要么的话,就只有HOOK窗口消息了~~


以下是OnMessage事件,用来阻止WebBrowser的右键菜单:
procedure TfrmSearch.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  //如果是Webbrowser,则不许使用右键菜单
  if IsChild(WebBrowser1.Handle,Msg.Hwnd) and ((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message=WM_RBUTTONUP)) then
  begin
    Handled:=True;
  end;
end;
 
当焦点在WebBrowser控件中时,窗体是不会响应键盘消息的,可以用以下方法来处理,比如中按ESC运行命令~
//用ApplicationEvents控件,拦截ESC键按下的消息!
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.message = WM_KEYDOWN) AND (Msg.wParam=VK_ESCAPE) then
  begin
    if IsChild(Webbrowser1.Handle, Msg.hwnd) then
    showmessage('在这里做你想做的');
  end else;
end;


应用的地方,还有,DCube与DBgrideh 在使用时,用鼠标滚动来代替一条一条滚动。

0 0
原创粉丝点击