c# - 在 Word 2016 中检测比较窗口
问题描述
为代码设置文档的步骤。
- 打开 Word 2016
- 转到标签 Review, Group Compare ,使用内置比较(来自文件系统的文档)
- 在 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 组件的调用中返回'
仅当我从内置比较窗口调用比较插件时才会出现此错误。
比较窗口
加入:
解决方案
ShowSourceDocument 可能会对您有所帮助。如果比较窗口处于活动状态,此属性将返回 Enum,定义如下:
wdShowSourceDocumentsBoth 3 显示原始文档和修订文档。
wdShowSourceDocumentsNone 0 既不显示用于比较函数的源文档的原始文档,也不显示修改后的文档。
wdShowSourceDocumentsOriginal 1 仅显示原始文档。
wdShowSourceDocumentsRevised 2 仅显示修改后的文档。
在任何其他情况下,此属性都会引发异常。
调用 GetType() 是没有用的,因为(比较窗口和普通窗口)窗口都是 COM 类型。
有一个属性类型。此属性返回具有两个可能值的 Enum:Normal 或 Template。
推荐阅读
- orange - Orange:如何确保将相同的 PCA 应用于训练数据集和测试数据集?
- python - Python if 重复功能
- pyqt5 - 更新同一图表中的数据而不是在多个窗口中打开?
- javascript - 如何在 chrome 中获取全局通知列表?
- stripe-payments - 在什么情况下会发送 stripe 的 transfer.failed webhook?
- powershell - 请求帮助创建 POWERSHELL DSC 脚本
- r - sjPlot 包有问题吗?
- php - create_function() 的补丁导致 PHP 7.3.6 出现问题
- python - 将 json 列表标准化为值
- exception - 骆驼春 DSL 永远返还