Word 互操作 - 如何关闭一个 Word 窗口而不关闭所有窗口?

Rat*_*eek 5 .net ms-word office-interop word-2003

我正在使用 Microsoft Word 主要互操作程序集来从属 MS Word。我的应用程序打开了它自己的 Word 窗口(使用Microsoft.Office.Interop.Word.Application 的一个实例)。在应用程序完成其操作后,我想关闭我打开的 Word 窗口,但我不想影响用户可能打开的其他 Word 窗口。如果我使用 Application.Quit,那么所有 Word 窗口最终都会关闭。如果我使用 Application.ActiveWindow.Close 则 Word文档关闭,但我创建的 Word 窗口仍然保持打开状态,并显示一个不受欢迎的空白屏幕。

如何通过其 API 告诉 Word 关闭我打开的 Word 实例而不影响其他实例?这类似于单击 Word 窗口右上角的 X 时的行为。

Mic*_*nis 0

使用Word.Application.Quit()并且Marshall.FinalReleaseComObject(Word.Application)我已经能够同时打开多个Word实例,并且仅关闭我想要关闭的特定实例。

以下是一些快速示例代码(来自 C# 控制台应用程序):

using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Word;

namespace WordTest
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var p = new Program();
            p.Test();
        }

        public void Test()
        {
            var msWord = new Application();

            CloseWord(msWord);
        }

        public void CloseWord(Application word)
        {
            if (word != null)
            {
                word.Quit();
                Marshal.FinalReleaseComObject(word);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

另请参阅:c# MSOffice Interop Word 不会杀死 winword.exe