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

时间:2015-04-12 09:54:38

标签: .net vb.net winforms process ms-word

我创建了一个使用Word.Application打开word文档的窗体,代码工作正常,我可以查看,编辑和保存文档。

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

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

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

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

PS:无论我打开多少个单词实例,都会出现问题,所有这些单词实例都在同一个进程中打开,所有这些都被视为我的单词应用程序的文档,而我除非我以我的形式关闭Word应用程序,否则无法关闭它们。

1 个答案:

答案 0 :(得分:0)

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

wd.quit()

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

set wd = Nothing
GC.Collect()