怎样在Delphi中屏蔽Flash控件的右键弹出菜单

pdfium delphiXE Viewer pdfium delphiXE Viewer demo 立即下载

关于如何屏蔽Flash控件的右键菜单的问题有很多人问过,也有很多人回答,基本上都是说拦截
Application消息,或者继承一个新的控件,重载MouseDown消息,第一种解决办法,好象是简单
些,但是有个问题是:如果栏截应用程序的消息,势必会造成应用程序的所有消息都有执行这个
拦截过程,尽管可以通过条件来过滤掉其他消息,但是执行判断本身就要耗时间(尽管每次判断
一下的时间不多,但是的有消息占的时间加起来就不少了),另一种方法是继承控件,可以这样
写又麻烦,如果需要在设计期使用的话,还得重新注册。
有没有更加简单的方法呢?不需要去过滤所有的应用程序消息,又不需要重写控件?
的确还有第三种方法,这是Delphi为Delphi程序员专们保留用来在不
重写控件的情况下处理单个控件的消息的方法,但是这种方法处理控件消息很少被人使用,
因为它是TControl类的一个事件,但是它定义在Public域,所以在设计时不可见:
这个一件就是TControl.WindowProc,它是TWndMethod过程类型,类型定义在Classes单元:
TWndMethod = procedure(var Message: TMessage) of object;
但是我们又不能简单的写这个事件句柄,因为TControl类的实例在创建之初就已经给这个
事件赋值了,它的值就是TControl类的WndProc方法.而TControl正是靠WndProc方法来分发
消息给每个消息自己的消息处理句柄,如果我们简单的重写WindowProc事件,就会关闭消息
分发,就会造成所有消息都不能处理,而必须在WindowProc事件自己编程处理消息分发,结果
可能是这个控件只能画出一个框架.

为了重写这个WindowProc事件,而不必自己重处理消息分发,所以我们得想办法在重写这个
事件之前保存原事件句柄,执行完自己的消息处理函数后再调用原来的事件句柄处理消息分发.

具体源码请见:
type
  TFormProg = class(TForm)
  private
  FFlash:TShockwaveFlash;//需要动态创建.
  FFlashMes:TWndMethod;//保存Flash控件原来的WindowProc事件句柄
  protected
  procedure FlashMes(var Message: TMessage);
  { Private declarations }
  public
  end;
var
  FormProg: TFormProg;

implementation

procedure TFormProg.FlashMes(var Message: TMessage);
begin
  if (Message.Msg=WM_RBUTTONDOWN) then
  //如果是右键按下:Flash控件就是在鼠标按下的消息里弹出菜单的.
  begin
  FFlash.Perform(WM_RBUTTONUP,Message.WParam,Message.LParam);
  //直接传递给Flash控件鼠标弹起的消息.
  Exit;
  //并退出本过程,而不调用原来的事件句柄,即不再让Flash控件处理鼠标按下的消息,
  //这样就不会弹出菜单了.
  end;
  //关闭右键消息,不传递给Flash控件处理。这样就不会弹出右键菜单。
  FFlashMes(Message);
  //让原理的事件句柄处理其他的消息.
end;
procedure TFormProg.FormCreate(Sender: TObject);
begin
  FFlash:=TShockwaveFlash.Create(Self);//构造Flash控件的实例.
  FFlash.Parent:=Self;//在本窗口播放.
  FFlashMes:=FFlash.WindowProc;
  FFlash.WindowProc:=FlashMes;// WindowProc;
  FFlash.Align:=alClient;//整个窗口作为播放区域.
  FFlash.Movie:=ExtractFilePath(Application.ExeName)+'log-ok.swf';//播放的文件.
  FFlash.Menu:=False;//不显示菜单.
  FFlash.Loop:=False;//不循环,由本程序自己来控制循环.
end;

完全屏蔽DelphiFlash右键菜单 完全屏蔽delphiflash插件的右键菜单:在deiphi中拦截右键单击事件,以鼠标滚轮事件代替,flash收到的就是鼠标滚轮事件,达到了和鼠标右键单击一样的效果,并且完全屏蔽右键菜单 立即下载

相关推荐

flash彻底屏蔽右键

NULL 博文链接:https://qiqishou.iteye.com/blog/965268

flash player完全屏蔽右键菜单方法

直接上代码: package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; /** * 完全屏蔽Flash player11.2及其以后的右键菜单方法 * 编译器参数设置-swf-version=15 -target-player=11.2

6954

屏蔽右键菜单的Flash.ocx

winform中使用的彻底屏蔽右键菜单的Flash.ocx

一个控制FlashPlayer的DLL+delphi DEMO

一个封装了控制FlashPlayer所有控制的相关函数的DLL方便其他语言的调用.还带了个DELPHI是范例.

Delphi中调用Flash

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 610

基于SpringBoot+Vue校园失物招领系统的设计与实现

校园失物招领系统的设计与实现前端采用了Vue框架,并结合ElementUI来实现界面的设计与布局。后端采用了SpringBoot框架进行开发设计,并结合了Java语言和MySQL数据库来实现。在功能上分为了前端用户模块和管理员模块。前端用户模块主要实现了招领物品信息的发布、查询与管理,失物信息的发布、管理以及自动匹配招领物品,查看校园相关通知公告。管理员模块主要实现了物品分类管理、校园通知管理以及物品招领信息的查询统计等功能。校园失物招领系统的实现优化失物招领的流程,提高了校园失物招领的效率,促进了校园文化的建设,营造了良好的诚信氛围。

上一篇: CMPP SP端 C# 实例
下一篇: Delphi基础:回调函数及其使用
thinkray
博客等级 码龄21年 0粉丝 1原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值