键盘全局HOOK问题
各位高手高手高高手,本人在学习HOOK的时候碰到一个奇怪的问题,一直都没有解决,希望各位高手能够帮我看看,不吝赐教,感激不尽。好了,废话不多少。以下是我的问题:系统环境:windows 2003 R2 Standard Edition SP2 (日文版)
编译环境:visual 2003(日文版)
由于小弟我在一家日本的企业工作,所以用的是日文的系统和编译环境,但是我在写程序的时候都尽量避开了日语,所以该程序在中文版或是英文版下编译运行应该是没有问题的。
问 题:我在试验HOOK程序的时候设置了两个全局钩子,其中一个是鼠标全局钩子,一个是键盘全局钩子。在我看来,两个钩子设置的方式方法如出一辙,没有什么 区别,在运行过程中,没有提示任何错误信息,但是鼠标全局钩子确能够正确运行(包括在其他线程下),但是键盘全局钩子的运行效果却像是一个线程钩子一般, 只能在当前线程下使用,在其他线程的时候完全没有一点作用。这个令我百思不得其解。请各位高手帮忙看一下,本人不胜感激。
程序代码全部都在附件中。
程序简介:MouseHookEx 是我写的DLL源代码,(HOOK的实现都是在这个文件下面的)
MouseEx 是我写的应用程序的源代码,(只是简单的建立一个窗体,调用了上面的DLL)
程序功能:1:设置鼠标钩子,捕获鼠标当前位置以及点击左键或是右键的位置,取得鼠标所处窗体的名称。
并将上述信息显示到我建立的窗体上面。
2:设置键盘钩子,捕获键盘信息,并将按键信息输出到一个自定义的文本文档中。
备注:上述钩子不是用来害人的,只是简单的学习而已,本人对这个东西比较感兴趣
HOOK_ex.zip
(180.58 KB)