如何在关闭Word文档之前检查打开的对话框?

时间:2016-09-15 20:51:58

标签: ms-word office-interop

我有一个应用程序可以打开新的Word文档,让用户更新和保存,然后他们可以通过单击右上角的X来关闭Word,或者他们可以关闭应用程序中的单词。

问题出现在用户进行编辑,单击Word右上角的 X ,显示保存对话框,用户忘记单击保存,然后尝试从应用程序关闭文档时。应用程序认为它使用以下代码行成功关闭了文档:

WordApp.Documents[docUri].Close(WdSaveOptions.wdDoNotSaveChanges);

但是对话框仍处于打开状态且doc尚未关闭。代码中没有例外或警告。

有没有办法检查现有的打开对话框窗口并绕过带代码的打开对话框?

1 个答案:

答案 0 :(得分:0)

这不是我解决这个问题的理想方法,但就目前而言,它有效......

当您希望关闭文​​档时打开一个对话框窗口时,您可以捕获COMException并读取HResult ID以控制您对异常的反应。以下是我发现的Open Dialog问题以及Word意外关闭。

catch (System.Runtime.InteropServices.COMException ex)
            {
                switch (ex.HResult)
                {
                    case -2147417846:  //Dialog box is open and blocking us
                        context.Clients.All.addMessage("CloseWord", "Can't close Word, please check for open dialog box");
                        return;

                    case -2147023174:  //Word Instance died without us knowing, need to set back to null to recover
                        context.Clients.All.addMessage("CloseWord", "Word Failed, attempting to recover...");
                        break;

                    default:  //this is to catch the unknown and bubble up the details
                        context.Clients.All.addMessage(
                            string.Format("CloseWord", "Oops... Something went wrong  Code {0}  Message: {1}", ex.HResult, ex.Message));
                        return;

                }
            }