国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

在C#中使用鉤子來處理消息的方法

2023-05-17 11:41:58
字體:
來源:轉載
供稿:網友

本文講解了在C#中使用鉤子技術處理消息的方法。

1、聲明鉤子函數代理:

public   delegate   IntPtr   HookProc(int   nCode,   IntPtr   wParam,   IntPtr   lParam); 

2、聲明API函數:

[DllImport("user32.dll",   CharSet=CharSet.Auto)]
        public   static   extern   IntPtr   SetWindowsHookEx(int   hookid,   HookProc   pfnhook,   IntPtr   hinst,   int   threadid); 

[DllImport("user32.dll",   CharSet=CharSet.Auto,   ExactSpelling=true)]      
        public   static   extern   bool   UnhookWindowsHookEx(IntPtr   hhook);

[DllImport("user32.dll",   CharSet=CharSet.Auto,   ExactSpelling=true)]      
        public   static   extern   IntPtr   CallNextHookEx(IntPtr   hhook,   int   code,   IntPtr   wparam,   IntPtr   lparam);

[DllImport("kernel32.dll",   ExactSpelling=true,   CharSet=CharSet.Auto)]      
        public   static   extern   int   GetCurrentThreadId();

public   const   int   WH_MSGFILTER   =   -1;

3、寫你自己的HookProc代理實現方法,如MyHookProc

public   IntPtr   MyHookProc(int   nCode,   IntPtr   wParam,   IntPtr   lParam)       
        {      
              //...你的代碼       
              return   CallNextHookEx(iHookHandle,   code,   wparam,   lparam);       
        }

4、為你的類聲明一個Hook   Handle和非托管的鉤子線程地址:

private   IntPtr   _iHookHandle=IntPtr.Zero;
        private   GCHandle   _hookProcHandle;

5、在合適的地方安裝你的鉤子

HookProc   hookProc   =   new   HookProc(MyHookProc);
        _hookProcHandle   =   GCHandle.Alloc(hookProc);
        iHookHandle   =   SetWindowsHookEx(WH_MSGFILTER,   hookProc,  IntPtr.Zero,   .GetCurrentThreadId());
        if   (iHookHandle   ==   IntPtr.Zero)   throw   new   System.Exception("沒有足夠權限安裝鉤子!");

6、在合適的地方卸載你的鉤子

if   (iHookHandle!=IntPtr.Zero)
           UnhookWindowsHookEx(iHookHandle); 
         _hookProcHandle.Free();
         iHookHandle   =   IntPtr.Zero;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 营山县| 遵义市| 洛阳市| 阿拉善左旗| 平江县| 阳春市| 宁远县| 呼伦贝尔市| 墨玉县| 南和县| 越西县| 东方市| 叙永县| 涟源市| 清水河县| 永年县| 寻甸| 刚察县| 胶州市| 同心县| 徐汇区| 漳州市| 蓬溪县| 独山县| 贵定县| 合阳县| 罗江县| 郑州市| 慈溪市| 高碑店市| 白朗县| 太康县| 五寨县| 金川县| 昌乐县| 滕州市| 荣成市| 绥化市| 巢湖市| 汪清县| 丰镇市|