как закрыть выполняющийся экземпляр документа Word? (C#)

Я вижу много очень похожих потоков, но ничто, кажется, не дает мне решения, которое должно быть очень базовым.

Из моего winforms-приложения мне нужно закрыть исполняющийся экземпляр документа word (открытого из самого приложения). Когда я открываю документ word из приложения, я отслеживаю его в списке. Как я могу закрыть тот же самый документ?

Вот что я попробовал:

private bool CloseWord(string osPath) //here I pass the fully qualified path of the file
{
    try
    {
        Word.Application app = (Word.Application)Marshal.GetActiveObject("Word.Application");
        if (app == null)
            return true;

        foreach (Word.Document d in app.Documents)
        {
            if (d.FullName.ToLower() == osPath.ToLower())
            {
               d.What? //How to close here?
               return true;
            }
        }
        return true;
    }
    catch
    {
        return true;
    }
}

Я получаю много методов для объекта документа, но только .Close() для закрытия, в котором есть такие аргументы: ref объект SaveChanges, ref объект OriginalFormat, ref объект RouteDocument, который я не понимаю.

Что такое идеальный способ? Спасибо.

Правка:

  1. Я не могу закрыть все приложение Word (WinWord), так как у пользователей могут быть открыты другие файлы Word.

  2. Мне нужно просто закрыть экземпляр слова (что-то вроде Process.Kill()) без всякой подсказки пользователю сохранять или нет и т.д.

7
задан nawfal 14 November 2012 в 08:58
поделиться