- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
屏蔽Real的ActiveX插件的右键菜单(C#版)
屏蔽Real的ActiveX插件的右键菜单(C#版)分类 C#(Csharp)?2006-8-7 11:45:45 浏览 1574 回复 0????隐藏侧边栏转自 DZEND--C#学习乐园.其实就是调用一下API而已:??1、安装钩子:?? SetWindowsHookEx??函数原形:?复制??保存HHOOK SetWindowsHookEx( int idHook, // 钩子类型, HOOKPROC lpfn, // 钩子函数地址 INSTANCE hMod, // 钩子所在的实例的句柄, DWORD dwThreadId // 钩子所监视的线程的线程号 )hMod:?对于线程序钩子,参数传NULL;??对于系统钩子:参数为钩子DLL的句柄?? dwThreadId:对于全局钩子,该参数为NULL。??钩子类型用WH_CALLWNDPROC=4(发送到窗口的消息。由SendMessage触发)??返回:成功:返回SetWindowsHookEx返回所安装的钩子句柄;??失败:NULL;??2、回调,你要截获消息就在这里进行:?复制??保存LRESULT WINAPI MyHookProc( int nCode , // 指定是否需要处理该消息 WPARAM wParam, // 包含该消息的附加消息 LPARAM lParam // 包含该消息的附加消息 )3、调用下一个钩子?复制??保存LRESULT CallNextHookEx( HHOOK hhk, // 是您自己的钩子函数的句柄。用该句柄可以遍历钩子链 int nCode, // 把传入的参数简单传给CallNextHookEx即可 WPARAM wParam, // 把传入的参数简单传给CallNextHookEx即可 LPARAM lParam // 把传入的参数简单传给CallNextHookEx即可 );4、用完后记得卸载钩子哦,要不然你的系统会变得奇慢无比!?复制??保存BOOL UnhookWindowsHookEx( HHOOK hhk // 要卸载的钩子句柄。 )把上面这些API用C#封装一下,就可以直接用了!??首先在form界面放一个realG2控件。然后设定CtlControls的属性值为imagewindow,all?这样我们就可以在form界面上看到一个realplay的播放器界面了。?然后我们再在form界面上加一个ContextMenu的菜单。自己随便加几个菜单项。?(我这里面的contextMenu的名字为contextMenu1。你们根据自己的情况?可以改变名字。但底下的名字也要相应改变)?复制??保存//定义委托(钩子函数,用于回调) publicdelegateint HookProc(int code, IntPtr wparam, ref CWPSTRUCT cwp);//安装钩子的函数 [DllImport(User32.dll, CharSet = CharSet.Auto)]publicstaticextern IntPtr SetWindowsHookEx(int type, HookProc hook, IntPtr instance, int threadID);//调用下一个钩子的函数 [DllImport(User32.dll, CharSet = CharSet.Auto)]publicstaticexternint CallNextHookEx(IntPtr hookHandle, int code, IntPtr wparam, ref CWPSTRUCT cwp);//卸载钩子 [DllImport(User32.dll, CharSet = CharSet.Auto)]publicstaticexternbool UnhookWindowsHookEx(IntPtr hookHandle);//获取窗体线程ID [DllImport(User32.dll, CharSet = CharSet.Auto)]publicstaticexternint GetWindowThreadProcessId(IntPtr hwnd, int ID);private HookProc hookProc;private IntPtr hookHandle = IntPtr.Zero;//开始拦截 privatebool StartHook(){ SetWindowsHookEx(7, hookProc, IntPtr.Zero, GetWindowThreadProcessId(Handle, 0));return ((int)
文档评论(0)