首页 > 解决方案 > 在 Word 2016 中检测比较窗口

问题描述

为代码设置文档的步骤。

  1. 打开 Word 2016
  2. 转到标签 Review, Group Compare ,使用内置比较(来自文件系统的文档)
  3. 在 Compare-Window 中转到 Review,Group Compare,使用我自己的 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 组件的调用中返回'

仅当我从内置比较窗口调用比较插件时才会出现此错误。

比较窗口

在此处输入图像描述

加入:

在此处输入图像描述

标签: c#ms-wordvsto

解决方案


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

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

  • wdShowSourceDocumentsNone 0 既不显示用于比较函数的源文档的原始文档,也不显示修改后的文档。

  • wdShowSourceDocumentsOriginal 1 仅显示原始文档。

  • wdShowSourceDocumentsRevised 2 仅显示修改后的文档。

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

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

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


推荐阅读