自动保存触发`DocumentBeforeSave`事件 - 如何规避这个?

时间:2017-01-03 09:51:13

标签: c# vsto office-addins

保存文件时(故意)我想执行某项操作 这一切都与以下代码一起使用:
Application.DocumentBeforeSave += new word.ApplicationEvents4_DocumentBeforeSaveEventHandler(ThisAddIn_BeforeSave);

只有一个问题,当对文档进行更改并且“Autorecover”功能保存此更改时,此事件也会触发。

有没有办法绕过这个动作或至少检测它是否是自动保存?

1 个答案:

答案 0 :(得分:3)

所以我设法在this网站上找到了这个问题的答案。 从本质上讲,这可以使用我假设的Word应用程序的VBA属性。

object oBasic = Application.WordBasic;
object fIsAutoSave =
        oBasic.GetType().InvokeMember(
            "IsAutosaveEvent",
            BindingFlags.GetProperty,
            null, oBasic, null);
if (int.Parse(fIsAutoSave.ToString()) == 1)
    MessageBox.Show("Is AutoSave");
else
    MessageBox.Show("Is regular save");

此解决方案似乎适用于Office 2007及以上版本。