ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:63KB ,
资源ID:3125604      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3125604.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(键盘钩子实例.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

键盘钩子实例.doc

1、键盘钩子实例一、界面样式如下: 主要功能如下:安装钩子拦截按键,允许按键有效和无效,可以记录按键,以及取消钩子。二、定义界面控件:label1 标记按键、button1 安装钩子按钮、 button2 取消钩子按钮三、源码1、主界面Form1using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Reflection;using System.Diagnostics;using Mic

2、rosoft.Win32;using WinformHook;namespace WinformHookpublic partial class Form1 : Form/钩子管理对象private KeyboardHookLib _keyboardHook = null;public Form1()InitializeComponent();private void button1_Click(object sender, EventArgs e)/安装钩子_keyboardHook = new KeyboardHookLib();_keyboardHook.InstallHook(this

3、.OnKeyPress);private void button2_Click(object sender, EventArgs e)/取消钩子if (_keyboardHook != null) _keyboardHook.UninstallHook();/ / 客户端键盘捕捉事件/ / 由Hook程序发送的按键信息 / 是否拦截 public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)handle = false; /预设置不拦截任何键if (hookStruct.vkCode = 91)

4、/截获左侧开始win键handle = true;if (hookStruct.vkCode = 92)/ 截获右侧开始win键handle = true;/截获Ctrl+Esc if (hookStruct.vkCode = (int)Keys.Escape /截获alt+f4 if (hookStruct.vkCode = (int)Keys.F4 /截获alt+tab if (hookStruct.vkCode = (int)Keys.Tab /截获F1 if (hookStruct.vkCode = (int)Keys.F1)handle = true;/截获Ctrl+Alt+Dele

5、te if (int)Control.ModifierKeys = (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)handle = true;/如果键AZ if (hookStruct.vkCode = (int)Keys.A /键盘 /键盘处理事件委托,当捕获键盘输入时调用定义该委托的方法 private delegate int HookHandle(int nCode, int wParam, IntPtr lParam);/客户端键盘处理事件public delegate void ProcessKeyHandle(HookS

6、truct param, out bool handle);/接收SetWindowsHookEx返回值 private static int _hHookValue = 0;/勾子程序处理事件 private HookHandle _KeyBoardHookProcedure;/Hook结构 StructLayout(LayoutKind.Sequential)public class HookStructpublic int vkCode;public int scanCode;public int flags;public int time;public int dwExtraInfo;

7、/设置钩子 DllImport(“user32.dll“)private static extern int SetWindowsHookEx(int idHook, HookHandle lpfn, IntPtr hInstance, int threadId);/取消钩子 DllImport(“user32.dll“, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)private static extern bool UnhookWindowsHookEx(int idHook);/调用下一个钩子

8、 DllImport(“user32.dll“)private static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);/获取当前线程 DllImport(“kernel32.dll“)private static extern int GetCurrentThreadId();/Gets the main module for the associated process. DllImport(“kernel32.dll“)private static extern IntPtr G

9、etModuleHandle(string name);private IntPtr _hookWindowPtr = IntPtr.Zero;/构造器 public KeyboardHookLib() /外部调用的键盘处理事件 private static ProcessKeyHandle _clientMethod = null;/ / 安装勾子 / / 外部调用的键盘处理事件 public void InstallHook(ProcessKeyHandle clientMethod)_clientMethod = clientMethod;/ 安装键盘钩子 if (_hHookValue

10、 = 0)_KeyBoardHookProcedure = new HookHandle(OnHookProc);_hookWindowPtr = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);_hHookValue = SetWindowsHookEx(WH_KEYBOARD_LL,_KeyBoardHookProcedure,_hookWindowPtr,0);/如果设置钩子失败 if (_hHookValue = 0) UninstallHook();/取消钩子事件 public void Unins

11、tallHook()if (_hHookValue != 0)bool ret = UnhookWindowsHookEx(_hHookValue);if (ret) _hHookValue = 0;/钩子事件内部调用调用方法转发到端应用 private static int OnHookProc(int nCode, int wParam, IntPtr lParam)if (nCode = 0)/转换结构 HookStruct hookStruct = (HookStruct)Marshal.PtrToStructure(lParam, typeof(HookStruct);if (_clientMethod != null)bool handle = false;/调用客户提供的事件处理程序 _clientMethod(hookStruct, out handle);if (handle) return 1; /表示拦截键盘退出 return CallNextHookEx(_hHookValue, nCode, wParam, lParam);

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。