wpf 中AxShockwaveFlash重写以及屏蔽鼠标右键

在wpf中需要用到flash播放swf或者图片,需要使用

AxShockwaveFlashObjects.dll和ShockwaveFlashObjects.dll

在项目中使用的时候遇到

问题1.使用WindowsFormsHost总是置顶的问题,到目前为止没有很好的解决

问题2.就是AxShockwaveFlash取消鼠标右键

屏蔽掉flash右键方法:

重写AxShockwaveFlash

 public partial class MyShockwaveFlash : AxShockwaveFlash
    {
        public event MouseEventHandler MouseRightDown;
        public delegate void MouseEventHandler(object sender, System.Windows.Forms.MouseEventArgs e);
        private const int WM_LBUTTONDOWN = 0x0201;
        private const int WM_RBUTTONDOWN = 0x0204;

        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_RBUTTONDOWN:
                    Int16 x = (Int16)m.LParam;
                    Int16 y = (Int16)((int)m.LParam >> 16);
                    MouseRightDown(this, new System.Windows.Forms.MouseEventArgs(System.Windows.Forms.MouseButtons.Right, 1, x, y, 0));
                    break;
            }
            if (m.Msg == WM_RBUTTONDOWN)
            {
                return;
            }
            base.WndProc(ref m);
        }
    }

然后使用方法如下:

private void MediaElementControl()
        {
            FlashPlayer = new MyShockwaveFlash();
            wfhFlash.Child = FlashPlayer;
            FlashPlayer.Movie = AppDomain.CurrentDomain.BaseDirectory + "main.swf";
            FlashPlayer.MouseRightDown += new MyShockwaveFlash.MouseEventHandler(FlashPlayer_MouseRightDown);
        }

        void FlashPlayer_MouseRightDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            //这里您可以加入自己的处理或者其他您想处理的代码//System.Windows.MessageBox.Show("asfasdfasdf");
            return;
        }

最后问题2 顺利得以解决,但是对于问题1目前还没有找到很好的解决方法,哪位朋友如果有解决方法或者思路欢迎讨论交流或者留言均可,谢谢。

时间: 2024-12-17 15:20:45

wpf 中AxShockwaveFlash重写以及屏蔽鼠标右键的相关文章

转:js小技巧 ,将彻底屏蔽鼠标右键,可用于Table ,取消选取、防止复制,IE地址栏前换成自己的图标

1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu=return(false)><td>no</table> 可用于Table 2. <body onselectstart="return false"> 取消选取.防止复制 3. onpaste="return false" 不

类,屏蔽鼠标右键

<script language="javascript"> function Card(name,address,phone) { this.name=name; //初始化名片信息 this.address=address; this.phone=phone; this.printCard=function() // 创建printCard函数的定义 { line1="Name:"+this.name+"<br>\n"

屏蔽鼠标右键功能JS

<script language="Javascript">     function hiderightKey(){    return false; } document.oncontextmenu=hiderightKey;//屏蔽鼠标右键功能JS</script>

JavaScript屏蔽鼠标右键

JavaScript屏蔽鼠标右键还可以在body标签里加上oncontextmenu= self.event.returnvalue=false 或者: function nocontextmenu(){ if(document.all) { event.cancelBubble=true; event.returnvalue=false; return false;http://www.mlybyby.com }} 或者: 另外 oncontextmenu="window.event.retu

一种屏蔽鼠标右键的JS方法

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>屏蔽鼠标右键</title><script language="javascript">function click(){if (event.button==2){alert('禁止使用鼠标右键!!!')

屏蔽鼠标右键的方法

使用标准dom的方法: document.oncontextmenu=function(oEvent){ if(window.event){ //IE oEvent=window.event; oEvent.returnValue=false; }else{//FireFox oEvent.preventDefault(); } } 使用jquery的方法: 1. $(document).bind("contextmenu",function(){return false;});  /

winform屏蔽鼠标右键

/// <summary> /// 屏蔽右键 /// </summary> internal class MenuHandler : IContextMenuHandler { public bool OnBeforeContextMenu(IWebBrowser browser, IBrowser ibrower, IFrame iframe, IContextMenuParams icontextmenuparams, IMenuModel imenumodel) { retu

js 静止f1到f12 和屏蔽鼠标右键

//静止键盘f1-f12function testKeyDown(event){ if ((event.keyCode == 112) || //屏蔽 F1 (event.keyCode == 113) || //屏蔽 F2 (event.keyCode == 114) || //屏蔽 F3 (event.keyCode == 115) || //屏蔽 F4 //(event.keyCode == 116) || //屏蔽 F5 (event.keyCode == 117) || //屏蔽 F6

WPF中关于自定义控件的滚动条鼠标停留在内容上鼠标滚轮滚动无效的问题

问题起因:在一个用户控件里放置了1个TreeView垂直顺序放置. 当用户控件中的内容超过面板大小时,滚动条会自动出现 ,但是只有当鼠标指示在右边滚动条的那一条位置时,才支持鼠标滚轴滚动. 点在控件内部时滚轴无效. 问题分析:由于设置了d:designheight,自定义控件的宽高都是随着父容器的变化而变化的,于是我将Height设为较小的固定高度时,发现鼠标停留在控件内容时,滚轮控制滚动条滚动是有效的.这就说明UI上显示的滚动条并非是这个自定义控件的,而是这个自定义控件所在的父容器的,这样也解