微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

    项目需要一些全屏展示的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 在使用时,用鼠标滚动来代替一条一条滚动。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