用webbroswer来访问别的网页,但网页中有flash,我想屏蔽flash的右击,就是在flash上右击不弹出任何框框

解决方案 »

  1.   

        #region 去掉Flash右键菜单,API函数的声明
    private const int GWL_WNDPROC = -4;
    public delegate IntPtr FlaWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
    private IntPtr OldWndProc = IntPtr.Zero;
    private FlaWndProc Wpr = null;
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, FlaWndProc wndProc);
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
    private IntPtr FlashWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam) 
    {
        if(msg == 516) //516就是对应鼠标的右键,当然你也可以用0X0204右键鼠标的16进制编码
        {    
            return (IntPtr)0; //什么都不做
        }
      return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam);
    }//然后在窗体的载入事件里面添加如下代码:(这里面自己改成网页的载入事件即可)
    private void Flash_Load(object sender, EventArgs e)
    {
        this.Wpr = new FlaWndProc(this.FlashWndProc);
        this.OldWndProc = SetWindowLong(Myflash.Handle, GWL_WNDPROC, Wpr); //关联flash控件
    }