去过滤消息,如同
在主消息循环里一样。
(13)WH_SHELL Hook
外壳应用程序可以使用WH_SHELL Hook 去接收重要的通知。当外壳应用程序为激活状
态并且当顶层窗口建立或者销毁时,系统调用WH_SHELL Hook 子程。WH_SHELL 共有5
种情況:
? 只要有top-level、unowned 窗口被产生、起作用、或是被摧毁;
? 当Taskbar 需要重画某个按钮;
? 当系统需要显示关于Taskbar 的一个程序的最小化形式;
? 当目前的键盘布局状态改变;
? 当使用者按Ctrl+Esc 去执行Task Manager(或相同级别的程序)。
按照惯例,外壳应用程序都不接收WH_SHELL 消息。所以在应用程序能够接收
WH_SHELL 消息之前,应用程序必须调用SystemParcomtersInfo function 注册它自己。
2.按使用范围分类
按使用范围分类,主要有线程钩子和系统钩子。线程钩子监视指定线程的事件消息,系
统钩子监视系统中的所有线程的事件消息。因为系统钩子会影响系统中所有的应用程序,所
以钩子函数必须放在独立的动态链接库(DLL)中。
? 如果对于同一事件(如鼠标消息)既安装了线程钩子又安装了系统钩子,那么系统会
自动先调用线程钩子,然后调用系统钩子。
? 对同一事件消息可安装多个钩子处理过程,这些钩子处理过程形成了钩子链。当前钩
子处理结束后应把钩子信息传递给下一个钩子函数。而且最近安装的钩子放在链的开
始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。
? 钩子特别是系统钩子会消耗消息处理时间,降低系统xìng能。只有在必要的时候才安装
钩子,在使用完毕后要及时卸载。
10.7.2 使用钩子函数
使用钩子函数的程序的步骤分为定义钩子函数、安装钩子和卸载钩子这3 步。下面详细
介绍这3 个过程。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·274·
1.定义钩子函数
钩子函数是一种特殊的回调函数。钩子监视的特定事件发生后,系统会调用钩子函数进
行处理。不同事件的钩子
松语文学免费小说阅读_www.16sy.com