停止Microsoft Word重新使用通过COM Interop创建的WinWord.exe进程

时间:2011-04-18 08:11:23

标签: automation ms-word ms-office com-interop

如果我通过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资源管理器打开文档。

3 个答案:

答案 0 :(得分:3)

没有一种简单/优雅的方法可以做到这一点。 (至少不是我在过去几年里找到的那​​个)。但根据您的情况,可能会有适合该法案的特定解决方法。

我已经从一个与真实用户登录的帐户不同的帐户调用了COM Interop。到目前为止,这是可靠的。

这会为你的场景做点什么?如果没有,请分享您的方案。另外,你编写的Word是什么版本的?

答案 1 :(得分:3)

不,不能阻止它。通过更改快捷方式并在命令行中添加/ n或/ w来双击图标时,可以“强制”单词打开一个新实例,但这需要用户的桌面和配置文件进行大量处理。 / p>

最好是你的应用程序尝试通过GETOBJECT检索加载的实例,如果失败,通过COM启动实例,当你准备卸载时,只需检查任何加载的文件,如果有的话你没有加载,不卸载,让用户这样做。

如果没有,则正常卸载单词。

答案 2 :(得分:1)

有各种方法可以做到这一点。其中一个是在通过COM Interop关闭应用程序之前。查看打开的文档。通过保留通过应用程序打开的文档的记录,仅关闭应用程序打开的那些文档。如果在关闭每个单词文档后文档的数量为零,则关闭单词应用程序,否则让它保持打开状态。

我希望上述想法可以解决您的问题。如果需要进一步的帮助,请告诉我。