商周瓷器形成原因:钩子如何拦截消息?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 04:12:40
(请给比较详细的答案或相关资源,网站

对于每一个WINDOWS消息.都有一串函数进行处理,这些函数以链的形式存在.
钩子可以向链添加处理函数,也就是将处理函数的指针加入到链的头部.每当这个消息再出现,刚刚添加的钩子函数优先处理这个消息,还可以决定是否让后续的处理函数得到该消息.这就是所谓的消息拦截.
钩子函数的通用格式:
LRESULT CALLBACK ProcName(int nCode,
WPARAM wParam,
LPARAM lParam);
有几个重要的API
1.挂钩:HHOOK SetWindowsHookEx(int idHook,
HOOKPROC lpfn,
HINStance hMode,
DWORD dwThreadID);
2.解除钩子:BOOL UnhookWindowsHookEx(HHOOK hhk);
3.把消息传给下一个函数:
LRESULT CallNextHookEx(HHOOK hhk,
int nCode,
WPARAM wParam,
LPARAM lParam);

MSDN
搜索SetWindowsHookEx
有很详细的说明
并有例子