Я вижу много очень похожих потоков, но ничто, кажется, не дает мне решения, которое должно быть очень базовым.
Из моего 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
, который я не понимаю.
Что такое идеальный способ? Спасибо.
Правка:
Я не могу закрыть все приложение Word (WinWord), так как у пользователей могут быть открыты другие файлы Word.
Мне нужно просто закрыть экземпляр слова (что-то вроде Process.Kill()
) без всякой подсказки пользователю сохранять или нет и т.д.