问题描述
通过DLL方式,使用全局键盘钩子(WH_KEYBOARD_LL),运行程序后,键盘钩子有效,但大约15分钟后,键盘钩子就失效了。把界面从CHtmlView换成CView后,就一切正常。恳请哪位大侠提点一点,小弟先谢过。
解决方案
解决方案二:
帮顶
解决方案三:
多谢热心的cloudgamertabby大大,问题已经解决,是自己的功力不够造成的失误,为帖子完整,把问题说一下。程序结构:MFC程序以DLL的方式调用全局键盘钩子症状:当界面用CVIEW类时,钩子正常运行.但当用CHtmlView做界面时,运行一会后钩子自动失效。原因如下:在DLL的入点函数线程退出的时候放了一条卸下钩子的语句(用***...标识了),具体如下:BOOLAPIENTRYDllMain(HMODULEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){thisModule=(HINSTANCE)hModule;//保存DLL的句柄switch(ul_reason_for_call){caseDLL_PROCESS_ATTACH:break;caseDLL_THREAD_ATTACH:break;caseDLL_PROCESS_DETACH:break;caseDLL_THREAD_DETACH:***(就是这条语句造成的)if(Hook!=NULL)UnhookWindowsHookEx(Hook);//DLL退出时清除钩子break;}returnTRUE;}---------------------------------------------------------------------------------------------------后来经测试得知,使用CHtmlView类时,装载页面后,会自动不定时出现多次DLL卸载的事件。希望有人能解答一下,THANKSALOT.
解决方案四:
该回复于2008-05-09 11:14:22被版主删除
解决方案五:
好像没那么简单,呵呵.