技术开发 频道

使用Hook(钩子)阻止Flash启动浏览器打开URL

  为了达到禁止Flash打开浏览器的目的,从Hook(Hook不知道?天极里面资料很多的)入手,截获到Flash的相关事件信息,提前启动一个专杀浏览器的线程,使得Flash打开浏览器的瞬间关闭。我们先要找到Flash在播放电子杂志时候的一些相关数据,比如系统消息,发送给外部的消息结构为:
[StructLayout(LayoutKind.Sequential)] public struct CWPSTRUCT { public IntPtr lparam; public IntPtr wparam; public int message; public IntPtr hwnd; } //在C#中使用钩子 public delegate int HookProc(int code, IntPtr wparam, ref CWPSTRUCT cwp); public static int WH_CALLWNDPROC = 0x004; //安装钩子的函数 [DllImport("user32.dll", CharSet = CharSet.Auto,CallingConvention = CallingConvention.StdCall)] public static extern IntPtr SetWindowsHookEx(int type, HookProc hook, IntPtr instance, int threadID); //调用下一个钩子的函数 [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern int CallNextHookEx(IntPtr hookHandle, int code, IntPtr wparam, ref CWPSTRUCT cwp); //卸载钩子 [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern bool UnhookWindowsHookEx(IntPtr hookHandle); //获取窗体线程ID [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowThreadProcessId(IntPtr hwnd, int ID); private HookProc hookProc; private IntPtr hookHandle = IntPtr.Zero;
0
相关文章