【问题标题】:Problem with interop.word in a .net application.net 应用程序中的 interop.word 问题
【发布时间】:2011-06-11 18:44:42
【问题描述】:

解决方案环境:

MS Visual Studio 2010 Ultimate、MS Office 2010 Professional、Microsoft Interop 类

场景:

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

大师:能否请您帮我找到一个合适的解决方案来解决这个问题?

-鲁佩什

【问题讨论】:

    标签: .net office-interop


    【解决方案1】:

    这不是真正发生的事情。看起来您有多个 Word 实例正在运行,但实际上只有一个。 Word 是一个非常大的程序,需要大量的系统资源。当用户启动另一个副本时,该副本会检查 Word 是否已在运行并要求它打开文档。并退出。原始实例只是创建了另一个窗口,否则它看起来确实与 Word 的另一个实例完全一样。

    因此,当您退出 Word 时,您也会杀死所有其他窗口。使用 Taskmgr.exe,进程选项卡来验证这一点。作为一种解决方法,请考虑枚举 Documents 集合以查看还打开了哪些内容。

    【讨论】:

    • 感谢您的回复。我完全理解单词的工作原理。让我重新表述我的问题。是否可以将事件“仅”附加到 .net 应用程序打开的新单词实例,而不是将其附加到整个 winword.exe 进程??
    猜你喜欢
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多