C 全域性滑鼠鍵盤Hook 備查

2022-02-07 08:31:16 字數 3541 閱讀 5783

using system;

using system.collections.generic;

using system.reflection;

using system.runtime.interopservices;

using system.text;

using system.windows.forms;

namespace dciengine.framework.snap

//裝置鉤子的函式

[dllimport("user32.dll ", charset = charset.auto, callingconvention = callingconvention.stdcall)]

public static extern int setwindowshookex(int idhook, hookproc lpfn, intptr hinstance, int threadid);

//卸下鉤子的函式

[dllimport("user32.dll ", charset = charset.auto, callingconvention = callingconvention.stdcall)]

public static extern bool unhookwindowshookex(int idhook);

//下乙個鉤掛的函式

[dllimport("user32.dll ", charset = charset.auto, callingconvention = callingconvention.stdcall)]

public static extern int callnexthookex(int idhook, int ncode, int32 wparam, intptr lparam);

[dllimport("user32 ")]

public static extern int toascii(int uvirtkey, int uscancode, byte lpbkeystate, byte lpwtranskey, int fustate);

[dllimport("user32 ")]

public static extern int getkeyboardstate(byte pbkeystate);

public delegate int hookproc(int ncode, int32 wparam, intptr lparam);

///  

///   墨認的建構函式構造當前類的例項並自動的執行起來.

///  

public keybordhook()

//析構函式.

~keybordhook()

public void start()}}

public void stop()

//如果卸下鉤子失敗

if (!(retkeyboard)) throw new exception("unhookwindowshookex   failed. ");

}private int keyboardhookproc(int ncode, int32 wparam, intptr lparam)

//引發onkeypressevent

if (onkeypressevent != null && wparam == wm_keydown)

}//引發onkeyupevent

if (onkeyupevent != null && (wparam == wm_keyup || wparam == wm_syskeyup))

}return callnexthookex(hkeyboardhook, ncode, wparam, lparam);}}

///  

///   這個類可以讓你得到乙個在執行中程式的所有滑鼠事件

///   並且引發乙個帶mouseeventargs引數的.net滑鼠事件以便你很容易使用這些資訊

///  

public class mousehook

//宣告滑鼠鉤子的封送結構型別

[structlayout(layoutkind.sequential)]

public class mousehookstruct

//裝置鉤子的函式

[dllimport("user32.dll ", charset = charset.auto, callingconvention = callingconvention.stdcall)]

public static extern int setwindowshookex(int idhook, hookproc lpfn, intptr hinstance, int threadid);

//卸下鉤子的函式

[dllimport("user32.dll ", charset = charset.auto, callingconvention = callingconvention.stdcall)]

public static extern bool unhookwindowshookex(int idhook);

//下乙個鉤掛的函式

[dllimport("user32.dll ", charset = charset.auto, callingconvention = callingconvention.stdcall)]

public static extern int callnexthookex(int idhook, int ncode, int32 wparam, intptr lparam);

public delegate int hookproc(int ncode, int32 wparam, intptr lparam);

///  

///   墨認的建構函式構造當前類的例項.

///  

public mousehook()

//析構函式.

~mousehook()

public void start()}}

public void stop()

//如果卸下鉤子失敗

if (!(retmouse)) throw new exception("unhookwindowshookex   failed. ");

}private int mousehookproc(int ncode, int32 wparam, intptr lparam)

//從**函式中得到滑鼠的資訊

mousehookstruct mymousehookstruct = (mousehookstruct)marshal.ptrtostructure(lparam, typeof(mousehookstruct));

mouseeventargs e = new mouseeventargs(button, clickcount, mymousehookstruct.pt.x, mymousehookstruct.pt.y, 0);

onmouseactivity(this, e);

}return callnexthookex(hmousehook, ncode, wparam, lparam);}}

}

C 全域性滑鼠鍵盤Hook

原文出自 using system using system.collections.generic using system.reflection using system.runtime.interopservices using system.text using system.windows...

如何在C 中使用全域性滑鼠 鍵盤Hook

c dllimport user32.dll charset charset.auto,callingconvention callingconvention.stdcall,setlasterror true private static extern int setwindowshookex i...

通用滑鼠鍵盤

該程式通過並行機制處理滑鼠和鍵盤的訊息,為了簡化程式裁減了一些 該程式可用為基礎在該程式上新增 可用於文字編輯,遊戲和其他滑鼠鍵盤通用的程式.include include include include include union regs regs unsigned size void far ...