SetWindowsHookEx步骤

Python036

SetWindowsHookEx步骤,第1张

以下内容我在你的另外一个类似问题中已经回答, 这里将其再重复一遍, 同时作一些补充!

以下全部手打, 自认为写的很认真,很详细, 呵呵, 如果还有不明白随时欢迎

提出来!

首先说一句, 能够调用WIN32API的编程语言很多, 例如汇编, Fortran, VB, C, Java, 甚至脚本语言matlab, ruby等, 不过原理都是一样的, 这里就以C / C++ 来为例吧

-------------------

SetWindowsHookEx一般都是写在你要使用Hook的地方, 在进一步解释之前先简略说明一下Hook相关情况

-------------------

钩子有局部和远程两种类型, 与钩子相关的函数有:

1. 建立钩子:SetWindowsHookEx, 其四个参数分别为钩子类型, 钩子函数地址, 钩子函数所在DLL的实例句柄,安装钩子后想监控的线程的ID号, 返回参数为钩子句柄

2. UnhookWindowsHookEx, 参数只有一个,为要卸载的钩子句柄

3. 钩子函数(名称任意), 三个参数, 具体意义与钩子类型有关

这里以一个例子说明一下:比如你想写一个程序, 当鼠标移到哪里时就在主程序中显示鼠标所在窗口的名称

--------------------

(1)如果鼠标只是局限在窗口内, 那么以上1, 2, 3三个函数均写在运行的主程序中, 比如函数1可以写在按下某个按钮的消息响应函数中,函数 2 写在松开按扭的消息响应函数中,函数 3 只要不写在别的函数中就行, 因为它本生就是一个要定义的独立函数

(2)如果鼠标可以在屏幕任意位置移动, 那么以上函数1, 2位置同(1), 但函数3要写在一个另外写的DLL里, 因为此时安装的是全局钩子, 为了达到获取窗口名称的目的, 在DLL里可能还要做一些其他工作,比如设置共享段, 关于这些这里不细说了

------------------------

关于钩子,以上只是简单说了一下, 不过, 使用钩子确实也很简单, 因为主要的工作还是在钩子函数里

------------------------

------------------------

------------------------

关于钩子的使用其实真的很简单, 应该说 WIN32编程 其实真的很简单, 更进一步说, 不用动脑筋写算法只用熟练语法的编程 都很简单, 这里当然也包括钩子的应用啦 :)

说到这里忍不住发表一点题外话, 编程多年, 走过很多弯路, 体会很多, 关于编程, 其实学问很大, 小到学语法, 大到算法, 应用, 架构等等, 作为一门计算机科学, 与物理, 数学等有关系的分枝还有很多, 还有与电子相关的专业等, 内容庞杂

因此, 如果你真想学点东西, 不要局限在写一个有特殊用途的桌面程序,也不要整天沉浸在各种语言,语法中, 最主要的是不要贪多! 明确自己学编程到底想做什么, 是写软件, 开发游戏, 还是搞网络, 还是做算法, 还是解决理工,数学, 电子问题

打好基础,明确目标, 就好好钻研吧, 不要什么都学, 但什么都不精

扯远了, 说不定你本生就已经很厉害了, 我反倒显得有些班门弄斧了, 不过都是真实体会, 不管对你有没有用, 再一次 Good luck!

附: [email protected]

01. ruby on rails初体验。http://www.javaeye.com/post/170352

02. 详解用radrails调试rails应用程序。http://www.javaeye.com/topic/40548

在javaeye里面 有国内最专业的ruby on rails的解答和教程,而且现在的javaeye就是用ruby on rails重写的.

希望我的回答对你有帮助,加油,通知!

Welcome to the fantastic ruby world!