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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010673851/article/details/50667587

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 在使用时,用鼠标滚动来代替一条一条滚动。

展开阅读全文

没有更多推荐了,返回首页