亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

基于C#實現的HOOK鍵盤鉤子實例代碼

2020-01-24 02:37:54
字體:
來源:轉載
供稿:網友

本文所述為基于C#實現的HOOK實例,該實例可用來屏蔽系統熱鍵。程序主要實現了安裝鉤子、傳遞鉤子、卸載鉤子等功能。在傳遞鉤子中:
<param name="pHookHandle">是您自己的鉤子函數的句柄。用該句柄可以遍歷鉤子鏈</param>
<param name="nCode">把傳入的參數簡單傳給CallNextHookEx即可</param>
<param name="wParam">把傳入的參數簡單傳給CallNextHookEx即可</param>,
在HOOK類中定義了一些私有變量:鍵盤鉤子句柄、鍵盤鉤子委托實例、底層的鉤子變量等。在鉤子捕獲消息后,對消息進行處理。

具體實現HOOK代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Reflection;using System.IO;namespace 設置和屏蔽系統熱鍵{  class HOOK  {    #region 私有變量 private IntPtr m_pKeyboardHook = IntPtr.Zero;/// 鍵盤鉤子句柄 public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);/// 鉤子委托聲明 private HookProc m_KeyboardHookProcedure;/// 鍵盤鉤子委托實例  public const int idHook = 13;/// 底層的鉤子變量  [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]  public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr pInstance, int threadId);/// 安裝鉤子  [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]/// 卸載鉤子  public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle);    /// 傳遞鉤子      /// <param name="pHookHandle">是您自己的鉤子函數的句柄。用該句柄可以遍歷鉤子鏈</param>    /// <param name="nCode">把傳入的參數簡單傳給CallNextHookEx即可</param>    /// <param name="wParam">把傳入的參數簡單傳給CallNextHookEx即可</param>    /// <param name="lParam"></param>    /// <returns></returns>    [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]    public static extern int CallNextHookEx(IntPtr pHookHandle, int nCode, Int32 wParam, IntPtr lParam);    [StructLayout(LayoutKind.Sequential)]    public struct KeyMSG    {      public int vkCode;      public int scanCode;      public int flags;      public int time;      public int dwExtraInfo;    }    protected const int WM_QUERYENDSESSION = 0x0011;    protected const int WM_KEYDOWN = 0x100;    protected const int WM_KEYUP = 0x101;    protected const int WM_SYSKEYDOWN = 0x104;    protected const int WM_SYSKEYUP = 0x105;    protected const byte VK_SHIFT = 0x10;    protected const byte VK_CAPITAL = 0x14;    protected const byte VK_NUMLOCK = 0x90;    protected const byte VK_LSHIFT = 0xA0;    protected const byte VK_RSHIFT = 0xA1;    protected const int VK_LWIN = 91;    protected const int VK_RWIN = 92;    protected const byte VK_LCONTROL = 0xA2;    protected const byte VK_RCONTROL = 0x3;    protected const byte VK_LALT = 0xA4;    protected const byte VK_RALT = 0xA5;    protected const byte LLKHF_ALTDOWN = 0x20;    public bool Porwer = true;//是否屏蔽Porwer鍵    public static int pp = 0;//熱鍵的返回值    public static bool isSet = false;//是否設置屏蔽熱鍵,false為設置屏蔽的熱鍵    public static bool isHotkey = false;    public static bool isInstall = false;//是否安裝鉤子,true為安裝    #endregion    #region 事件的聲明    public event KeyEventHandler KeyDown;//鍵盤按下事件    public event KeyEventHandler KeyUp;//鍵盤松開事件    public event KeyPressEventHandler KeyPress;//鍵盤單擊事件    #endregion    #region 方法    /// <summary>    /// 鉤子捕獲消息后,對消息進行處理    /// </summary>    /// <param nCode="int">標識,鍵盤是否操作</param>     /// <param wParam="int">鍵盤的操作值</param>    /// <param lParam="IntPtr">指針</param>    private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam)    {      if (nCode > -1 && (KeyDown != null || KeyUp != null || KeyPress != null))      {        KeyMSG keyboardHookStruct = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));//獲取鉤子的相關信息        KeyEventArgs e = new KeyEventArgs((Keys)(keyboardHookStruct.vkCode));//獲取KeyEventArgs事件的相磁信息        switch (wParam)        {          case WM_KEYDOWN://鍵盤按下操作          case WM_SYSKEYDOWN:            if (KeyDown != null)//如果加載了當前事件            {              KeyDown(this, e);//調用該事件            }            break;          case WM_KEYUP://鍵盤松開操作          case WM_SYSKEYUP:            if (KeyUp != null)//如果加載了當前事件            {              KeyUp(this, e);//調用該事件            }            break;        }      }      return pp;//是否屏蔽當前熱鍵,1為屏蔽,2為執行    }    #endregion    #region 安裝、卸載鉤子    /// <summary>    /// 安裝鉤子    /// </summary>    /// <returns>是否安裝成功</returns>    public bool Start()    {      IntPtr pInstance = (IntPtr)4194304;//鉤子所在實例的句柄      if (this.m_pKeyboardHook == IntPtr.Zero)//如果鍵盤的句柄為空      {        this.m_KeyboardHookProcedure = new HookProc(KeyboardHookProc);//聲明一個托管鉤子        this.m_pKeyboardHook = SetWindowsHookEx(idHook, m_KeyboardHookProcedure, pInstance, 0);//安裝鉤子        if (this.m_pKeyboardHook == IntPtr.Zero)//如果安裝失敗        {          this.Stop();//卸載鉤子          return false;        }      }      isInstall = true;//安裝了鉤子      return true;    }    /// <summary>    /// 卸載鉤子    /// </summary>    /// <returns>是否卸載成功</returns>    public bool Stop()    {      if (isInstall == false)//如果沒有安裝鉤子      {        return true;      }      bool result = true;      if (this.m_pKeyboardHook != IntPtr.Zero)//如果安裝了鉤子      {        result = (UnhookWindowsHookEx(this.m_pKeyboardHook) && result);//卸載鉤子        this.m_pKeyboardHook = IntPtr.Zero;//清空鍵盤的鉤子句柄      }      return result;    }    #endregion 公共方法  }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情a∨在线视频播放| 成人夜晚看av| 亚洲国产精品系列| 色香阁99久久精品久久久| xxav国产精品美女主播| 亚洲wwwav| 亚洲精品97久久| 欧美极品少妇与黑人| 岛国av一区二区| 色婷婷综合成人| 久久久久久久久久久久久久久久久久av| 国产精品欧美久久久| 高清视频欧美一级| 国产日韩专区在线| 2021国产精品视频| 亚洲国产福利在线| 91九色在线视频| 精品高清美女精品国产区| 欧美日韩激情小视频| 深夜福利日韩在线看| 国产在线观看一区二区三区| 日韩最新在线视频| 中文字幕日韩有码| 欧美成人精品在线观看| 亚洲免费电影在线观看| 国产午夜精品一区二区三区| 亚洲精品国产电影| 狠狠久久亚洲欧美专区| 久久精品久久久久久国产 免费| 成人久久一区二区| 亚洲综合最新在线| 欧美日韩一区二区免费视频| 欧美二区在线播放| 一区二区三区国产在线观看| 91麻豆国产语对白在线观看| 26uuu亚洲国产精品| 91精品国产91久久久久久不卡| 国内精品久久久久伊人av| 夜夜嗨av色综合久久久综合网| 成人羞羞国产免费| 日韩国产中文字幕| 成人写真福利网| 在线成人一区二区| 亚洲男人第一网站| 精品国产网站地址| 国产精品久久久精品| 国产suv精品一区二区三区88区| 51ⅴ精品国产91久久久久久| 欧美日韩日本国产| 国产精品青青在线观看爽香蕉| 色噜噜亚洲精品中文字幕| 亚洲国产成人在线播放| 国产精品免费电影| 91老司机在线| 欧美人在线观看| 欧美老女人在线视频| 欧美精品中文字幕一区| 欧美激情视频网| 成人午夜激情网| 在线成人激情黄色| 久久精品电影一区二区| 亚洲精品视频网上网址在线观看| 精品国内亚洲在观看18黄| 成人情趣片在线观看免费| 51色欧美片视频在线观看| 亚洲国产欧美日韩精品| 亚洲精品www久久久久久广东| 亚洲自拍偷拍视频| 欧美性一区二区三区| 国产自产女人91一区在线观看| 国产一区二区三区视频| 日韩美女视频免费看| 黄色精品在线看| 欧美理论片在线观看| 国产精品成人免费视频| 欧美一级免费视频| 亚洲精品免费网站| 欧美福利视频网站| 亚洲色无码播放| 国产精品视频区1| 久久中文字幕一区| 亚洲人成电影在线播放| 中文字幕少妇一区二区三区| 亚洲人成在线观| 亚洲第一黄色网| 欧美成人三级视频网站| 国产精品成人v| 日韩欧美在线一区| 欧美视频免费在线| 精品久久久久久久久久ntr影视| 国产亚洲视频中文字幕视频| 色综合久久精品亚洲国产| 日韩精品极品在线观看| 欧美男插女视频| 欧美高清自拍一区| 精品国产视频在线| 国产精品爽爽爽爽爽爽在线观看| 亚洲国产成人久久综合| 在线看国产精品| 日韩va亚洲va欧洲va国产| 欧美日韩亚洲国产一区| 国产91|九色| 国产精品色婷婷视频| 亚洲欧美激情精品一区二区| 久久久国产精品一区| 久久精品久久久久久国产 免费| 久久69精品久久久久久国产越南| 欧美日韩在线观看视频小说| 2019国产精品自在线拍国产不卡| 亚洲视频精品在线| 中文字幕在线精品| 欧美丰满少妇xxxx| 成人在线视频福利| 中文字幕日韩精品有码视频| 亚洲天堂av电影| 国产成人综合精品在线| 一区二区三区高清国产| 韩国一区二区电影| 91丝袜美腿美女视频网站| 国产成人精品久久二区二区| 在线观看日韩www视频免费| 久久99精品久久久久久噜噜| 欧美日韩国产123| 国产精品视频久久久| 日韩成人av网址| 日韩精品视频免费在线观看| 亚洲精品一区二区网址| 精品国偷自产在线| 亚洲片在线观看| 97国产精品人人爽人人做| www.久久撸.com| 亚洲精品免费在线视频| 亚洲韩国日本中文字幕| 亚洲自拍另类欧美丝袜| 夜夜嗨av一区二区三区免费区| 亚洲成人网av| 黑人与娇小精品av专区| 日韩美女毛茸茸| 中文字幕在线看视频国产欧美在线看完整| 日韩美女在线观看一区| 91久久国产婷婷一区二区| 欧美日韩午夜剧场| 久久综合伊人77777蜜臀| 97婷婷涩涩精品一区| 国产日韩在线免费| 亚洲成人av资源网| 欧美日韩性视频在线| www.亚洲一区| 久久久久久久91| 日韩精品免费一线在线观看| 92看片淫黄大片看国产片| 国产精品视频一区国模私拍| 国内精品久久久久影院 日本资源| 国产精品久久久久久久久久小说| 亚洲国产精品久久久久久| 欧美日韩午夜激情| 国产精品综合不卡av| 国产综合在线观看视频| 成人网页在线免费观看| 91免费在线视频网站| 欧美视频在线观看 亚洲欧| 国产精品扒开腿做爽爽爽的视频| 国产精品白丝av嫩草影院| 国产在线精品播放|