在Word 2016中检测比较窗口

时间:2019-06-27 06:13:08

标签: c# ms-word vsto

设置代码文档的步骤。

  1. Open Word 2016
  2. 转到选项卡审查,分组比较,使用内置比较(文档 从文件系统)
  3. 在Compare-Window中,进入“审阅”,“组比较”,使用我自己的Compare Addin(数据库中的文档)

导致错误的代码:

var compareDocument = this.thisAddIn.Application.CompareDocuments
    (OriginalDocument: originalDocument,
    RevisedDocument: revisedDocument,
    Destination: dialog.WdCompareDestination,
    Granularity: dialog.WdGranuality,
    CompareFormatting: dialog.CompareFormatting,
    CompareCaseChanges: dialog.CompareCaseChanges,
    CompareWhitespace: dialog.CompareWhitespace,
    CompareTables: dialog.CompareTables,
    CompareHeaders: dialog.CompareHeaders,
    CompareFootnotes: dialog.CompareFootnodes,
    CompareTextboxes: dialog.CompareTextboxes,
    CompareFields: dialog.CompareFields,
    CompareComments: dialog.CompareComments,
    CompareMoves: dialog.CompareMoves,
    RevisedAuthor: dialog.RevisedAuthor,
    IgnoreAllComparisonWarnings: true);
  

System.Runtime.InteropServices.COMExpetion:“错误HRESULT E_FAIL具有   从对COM组件的调用返回”

仅当我从内置比较窗口调用我的compare-Addin时,才会出现此错误。

比较窗口

enter image description here

加载项:

enter image description here

2 个答案:

答案 0 :(得分:0)

ShowSourceDocument可能会帮助您。如果比较窗口处于活动状态,则此属性将返回定义如下的Enum:

  • wdShowSourceDocumentsBoth 3 同时显示原始文档和修订文档。

  • wdShowSourceDocumentsNone 0 显示比较功能中使用的源文档的原始文档或修订文档。

  • wdShowSourceDocumentsOriginal 1个 仅显示原始文档。

  • wdShowSourceDocumentsRevised 2 仅显示修订的文档。

在任何其他情况下,此属性都将引发异常。

调用GetType()是没有用的,因为(比较和普通窗口)窗口都是COM类型。

有一个属性类型。此属性返回一个Enum,它带有两个可能的值:Normal或Template。

答案 1 :(得分:0)

此代码设置我插件的可见性

if (this.thisAddIn.Application.Documents.Count>1)
    {
        return false;
    }

即使仅显示原始文档,它也能正常工作,但是我不知道是否有任何情况会导致问题。