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 ...