*****HOOK的使用问题问题****
我现在用HOOK技术来做界面,我的做法是在DLL中用一个函数来安装一个局部钩子,比如;
void AppendSkin()
{
hWndProc=SetWindowsHookEx( <钩子类型> , NewWndProc,NULL,GetCurrentThreadId()); //仅HOOK当前线程
}
然后导出AppendSkin给用户使用,当用户调用AppendSkin这个函数时,我的DLL就注入该用户的进程,然后拦截消息,我应该使用的钩子类型是那一个呢?或者那几个比较好?我开始使用WH_CALLWNDPROC类型的来拦截,主要是得到每个窗口的句柄就好办,无论是新建立的还是动态建立的窗口,得到窗口句柄后使用子类化对每一类型的窗口修改其窗口过程,进行自绘,大家说这中方式可取吗?我完全使用SDK方式,高手大虾们给小弟些意见,谢谢。
[解决办法]
呵呵...移除钧子最好是手工的,不然你HOOK到的那些窗口,只要有一个窗口产生WM_DESTROY消息,你的钩子就被移除了,这样还有其它被HOOK到的窗口怎么办呢?
一般把移除HOOK放在CWinApp::ExitInstancle函数中来处理.