低级C低级WindowsAPI钩子.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
低级C低级WindowsAPI钩子

低级C低级WindowsAPI钩子 低级C低级WindowsAPI钩子拦截键盘输入Pub-Date : 2010-10-01 18:40:02  信息来源:互联网      编辑:     审核:Admin   摘要在家里,婴儿和其它动物可能会重击你的计算机键盘,致使出现各种无法预言的成果。本文中的这个C#示例利用程序将向你展示怎么基于Windows钩子API来实现在击键造成任何迫害之前捕捉它们。    。    一.简介。    。   猫和婴儿有很多共同之 处。他们都喜爱吃家中养植的植物,都非常厌恶关门。他们也都爱摆弄你的键盘,成果是,你正发送给你的老板的电子邮件可能是以半截句子发送出去的,你的Excel帐户也被参加了一些乱七八糟的内容,并且你还无留意到,当打开Windows资源管理器时,若干文档已经被移到了回收站!。    。   其解决计划是,开发一个利用程序实现如下功效:只要键盘处于要挟状况你就可以进行切换,并确保任何键盘输入活动都不会造成迫 害。本文想展示怎么使用一种低级WindowsAPI钩子在一个C#利用程序中实现键盘操纵。下图是本文示例程序的一个运行快照。    。    低级C低级WindowsAPI钩子拦截键盘输入。    二.背景。    。   实在,已经存在许多有关于Windows钩子的文章和示例代码,并且已经有人编写过与本文几乎一样的C++ 示例程序。然而,当我搜索相应的C#利用程序的源码时,却找到极少的.NET示例,而且无一个程序能够提供一个方便的自包含的C#类。    。   .NET框架能够使你以托管方法来存取你最常使用的键盘事件(通过KeyPress,KeyUp和KeyD own)。可惜的是,这些事件都不能被用来停止Windows组合键(如/。    。   本文的想法在操纵系统级上捕捉键盘事件而不 是通过框架级来实现。为此,利用程序需要使用WindowsAPI函数来把它自身添加到利用程序钩子链中以监听来自操纵系统的键盘消息。当它收到这种类型的消息时,该利用程序能够选择性地传送消息,或者进行正常处理,或者弹压它以便不再有其它利用程序(包含Windows)来影响它。本文正是想说明实在现机理。    。    低级C低级WindowsAPI钩子拦截键盘输入。   然而,请留意,本文中的代码仅适用于基于NT版本的Windows(NT,2000和XP),并且无法使用这个方法来停用Ctr l+/。    。    三.使用代码。    。   为了易于使用,我在本文中提供了两个独立的 zip文档。一个仅包含KeyboardHook类,这是本文介绍的重点。另一个是一个完整的微软VisualC#2005ExpressEdition利用程序工程,名叫BabyKeyboardBash,它实现显露击键的名字或彩色的形状以响应于击键。    。    四.实例化类。    。   键盘钩子是通过keyboard.cs中的KeyboardHo ok类来建立和管理的。这个类实现了IDisposable接口,因此,实例化它的最简单的方法是在利用程序的Main()方法中使用using关键字来封装Application.Run()调用。这将确保只要该利用程序开始即建立钩子并且,更重要的是,当该利用程序结束时立即使这个钩子失效。    。   这个类引发一个事件来警告利用程序已经有键被按下,因此主表单能够存取在Main()方法中创立的KeyboardHook实例就显得非常重要;最简单的方法是把这个实例存储在一个公共成员变 量中。    。   KeyboardHook提供了三种结构器来启用或禁用某些设置 :。    。   ·KeyboardHook():捕捉全部击键,无任何内容传送到Windows或另 外的利用程序。    。   ·KeyboardHook(stringparam):把参数串转换为Parameters枚举中的值之一,然后调用下面的结 构器:。    。   ·KeyboardHook(KeyboardHook.Parametersenum):根据从Parameters枚举中选择的值的不同,分别启 动下列设置:。    。   oParameter s.Allow/。    。   oParameters.AllowWindowsKey:允许用户使用Ctrl+Esc或一种Windows键存取任务栏和开 始菜单。    。   oParameter s.Allow/。    。   oParameters.PassAllKeysToNextApp:如果该参数为true,那么全部的击键将被传送给任何其它监听利用程序(包含W indows)。    。   当击键继续被键盘钩子捕捉时,启用/或Windows键

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档