windows系统里有提供了十多种钩子,可以用来监控系统与软件之间的消息事件传递.使用这些钩子功能,我们可以用来监控目标程序的事件.
鼠标钩子的作用是拦截用户的鼠标操作,如,移动鼠标,左右键鼠标点击,滚轮滚动等等
万挂作坊模块在鼠标钩子方面提供了两种机制。全局的鼠标钩子 与 线程鼠标钩子
全局的意思是指安装该钩子后将会对整个操作系统都有效,都能拦截到
线程的意思是指安装该钩子后只能对自身进程中的某个线程有效,一般安装在进程的主线程去.

使用 类_钩子.安装鼠标钩子(钩子接口,线程ID) 来安装鼠标钩子.
想要使用鼠标钩子时当然得先把钩子安装上才行,鼠标钩子是作用是用来拦截鼠标事件用的,该钩子的回调接口规范见图上
事件参数可以参考win32消息大全,512=鼠标移动,513=左键按下,514=鼠标弹起.... 本例拦截了鼠标的右键按下与弹起事件.
注意.在程序结束前必需得调用 钩子.卸载所有钩子() 以避免有任何的残留钩子会造成系统死锁等意外问题.另外,全局与线程这两种方式不能同时使用.若同时使用时,只会生效其中之一种.
鼠标钩子的安装,卸载还有接口的规范已在上面的图上!!
键盘钩子的作用是拦截用户的键盘操作,如,键盘按下,键盘弹起等
万挂作坊模块在键盘钩子方面同样提供了两种机制。全局键盘钩子 与 线程键盘钩子
全局的意思是指安装该钩子后将会对整个操作系统都有效,都能拦截到
线程的意思是指安装该钩子后只能对自身程序有效或某个指定的程序有效

类_钩子.安装键盘钩子(钩子接口,线程ID) 与 键盘接口 规范
键盘钩子与鼠标钩子的安装方式差不多,同样的都要在程序要结束时进行卸载掉.
虚拟键码可以见易语言核心库里的那些键常量值.本例会拦截 A键 与 Alt + Tab 组合键.
从上面的鼠标钩子与键盘钩子两个例中子,可以看出,用户对安装钩子与卸载钩子的居体如果运作不需要太了解,只要会安装,并且在程序结束运行前把钩子卸载掉即可。重点全集中在了 钩子接口 子程序上了,钩子安装成功后会把拦截到的数据,传给该子程序来处理。
如一些键盘记录器木马盗号类软件可以用键盘钩子做到的,用户只要对拦截到的键盘码进行转换保存下载即可,用户可以充份的发挥想像对拦截到的数据以不同的需要进行处理……。
与键盘鼠标有关的还有记录钩子与回放钩子.这两个钩子即可以用来做记录用户的鼠标键盘操作,还能进行回放这些操作.

记录回放钩子的钩子接口规范.详细的安装代码见本例源代码.
可以使用记录钩子当键盘钩子来使,可以使用回放钩子进行鼠标键盘模拟操作,但要注意回放钩子在回放鼠标键盘事件时,会锁定用户键盘鼠标的输入.直到回放完后才会解锁.所以一般应避免一次性回放太多的鼠标键盘事件.
其实呢,不管是键盘好,鼠标也好,所有的事件都是用消息来驱动的,如果要想拦截更多的东西,还是使用消息钩子好.
模块里提供两种消息钩子的功能 线程消息钩子 窗口消息钩子
线程消息钩子 是指拦截线程消息队列里的消息数据,对于有些消息使用 发送消息() 的是拦截不到的,因为这类消息是直接发给了窗口消息处理函数
窗口消息钩子 是指拦截发给窗口消息处理函数用的消息,对于使用 投递消息() 所发过来的消息是拦不到的,因为这类消息是被直接投入窗口所属的那个线程消息队列中去了.
基于上述原因,这两个消息钩子大家视需要而使用吧.

线程消息钩子 与 窗口消息钩子 的接口是一样的.
模块里还有提供其它更多的钩子,正因为钩子有这么大的用处,所以很多的软件里或多或少的使用了这些钩子技术.下面还有一个例子是可以枚举出来系统中所有程序安装了的钩子,并且可以卸载掉他们安装的钩子,使他钩子的功能失效.

枚举钩子与卸载钩子
点击下载本节源代码
钩子的作用除了可以拦截消息数据外,最大的好处是可以得到及时的事件时机,在该最佳时机下执行最佳的代码.
常用字符的7位ASCII值
|
Dec Hex Char |
Dec Hex Char |
Dec Hex Char |
Dec Hex Char |
|
32 20 (空格) |
56 38 8 |
80 50 P |
104 68 h |
|
33 21 ! |
57 39 9 |
81 51 Q |
105 69 i |
|
34 22 " |
58 3A : |
82 52 R |
106 6A j |
|
35 23 # |
59 3B ; |
83 53 S |
107 6B k |
|
36 24 $ |
60 3C < |
84 54 T |
108 6C l |
|
37 25 % |
61 3D = |
85 55 U |
109 6D m |
|
38 26 & |
62 3E > |
86 56 V |
110 6E n |
|
39 27 ' |
63 3F ? |
87 57 W |
111 6F o |
|
40 28 ( |
64 40 @ |
88 58 X |
112 70 p |
|
41 29 ) |
65 41 A |
89 59 Y |
113 72 q |
|
42 2A * |
66 42 B |
90 5A Z |
114 72 r |
|
43 2B + |
67 43 C |
91 5B [ |
115 73 s |
|
44 2C , |
68 44 D |
92 5C \ |
116 74 t |
|
45 2D - |
69 45 E |
93 5D ] |
117 75 u |
|
46 2E . |
70 46 F |
94 5E ^ |
118 76 v |
|
47 2F / |
71 47 G |
95 5F _ |
119 77 w |
|
48 30 0 |
72 48 H |
96 60 ` |
120 78 x |
|
49 31 1 |
73 49 I |
97 61 a |
121 79 y |
|
50 32 2 |
74 4A J |
98 62 b |
122 7A z |
|
51 33 3 |
75 4B K |
99 63 c |
123 7B { |
|
52 34 4 |
76 4C L |
100 64 d |
124 7C | |
|
53 35 5 |
77 4D M |
101 65 e |
125 7D } |
|
54 36 6 |
78 4E N |
102 66 f |
126 7E ~ |
|
55 37 7 |
79 4F O |
103 67 g |
127 7F |
注:Dec表示:十进制 Hex表示:十六进制 Char表示:字符
|