Как правильно завершить / закрыть WINWORD. EXE / word interop in VB.NET?
У меня есть приложение, которое генерирует отчет с помощью шаблона файла Word. Приложение заполнит шаблон сведениями, предоставленными пользователями, и записями базы данных. Я запускаю свое приложение на другой сервер с помощью удаленного рабочего стола.
Моя проблема в том, что WINWORD.EXE процесс не завершается и остается в диспетчере задач после завершения генерации отчета (сохраняется отчет в базе данных и удаляется сгенерированный файл).
При входе в учетную запись службы WINWORD.EXE процесс завершается должным образом и удаляется из списка диспетчера задач. При выходе из системы-ВИНВОРД.EXE остается в списке. И это может привести к исключению из памяти, когда несколько процессов Word не завершаются.
Отчеты Word создаются с помощью Microsoft.Офис.Взаимодействие.Word, Version=12.0.0.0
Вот код сохранения нового файла, закрытия приложения Word, сохранения отчета и удаления сгенерированного файла:
Marshal.releaseComObject(rng) Dim strFileName As String = comm.GenerateFileName(strUser_id, strVPN) & ".docx" ' Save the document. Dim filename As Object = Path.GetFullPath(strNewFilePath & strFileName) newDoc.SaveAs(FileName:=filename) ' Close. Dim save_changes As Object = False newDoc.Close(save_changes) WordApp.Quit(save_changes) Marshal.ReleaseComObject(newDoc) Marshal.ReleaseComObject(WordApp) rng= Nothing newDoc = Nothing WordApp = Nothing ' Let GC know about it GC.Collect() ' Save the file to database SaveFormat(Filename, strUser_Id, strFamilyId, strVPN, DateTime.Now.ToString(), "application/vnd.ms-word", br_id, "doc") If File.Exists(filename) then File.Delete(filename) End If
Что я уже пробовал:
Я все еще исследую различные работы здесь.
В excel мы получаем решение, получая идентификатор процесса открытого экземпляра Excel с помощью свойства Hwnd и класса GetprocessById.
Я где-то читал, что Word 2013 и позже имеет приложение.Свойство hwnd. Это правда? Есть ли у Word свойство hwnd?
Я очень ценю вашу помощь. Спасибо :)