b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

全局钩子_全局钩子c语言_解除全局钩子(2)

电脑杂谈  发布时间:2017-01-09 22:00:59  来源:网络整理

或者说是系统钩子

原理就是只有DLL才可以做到不同进程访问同一段代码,

WINDOWS提供的API要求必须DLL。至于为何要截获输入法,这是本程序的需求,不是截获屏幕输出

而是截获键盘输入。

您是指输入法程序吗?本人设计了一个输入法“3jaja.ime"程序,您可以在下搜索“3++输入法”下载软件,或在:下载。全局钩子欢迎各位高手试用并提出宝贵意见。

如果要在Windows下安装输入法,用ImmInstallIME(LPCTSTRlpszIMEFileName,LPCTSTRlpszLayoutText)函数即可在Windows任务档"EN"菜单中加入自已的输入法。

至于全局钩子必须为DLL形式,好象在《WIN2K核心编程》一书中有详细介绍,大概是进程/线程通信以及进程地址之间的关系。每个进程都有自己独立的地址空间,要导入DLL到自己的运行空间,但是进程之间是独立的……云云。我想不起来了!汗!老也。全局钩子

我有几个简单的问题,可惜不会,希望高手指点。新手们可以不重复我的痛苦之路。

一、是我的程序调用一个HookDLL(该DLL进入时installHook,退出时uninstallhook),挂上全局钩子以后,如果这时使程序暂停,可以截取各类消息,我的程序的主要目的就是挂上钩子。但一旦挂上程序正常退出后,这时钩子无法截取消息了。(即不再写入我指定的文件了)。这说明该DLL只要在我的程序调用时才能执行,一旦我程序退出,它也结束了。而我的目的是让它一直挂上,请问高手该如何办?

二、我的程序挂上钩子后,截取消息的钩子过程无法调试,我只好设了几个输入语句查看结果。请问如何对截取的消息进行查看,如何对钩子过程进行调试。我相信这也是许多新手面临的问题。谢谢各位!另:我觉得截取汉字,如果是IE里的,好像有另一种办法

?id=288

在WinNT/XP下,各进程空间都是独立的,这就是所谓的“进程墙”。意思就是你自己的进程空间内的代码不能访问别人的进程空间,这也是WinNT/XP比9x稳定的一个重要原因,9x下系统内存空间以外的空间是可以被任何进程所访问的。不过使用DLL就不同了,DLL只内存中只有一份实例,不过,它可以被映射到载入它的进程的进程自己的空间中去,由于全局钩子要被所有程序调用,所以,全局钩子中的代码必须能访问所有进程自己的空间,所以,它就必须被是映射到所有进程的属于各自的进程空间中,所以,全局的钩子必须存在于DLL中,这样才能随DLL被映射,这也即所谓的“打破进程墙”

我明白了,DLL是每个进程空间里存在的,程序退出,DLL也退出。可我听说DLL里设置一个共享段,可以实现数据共享,如果我将钩子设在共享,那是不是DLL不会退出呢?呵呵,请高手指点。另外,楼上的好朋友,消息用SPY听,是VC工具里的SPY么?

关于HOOK必须写成DLL:

因为消息是线程所有,hook了某线程的消息,该线程就会去寻找消息的处理函数,如果在本线程中没有的话,这就需要动态连接到有该消息处理函数的文件。

TOtuiger2003(老虎)DLL的调试

全局钩子c语言_全局钩子_解除全局钩子

?id=17085

对HOOKDLL的调试,被HOOK的消息必须是用于调试的TEST应用程序里的消息。

可以去这里看一看,有完整的解决方案,绝对实用:

一点提示:PostMessage(WM_CHAR,(TCHAR)str&0xFF,0);

PostMessage(WM_KEYDOWN,VK_RETURN,0);中文好像就是靠它们发出来的哟.去截获它们发出的消息.

关于HOOK必须写成DLL:HOOK是MS提供的服务,因为钩子只是每个模块处理前进行处理,所以HOOK的函数需要和正在接收的该函数的模块具有相同的地址空间,WINDOWS的输入有原始输入线程管理,当你用了HOOK,系统在分发消息时,现调用你的消息处理函数。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25252-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 孙萌萌
      孙萌萌

      在中国出现这样的事真是平常而又平常的

    • 翟珂
      翟珂

      让她永远都没有正脸照

    • 邵伯雍
      邵伯雍

      远远不如拉森号或者我们的海口号

    热点图片
    拼命载入中...