最近测试提出问题,要求屏蔽FLASH界面的鼠标右键,经过验证以下方法可行:
在文件里添加以下代码:
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,IntPtr lParam);
??????? private IntPtr FlashWndProc(IntPtr hWnd,IntPtr lParam)
??????? {
??????????? if (msg == 516)
??????????????? return (IntPtr)0;
??????????? return CallWindowProc(OldWndProc,hWnd,msg,wParam,lParam);
??????? }
在load函数里添加:
?????????? this.Wpr = new FlaWndProc(this.FlashWndProc);
??????????? this.OldWndProc = SetWindowLong(axShockwaveFlash1.Handle,GWL_WNDPROC,Wpr);