如果我通过COM Interop启动word应用程序的实例,则会在后台启动Winword.exe实例。如果我随后从Windows资源管理器加载Word文档,它将加载到通过COM Interop调用创建的正在运行的Winword.exe进程中。
当我的应用程序关闭COM Interop Application对象时(因为它已完成),从Windows资源管理器加载到它的所有文档也会关闭。
有没有办法阻止“原生”Microsoft Word重新使用通过COM Interop生成的Winword.exe进程?
更新:企业环境因此无法在其他用户帐户下运行。
更新:Word版本的范围从大多数用户计算机上的2003到其他用户的2010年。
更新:所描述的解决方法On this KB仅部分适用,因为它不适用于从Windows资源管理器打开文档。
答案 0 :(得分:3)
没有一种简单/优雅的方法可以做到这一点。 (至少不是我在过去几年里找到的那个)。但根据您的情况,可能会有适合该法案的特定解决方法。
我已经从一个与真实用户登录的帐户不同的帐户调用了COM Interop。到目前为止,这是可靠的。
这会为你的场景做点什么?如果没有,请分享您的方案。另外,你编写的Word是什么版本的?
答案 1 :(得分:3)
最好是你的应用程序尝试通过GETOBJECT检索加载的实例,如果失败,通过COM启动实例,当你准备卸载时,只需检查任何加载的文件,如果有的话你没有加载,不卸载,让用户这样做。
如果没有,则正常卸载单词。
答案 2 :(得分:1)
有各种方法可以做到这一点。其中一个是在通过COM Interop关闭应用程序之前。查看打开的文档。通过保留通过应用程序打开的文档的记录,仅关闭应用程序打开的那些文档。如果在关闭每个单词文档后文档的数量为零,则关闭单词应用程序,否则让它保持打开状态。
我希望上述想法可以解决您的问题。如果需要进一步的帮助,请告诉我。