HOOK钩子类
来源:互联网 发布:在淘宝上买电动汽车 编辑:程序博客网 时间:2024/06/06 20:51
</pre><pre name="code" class="csharp"> public class KeyHook { [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)] public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)] public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)] public static extern bool UnhookWindowsHookEx(int idHook); public delegate int HookProc(int nCode, int wParam, IntPtr lParam); // Fields private static int hKeyboardHook; private HookProc KeyboardHookProcedure; public const int WH_KEYBOARD_LL = 13; // Methods static KeyHook() { hKeyboardHook = 0; } private int code = 0; public KeyHook() { this.Start(); } public KeyHook(int keyCode) { this.Start(); this.code = keyCode; } private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam) { KeyboardHookStruct struct2 = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct)); KeyEventArgs args = new KeyEventArgs((Keys)struct2.vkCode); Console.WriteLine(args.KeyValue.ToString()); //屏蔽 //91,92 ==> win键 //93 ==> app键 // 9 ==> tab 键 //18 ==> alt 键 if (args.KeyValue == code || args.KeyValue == 9 || args.KeyValue == 91 || args.KeyValue == 92 || args.KeyValue == 93) { return 1; } return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam); } public void Hook() { this.Start(); } public void UnHook() { this.Stop(); } public void Start() { if (hKeyboardHook == 0) { this.KeyboardHookProcedure = new HookProc(this.KeyboardHookProc); Module m = Assembly.GetExecutingAssembly().GetModules()[0]; IntPtr p = Marshal.GetHINSTANCE(m); hKeyboardHook = SetWindowsHookEx(13, this.KeyboardHookProcedure, p, 0); if (hKeyboardHook == 0) { this.Stop(); Log.WriteErLog("KeyHook:SetWindowsHookEx ist failed."); //throw new Exception("SetWindowsHookEx ist failed."); } } } public void Stop() { bool flag = true; if (hKeyboardHook != 0) { flag = UnhookWindowsHookEx(hKeyboardHook); hKeyboardHook = 0; } if (!flag) { Log.WriteErLog("KeyHook:SetWindowsHookEx ist failed."); //throw new Exception("UnhookWindowsHookEx failed."); } } ~KeyHook() { this.Stop(); } [StructLayout(LayoutKind.Sequential)] public class KeyboardHookStruct { public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; public KeyboardHookStruct() { } } }
0 0
- HOOK钩子类
- [转]PHP hook钩子类
- 钩子(Hook)
- hook(钩子)
- 钩子HOOK
- 钩子(hook)
- 钩子HOOK
- 钩子HOOK
- 钩子(Hook)
- 钩子 (Hook) Hook解释
- Hook钩子攻略
- Hook钩子攻略
- [转载]Hook钩子攻略
- 钩子(hook)
- 关于钩子(Hook)函数
- HOOK钩子详细介绍
- Hook钩子攻略
- 关于钩子函数HOOK
- 音频编解码标准G.711与G.729
- eclipse maven plugin 插件 安装 和 配置
- jQuery EasyUI datagrid本地分页
- 类之间的关系:泛化,依赖,关联,聚合,组合,实现
- 【VB.NET2010】自旋在单线程上的应用
- HOOK钩子类
- iOS开发中plist文件的创建与简单读取(一)
- Yii实现MySQL多库和读写分离
- MyEclipse编译报:javaScript Validator错误
- 手机如何使用OpenVPN提供的网络
- Windbg蓝屏dump出来后的分析过程
- 如何来学习ecshop 进行ecshop二次开发
- JProbe资源
- 迭代删除(Iterator.remove())时的java.lang.IllegalStateException原因及解决办法