首页 > 其他 > 详细

谈ATL(三)--Word拒绝链接dll

时间:2015-12-30 00:31:40      阅读:224      评论:0      收藏:0      [点我收藏+]

因为工作的原因要开发基于Word2003上的插件,然而使用ATL编写Word2003上的插件需要在添加一个ATL的简单对象,其实可以通过ATL简单对象的添加向导来完成,ATL技术中思想上很多包含了COM的开发思想,机制上也是一种COM机制,这必然涉及到COM运行机制的分析,简单的来说COM分为进程内加载调用和进程外加载调用,两者各有利弊,进程内调用,因为内存是共享的,所以效率高、速度快。但是缺点也是显而易见的,如果COM程序本身存在严重问题,则会直接导致调用者程序崩溃,COM进程外调用与此刚刚相反,不再赘述。Word插件做的就是一种进程内的COM调用,具体的原理不在本篇详谈,会在后面的文章中介绍,所以如果在调试的时候往往因为编写的COM程序有问题而造成打开后整个Word程序崩溃。Word自身有自我保护的功能,它可以检测到上次运行时使程序崩溃的dll,并拒绝加载这个dll,当然,是否拒绝会弹出对话框提示用户,让用户自己选择,然而对于这个功能在给应用者带来福音的同时,给开发者也带来了一些麻烦,弹出的对话框往往被误认为是开发的IDE环境弹出来的,这样程序员如果误选了不再加载的按钮,那么下次无论程序员如何再调试自己的ATL插件程序Word都会因为拒绝加载该项目生成的dll而看不到任何效果,即便采用加断点调试的方式也是无济于事的,原因很简单,问题根本不在你程序本身,也不在IDE环境,问题的根结在于Word拒绝载入dll文件,要解决这个问题的方法只要对症下药即可。

首先打开word,然后选择  “帮助-->关于Microsoft Word”,弹出如下窗口

技术分享

点击“禁用项目”,弹出禁用项目对话框

技术分享

在这里你可以看到之前因为加载而导致程序崩溃的dll,选择该dll,选择“启用”,这样下次再调试程序时就可以顺利加载了。

 

如果在OFFICE 2007或者OFFICE 2010版本上开发,则先点击“Word选项”按钮,如下图:

 技术分享

在弹出的对话框中选择“加载项”标签,然后在右边列表框中找到“禁用的应用程序加载项”

技术分享

在管理的部分选择“禁用项目”,默认为“COM加载项”,然后点击“转到”进入操作界面。

技术分享

选择相应的启动项进行“启用”操作。
技术分享




本文出自 “8403723” 博客,请务必保留此出处http://8413723.blog.51cto.com/8403723/1729780

谈ATL(三)--Word拒绝链接dll

原文:http://8413723.blog.51cto.com/8403723/1729780

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!