三
在我們深入開發這個庫之前
這些類庫能用於創建任何類型的系統鉤子
MouseHook類的用法和生命周期相當簡單
mouseHook = new MouseHook();//mouseHook是一個成員變量
接下來
mouseHook
MouseEvent+=new MouseHook MouseEventHandler(mouseHook_MouseEvent);
//
private void mouseHook_MouseEvent(MouseEvents mEventint x int y){
string msg =stringFormat( 鼠標事件:{ }:({ } { }) mEvent ToString() x y);
AddText(msg);//增加消息到文本框
}
為開始收到鼠標事件
mouseHook
InstallHook();
為停止接收事件
mouseHook
UninstallHook();
你也可以調用Dispose來卸載這個鉤子
在你的應用程序退出時
protected override void Dispose(bool disposing) {
if (disposing) {
if (mouseHook != null) {
mouseHookDispose();
mouseHook = null;
}
//
}
}
使用該類庫的情況就是如此
四
這個庫共有兩個主要組件
你可能想知道為什麼我們需要兩個庫
首先是提供一種機制來把一個
int SetUserHookCallback(HookProc userProc
UINT hookID)
typedef void (CALLBACK *HookProc)(int codeWPARAM w LPARAM l)
SetUserHookCallback的第二個參數是鉤子類型
private static extern SetCallBackResults
SetUserHookCallback(HookProcessedHandler hookCallbackHookTypes hookType)
protected delegate void HookProcessedHandler(int codeUIntPtr wparam IntPtr lparam)
public enum HookTypes {
JournalRecord =
JournalPlayback =
//
KeyboardLL =
MouseLL =
};
[
From:http://tw.wingwit.com/Article/program/net/201311/15484.html