c#-全局键盘钩子
来源:互联网 发布:初中视频讲课软件 编辑:程序博客网 时间:2024/06/05 19:23
using System;using System.Collections.Generic;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Diagnostics;namespace WebClick_Tool{ public class KeyPress_o { [StructLayout(LayoutKind.Sequential)] public class KeyBoardHookStruct { public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; } //委托 public delegate int HookProc(int nCode, int wParam, IntPtr lParam); static int hHook = 0; public const int WH_KEYBOARD_LL = 13; //LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,Acrobat Reader会在你截取之前获得键盘。 static HookProc KeyBoardHookProcedure; //设置钩子 [DllImport("user32.dll")] 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")] //调用下一个钩子 public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); [DllImport("kernel32.dll")] public static extern int GetCurrentThreadId(); [DllImport("kernel32.dll")] public static extern IntPtr GetModuleHandle(string name); public static void Hook_Start() { if (hHook == 0) { KeyBoardHookProcedure = new HookProc(KeyBoardHookProc); hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure, GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0); //如果设置钩子失败. if (hHook == 0) { Hook_Clear(); } } } /// <summary> /// 取消钩子事件 /// </summary> public static void Hook_Clear() { bool retKeyboard = true; if (hHook != 0) { retKeyboard = UnhookWindowsHookEx(hHook); hHook = 0; } } public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString()); switch (k) { case Keys.F2: if (kbh.flags == 0) { // 这里写按下后做什么事 //Main.GB = true; MainForm.Fs(FormBorderStyle.FixedSingle); MainForm.StopAll = true; MainForm.DisMes("停止..."); MainForm.Enb(true); } else if (kbh.flags == 128) { //放开后做什么事 } return 1; } } return CallNextHookEx(hHook, nCode, wParam, lParam); } }}
0 0
- c#-全局键盘钩子
- 用c语言编写全局键盘钩子
- HOOK全局键盘钩子
- VC全局键盘钩子
- 全局键盘钩子
- 全局键盘钩子
- 全局键盘钩子(WH_KEYBOARD)
- 全局键盘钩子
- 全局低级键盘钩子
- C#全局键盘钩子
- C#全局键盘钩子
- C#.Net的全局键盘钩子(Hook)技术
- C#.Net的全局键盘钩子(Hook)技术
- C#.Net的全局键盘钩子(Hook)技术
- 设置全局键盘钩子和消息钩子
- .NET的全局键盘钩子
- 键盘"全局钩子"的使用 ..
- 全局键盘钩子开发实例
- Spring 事务总结
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP
- 对p标签嵌套块级元素的思考
- TCP加速锐速SS(ServerSpeeder)破解版一键安装
- 【JAVA】 Android开发之JAVA代码中FloatMath.floor方法过时的最新替代方案。
- c#-全局键盘钩子
- POJ 2385Apple Catching 递推
- IOS7、IOS10设置CISCO ANYCONNECT VPN教程
- http://blog.sina.com.cn/s/blog_1525b95370102wg59.html
- 378. Kth Smallest Element in a Sorted Matrix
- C#-CMD
- HDU5933 (贪心)
- 第九周项目3-稀疏矩阵的三元组表示的实现及应用(1)
- JAVA基础:多态和抽象注意细节