系統鉤子介紹
2007/1/16 22:53:54
一、 介紹
本文將討論在.NET應用程序中全局系統鉤子的使用。為此,我開發了一個可重用的類庫并創建一個相應的示例程序(見下圖)。
你可能注意到另外的關于使用系統鉤子的文章。本文與之類似但是有重要的差別。這篇文章將討論在.NET中使用全局系統鉤子,而其它文章僅討論本地系統鉤子。這些思想是類似的,但是實現要求是不同的。
二、 背景
如果你對Windows系統鉤子的概念不熟悉,讓我作一下簡短的描述:
?一個系統鉤子允許你插入一個回調函數-它攔截某些Windows消息(例如,鼠標相聯系的消息)。
?一個本地系統鉤子是一個系統鉤子-它僅在指定的消息由一個單一線程處理時被調用。
?一個全局系統鉤子是一個系統鉤子-它當指定的消息被任何應用程序在整個系統上所處理時被調用。
已有若干好文章來介紹系統鉤子概念。在此,不是為了重新收集這些介紹性的信息,我只是簡單地請讀者參考下面有關系統鉤子的一些背景資料文章。如果你對系統鉤子概念很熟悉,那么你能夠從本文中得到你能夠得到的任何東西。
?關于MSDN庫中的鉤子知識。
?Dino Esposito的《Cutting Edge-Windows Hooks in the .NET Framework》。
?Don Kackman的《在C#中應用鉤子》。
本文中我們要討論的是擴展這個信息來創建一個全局系統鉤子-它能被.NET類所使用。我們將用C#和一個DLL和非托管C++來開發一個類庫-它們一起將完成這個目標。
三、 使用代碼
在我們深入開發這個庫之前,讓我們快速看一下我們的目標。在本文中,我們將開發一個類庫-它安裝全局系統鉤子并且暴露這些由鉤子處理的事件,作為我們的鉤子類的一個.NET事件。為了說明這個系統鉤子類的用法,我們將在一個用C#編寫的Windows表單應用程序中創建一個鼠標事件鉤子和一個鍵盤事件鉤子。
這些類庫能用于創建任何類型的系統鉤子,其中有兩個預編譯的鉤子-MouseHook和KeyboardHook。我們也已經包含了這些類的特定版本,分別稱為MouseHookExt和KeyboardHookExt。根據這些類所設置的模型,你能容易構建系統鉤子-針對Win32 API中任何15種鉤子事件類型中的任何一種。另外,這個完整的類庫中還有一個編譯的HTML幫助文件-它把這些類歸檔化。請確信你看了這個幫助文件-如果你決定在你的應用程序中使用這個庫的話。
MouseHook類的用法和生命周期相當簡單。首先,我們創建MouseHook類的一個實例。
mouseHook = new MouseHook();//mouseHook是一個成員變量
接下來,我們把MouseEvent事件綁定到一個類層次的方法上。
mouseHook.MouseEvent+=new MouseHook.MouseEventHandler(mouseHook_MouseEvent);
// ...
private void mouseHook_MouseEvent(MouseEvents mEvent, int x, int y){
string msg =string.Format("鼠標事件:{0}:({1},{2}).",mEvent.ToString(),x,y);
AddText(msg);//增加消息到文本框
}
為開始收到鼠標事件,簡單地安裝下面的鉤子即可。
mouseHook.InstallHook();
為停止接收事件,只需簡單地卸載這個鉤子。
mouseHook.UninstallHook();
你也可以調用Dispose來卸載這個鉤子。
在你的應用程序退出時,卸載這個鉤子是很重要的。讓系統鉤子一直安裝著將減慢系統中的所有的應用程序的消息處理。它甚至能夠使一個或多個進程變得很不穩定。因此,請確保在你使用完鉤子時一定要移去你的系統鉤子。我們確定在我們的示例應用程序會移去該系統鉤子-通過在Form的Dispose方法中添加一個Dispose調用。
protected override void Dispose(bool disposing) {
if (disposing) {
if (mouseHook != null) {
mouseHook.Dispose();
mouseHook = null;
}
// ...
}
}
使用該類庫的情況就是如此。該類庫中有兩個系統鉤子類并且相當容易擴充。
四、 構建庫
這個庫共有兩個主要組件。第
下一頁
返回列表
返回首頁
主站蜘蛛池模板:
伊人色综合网一区二区三区|
国产精品国产精品国产专区不卡
|
国产精品日韩欧美久久综合|
一个人看的www免费在线视频|
日本无卡无吗在线|
亚洲专区一路线二|
欧美综合区自拍亚洲综合天堂|
免费的一级黄色片|
美女扒开尿囗给男人玩的动图|
国产在线国偷精品免费看|
你懂的在线视频|
国内精品久久久久久久影视|
ssswww日本免费网站片|
成人欧美一区二区三区的电影
|
欧美人与动性行为视频|
亚洲爆乳无码专区www|
粉嫩虎白女P虎白女在线|
国产a级黄色片|
麻豆麻豆必出精品入口|
国产精品99无码一区二区|
97精品人妻一区二区三区香蕉|
小情侣高清国产在线播放|
中文字幕亚洲欧美|
日本人的色道免费网站|
久久这里有精品视频|
欧美三级日韩三级|
亚洲国产精品yw在线观看|
波多野结衣中文丝袜字幕|
免费国产va在线观看视频|
精品国产乱码久久久久久1区2区|
国产91热爆ts人妖在线|
视频在线观看一区|
国产在线a免费观看|
成人免费福利视频|
国产精品v欧美精品v日韩精品|
69国产精品视频免费|
国内精品久久久久久影院|
99re热精品视频国产免费|
天堂va视频一区二区|
free性欧美另类高清|
女人张开腿让男人插|