当我的应用程序中运行Word应用程序实例时,无法关闭Word



我创建了一个windows表单,使用Word.Application打开一个word文档,代码运行良好,我可以查看、编辑和保存文档。

问题是,当我打开另一个Microsoft Word实例(在我的应用程序之外)时,该单词实例在同一个WINWORD.exe进程上打开,我的意思是,无论我打开多少个Word实例,任务管理器进程中都只有一个WINWORD.exe进程,因此,无法关闭应用程序之外的单词实例(使用X按钮、文件=>关闭或Alt+F4),除非我关闭应用程序中的单词实例,否则它无法关闭。

我不知道为什么它在我的应用程序创建的同一进程中打开,它将新打开的单词实例视为我的word应用程序对象的文档(但它在我应用程序外的一个新单词窗口中打开),所以如果不关闭主应用程序对象,就无法关闭文档。

以下是我用来在表单中加载单词应用程序的代码:

Public Sub LoadDocument(ByVal t_filename As String)
filename = t_filename
If wd Is Nothing Then
wd = New Word.Application()
End If
Try
wd.CommandBars.AdaptiveMenus = False
Catch
End Try
If wordWnd = 0 Then
wordWnd = FindWindow("Opusapp", wd.Caption)
End If
If wordWnd <> 0 Then
SetParent(wordWnd, Me.Handle.ToInt32())
Dim newTemplate As Object = False
Dim docType As Object = 0
Dim [readOnly] As Object = True
Dim isVisible As Object = True
Dim missing As Object = System.Reflection.Missing.Value
Try
If wd Is Nothing Then
Throw New WordInstanceException()
End If
If wd.Documents Is Nothing Then
Throw New DocumentInstanceException()
End If
If wd IsNot Nothing AndAlso wd.Documents IsNot Nothing Then
'Dim HearingTemplet As Word.Template = wd.NormalTemplate
Dim d As Word.Documents = wd.Documents
document = d.Add(fileName, True, docType, isVisible)
document.ShowGrammaticalErrors = False
document.ShowRevisions = False
document.ShowSpellingErrors = False
document.Application.Visible = False
document.Application.Options.SuggestSpellingCorrections = False
document.Application.Options.CheckGrammarAsYouType = False
document.Application.Options.CheckSpellingAsYouType = False
document.Application.Options.CheckGrammarWithSpelling = False
document.SaveAs(fileName)
End If
Catch
End Try
Try
wd.ActiveWindow.DisplayRightRuler = False
wd.ActiveWindow.DisplayScreenTips = False
wd.ActiveWindow.DisplayVerticalRuler = False
wd.ActiveWindow.DisplayRightRuler = False
wd.ActiveWindow.ActivePane.DisplayRulers = False
wd.ActiveWindow.Caption = ""
wd.Options.SaveInterval = 0
wd.Options.AllowFastSave = False
wd.ActiveWindow.Document.ReadOnlyRecommended = True
wd.ActiveWindow.Split = False
wd.Application.DisplayRecentFiles = False
wd.ActiveWindow.ActivePane.View.Type = WdViewType.wdNormalView
wd.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView
Catch
End Try
Try
wd.Visible = True
wd.Activate()               
Catch
End Try
End If
End Sub

p.S:无论我打开多少个word实例,问题都会发生,所有这些实例都在同一进程中打开,所有实例都被视为我的word应用程序的文档,除非我以我的表单关闭word应用程序,否则我无法关闭任何实例。

您是否尝试处理对象或在完成后退出应用程序?

wd.quit()

请参阅:https://msdn.microsoft.com/en-us/library/office/ff844895.aspx

set wd = Nothing
GC.Collect()

相关内容

最新更新