2011-06-11 86 views
0

解决环境interop.word:问题与.NET应用程序

MS Visual Studio 2010的旗舰版,MS Office 2010专业,微软互操作类

场景:

我创建了一个。使用Interop类与MS Word进行交互的Net应用程序。考虑一下:一个模仿键值对表的应用程序。当用户点击“值”字段时,.net应用程序打开一个双字窗口,用户可以在其中输入一些笔记。点击关闭(winword)后,.net应用程序将执行一个winword.wordopenxml并将数据保存在字段中。为了实现这一点,我已经为winword添加了事件句柄。该应用程序运行得很好。问题出现时,我打开了多个winword实例(分别由用户但不通过.net应用程序)。 .net应用程序中的事件处理程序应用于所有winword实例,因此,在关闭一个实例字时,所有其他实例也会关闭。我尝试了不同的方式来初始化应用程序中的单词对象。我也试着围绕“初始化两个winword实例并退出第一个实例” - >这种方法也不能很好地工作。

大师:你能帮我找到适合这个问题的解决方案吗?

-Rupesh

回答

1

这不是真的在发生什么。它可能看起来像你有多个Word实例运行,但实际上只有一个。 Word是一个非常大的程序,需要大量的系统资源。当用户启动另一个副本时,该副本将检查Word是否已在运行并要求其打开文档。然后退出。原始实例只是创建另一个窗口,否则它确实看起来完全像另一个Word实例。

所以,当你让Word退出时,你也会杀死所有其他窗口。使用Taskmgr.exe,进程标签来验证这一点。作为解决方法,请考虑枚举Documents集合以查看还打开了什么。

+0

谢谢你的回应。我完全理解单词是如何工作的。让我重述一下我的问题。是否有可能将事件“仅”附加到由.net应用程序打开的单词的新实例,而不是将其附加到整个winword.exe过程? – user794205 2011-06-12 18:03:10