Entries

笔记:LowLevel挂钩的使用

我们经常希望在自己的程序中监听用户的鼠标或键盘输入,以此来确定用户在干什么……
但对于.Net(主要指C#和VB.Net的情况,这里不包括托管/非托管C++)和VB6应用程序来说,由于不能生成原生DLL(或者操作起来很麻烦),使用普通的鼠标和键盘挂钩是不行的。

但我们可以用LowLevel挂钩来实现这个目的。
LowLevel挂钩有两个,分别是WH_KEYBOARD_LL和WH_MOUSE_LL。

和一般的全局挂钩不同,LowLevel挂钩的处理过程是在安装挂钩的进程空间中执行的(因此我们可以在相关资料中看到关于“LowLevelHooksTimeout”的说明),并非插入其它进程的空间——
所以,作为一个类似于进程内挂钩的全局挂钩,在使用SetWindowsHookEx进行安装的时候, 模块Handle和线程ID都要置空……

不过有一个地方我很在意,不知道为什么我找到的文章都传入了模块Handle参数,但在我的实验中传入模块Handle会导致无任何“异常”地失败。
引用此文章(FC2博客用户)
http://shinron4.blog126.fc2blog.us/tb.php/26-a287db6a

引用

留言

发表留言

发表留言
只对管理员显示

Appendix

自我介绍

优雅的神棍 / Elegant Tales

Author:优雅的神棍 / Elegant Tales
神棍你好,神棍再见。

最新引用

QR

QR

羔羊们啊

加为好友

和此人成爲好友

搜寻栏