最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 鉤子學(xué)習(xí)筆記

 更新時(shí)間:2011年04月16日 18:31:12   作者:  
今天弄了一下c#的鉤子,沒(méi)弄好,但是鉤子安裝成功,可以捕獲鍵盤(pán)事件。
包括系統(tǒng)鉤子和線程鉤子,或者叫全局鉤子和私有鉤子。系統(tǒng)鉤子需要一個(gè)單獨(dú)的DLL,這個(gè)地方耽誤了不少時(shí)間,網(wǎng)上有說(shuō)可以不用單獨(dú)DLL的。
現(xiàn)在開(kāi)始貼代碼,代碼參照了紅黑聯(lián)盟中的一篇文章。
復(fù)制代碼 代碼如下:

public class SetHook
{
public class HookTypes
{
/// <summary>
/// 鉤子類(lèi)型
/// </summary>
public enum HookType
{
WH_JOURNALRECORD = 0,//對(duì)寄送至消息隊(duì)列的輸入消息進(jìn)行記錄
WH_GETMESSAGE = 3,//對(duì)寄送至消息隊(duì)列的消息進(jìn)行監(jiān)視
WH_JOURNALPLAYBACK = 1,//對(duì)此前由WH_JOURNALRECORD 掛鉤處理過(guò)程紀(jì)錄的消息進(jìn)行寄送
WH_CALLWNDPROC = 4,//在系統(tǒng)將消息發(fā)送至目標(biāo)窗口處理過(guò)程之前,對(duì)該消息進(jìn)行監(jiān)視
WH_CBT = 5,//接受對(duì)CBT應(yīng)用程序有用的消息
WH_MSGFILTER = -1,//監(jiān)視由對(duì)話(huà)框、消息框、菜單條、或滾動(dòng)條中的輸入事件引發(fā)的消息
WH_SYSMSGFILTER = 6,//監(jiān)視由對(duì)話(huà)框,消息框,菜單條,滾動(dòng)條中的輸入事件引發(fā)的消息
//8
WH_DEBUG = 9,//對(duì)其他鉤子處理過(guò)程進(jìn)行調(diào)試
WH_SHELL = 10,//接受對(duì)外殼應(yīng)用程序有用的通知
WH_FOREGROUNDIDLE = 11,//當(dāng)應(yīng)用程序的前臺(tái)線程即將進(jìn)入空閑狀態(tài)時(shí)被調(diào)用,它有助于在空閑時(shí)間內(nèi)執(zhí)行低優(yōu)先級(jí)的任務(wù)
#region 鼠標(biāo)和鍵盤(pán)事件
/// <summary>
/// 對(duì)擊鍵消息進(jìn)行監(jiān)視
/// </summary>
WH_KEYBOARD = 2,
/// <summary>
/// 只能在windows NT中被安裝,用來(lái)對(duì)底層的鍵盤(pán)輸入事件進(jìn)行監(jiān)視
/// </summary>
WH_KEYBOARD_LL = 13,
/// <summary>
/// 對(duì)鼠標(biāo)消息進(jìn)行監(jiān)視
/// </summary>
WH_MOUSE = 7,
/// <summary>
/// 只能在windows NT中被安裝,用來(lái)對(duì)底層鼠標(biāo)事件進(jìn)行監(jiān)視
/// </summary>
WH_MOUSE_LL = 14,
#endregion
}
}
public abstract class Hooks : HookTypes
{
public delegate int HookProc(int nCode, int wParam, IntPtr IParam);
/// <summary>
/// 安裝鉤子
/// </summary>
/// <param name="idHook">鉤子類(lèi)型,即它處理的消息類(lèi)型</param>
/// <param name="lpfn"> 鉤子函數(shù)地址</param>
/// <param name="hInstance">應(yīng)用程序?qū)嵗木浔?。?biāo)識(shí)包含lpfn所指的子程的DLL</param>
/// <param name="threadId">安裝鉤子后想監(jiān)控的線程的ID號(hào), 如果為0,鉤子子程與所有的線程關(guān)聯(lián),即為全局鉤子</param>
/// <returns>返回參數(shù)為鉤子句柄,失敗為NULL</returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(HookType hooktype, HookProc lpfn, IntPtr hInstance, int threadId);
/// <summary>
/// 卸載鉤子
/// </summary>
/// <param name="idHook">要卸載的鉤子句柄</param>
/// <returns></returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(int idHook);
/// <summary>
/// 繼續(xù)下一個(gè)鉤子
/// </summary>
/// <param name="idHook"></param>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="IParam"></param>
/// <returns></returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr IParam);
/// <summary>
/// 獲取當(dāng)前線程編號(hào)
/// </summary>
/// <returns></returns>
[DllImport("kernel32")]
public static extern int GetCurrentThreadId();
#region
/// <summary>
/// 委托對(duì)象
/// </summary>
public HookProc proc;
public abstract int SetWindowsHookEx();
#endregion
}
public class AddHook : Hooks
{
HookType hooktyp;
HookProc hookproc;
public AddHook(HookType _hooktype, HookProc _hookproc)
{
this.hooktyp = _hooktype;
this.hookproc = _hookproc;
}
public int AddPrivateHook()
{
return SetWindowsHookEx();
}
/// <summary>
/// 線程鉤子
/// </summary>
/// <returns></returns>
public override int SetWindowsHookEx()
{
//int theadId = System.Threading.Thread.CurrentThread.ManagedThreadId(); 應(yīng)對(duì)GetCurrentThreadId()的過(guò)時(shí)
int hookId = 0;
object hookId_ = SetWindowsHookEx(this.hooktyp, this.hookproc, IntPtr.Zero, GetCurrentThreadId());
if (hookId_ != null)
{
hookId = (int)hookId_;
}
return hookId;
}
    //系統(tǒng)鉤子和這差不多,安裝鉤子的時(shí)候后兩個(gè)參數(shù)不一樣
}
}

