描述:
帮一个同事问问题,vc的dlg中调了一个第三方控件。控件可使鼠标失去作用。如果是程序正常退出,一切ok,鼠标功能恢复正常。如果从任务管理器中结束此进程,会使这个进程的宿主中鼠标失效:在vc的ide中debug运行,从任务管理器中结束此进程,会使ide中鼠标失效;在release文件夹下运行release版的exe,从任务管理器中结束此进程,会使release文件夹中鼠标失效...
我是第一次在此版问问题,没太用过activex控件。但从任务管理器的角度看,我实在无法想通,难道terminateprocess没释放他嘛?
第三方控件中似乎还调用了某个其自带的dll,而且此公司不愿提供任何形式的修改,所以这里希望能在不修改控件的情况下解决此问题。
这种测试方法发现的问题,是有点bt,但也是有可能发生的。望高手赐教!
不知问题是否说清,欢迎提问!
解决方案1:
鼠标无用是指是什么呢?是没有看见了还是不能点击呢?
肯定是控件中做了全局的鼠标勾子吧。退出的时候没有清掉。或者是捕捉了鼠标值吧。
资料明确指出terminateprocess()函数是不会释放资源的,所以它不做任何善后工作,不建议使用
解决方案3:terminateprocess是有这种问题,所以不要乱用
解决方案4:局部鼠标钩子
解决方案5:是安装了鼠标钩子,你强行结束但是没有卸载钩子,但是钩子列表里却存在,他就要call他的回调函数,但是回调函数已经被你结束掉了。所以他传不下来了,测试方法你按Ctrl+Alt+Del试试鼠标出不出的来