調(diào)用我新建了一個(gè)類(lèi),方便調(diào)用線程或者系統(tǒng)鉤子,這里就不貼了

相關(guān)文章

  • C#實(shí)現(xiàn)時(shí)間戳的簡(jiǎn)單方法

    C#實(shí)現(xiàn)時(shí)間戳的簡(jiǎn)單方法

    這篇文章主要介紹了C#實(shí)現(xiàn)時(shí)間戳的簡(jiǎn)單方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • C#中DateTime.Compare()比較時(shí)間大小

    C#中DateTime.Compare()比較時(shí)間大小

    本文主要介紹了C#中DateTime.Compare()比較時(shí)間大小,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類(lèi)MysqlHelper實(shí)例

    C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類(lèi)MysqlHelper實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類(lèi)MysqlHelper,實(shí)例分析了C#操作MySQL的常用技巧,并將其封裝入一個(gè)類(lèi)中以方便調(diào)用,需要的朋友可以參考下
    2015-04-04
  • C#的Socket實(shí)現(xiàn)UDP協(xié)議通信示例代碼

    C#的Socket實(shí)現(xiàn)UDP協(xié)議通信示例代碼

    本篇文章主要介紹了C#的Socket實(shí)現(xiàn)UDP協(xié)議通信示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C#使用HtmlAgilityPack組件解析html文檔

    C#使用HtmlAgilityPack組件解析html文檔

    這篇文章介紹了C#使用HtmlAgilityPack組件解析html文檔的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#異步編程由淺入深(三)之詳解Awaiter

    C#異步編程由淺入深(三)之詳解Awaiter

    這篇文章主要介紹了C#異步編程由淺入深(三)之詳解Awaiter,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C#實(shí)現(xiàn)加密與解密詳解

    C#實(shí)現(xiàn)加密與解密詳解

    本文詳細(xì)講解了C#實(shí)現(xiàn)加密與解密詳解的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C#中改變DataGridView控件邊框顏色的方法

    C#中改變DataGridView控件邊框顏色的方法

    這篇文章主要介紹了C#中改變DataGridView控件邊框顏色的方法,默認(rèn)的DataGridView邊框顏色很丑,本文用編程方法實(shí)現(xiàn)修改DataGridView邊框顏色,需要的朋友可以參考下
    2014-08-08
  • C# DI依賴(lài)注入的實(shí)現(xiàn)示例

    C# DI依賴(lài)注入的實(shí)現(xiàn)示例

    依賴(lài)注入是一種實(shí)現(xiàn)的方法,用于減少代碼之間的耦合,本文主要介紹了C# DI依賴(lài)注入的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣可以了解一下
    2023-12-12
  • WPF字體或內(nèi)容模糊的解決方法

    WPF字體或內(nèi)容模糊的解決方法

    WPF下開(kāi)發(fā)的程序字體模糊,這個(gè)問(wèn)題或許大家都有遇到過(guò),為了解決WPF字體模糊,查閱了各種資料,結(jié)果偶然發(fā)現(xiàn)是自己疏忽了一些細(xì)節(jié)造成的,具體是什么細(xì)節(jié)呢,通過(guò)下面的這篇文章來(lái)一起看看吧,有需要的朋友們可以參考借鑒。
    2016-12-12

最新評(píng)論

太和县| 客服| 杨浦区| 比如县| 青神县| 凤阳县| 梨树县| 大足县| 津南区| 南阳市| 米林县| 大悟县| 平安县| 竹溪县| 江津市| 富平县| 临潭县| 吉隆县| 商丘市| 武义县| 安义县| 咸丰县| 多伦县| SHOW| 阿拉尔市| 威远县| 怀集县| 青神县| 潜江市| 霸州市| 固原市| 绥江县| 南京市| 剑川县| 泉州市| 苏州市| 定结县| 宜阳县| 太仆寺旗| 汕头市| 肥西县|