【发布时间】:2014-04-04 08:01:18
【问题描述】:
我正在编写一个小程序,它将打开 Word、Excel 或 Powerpoint 文件,检查文件而不进行任何修改,然后再次退出相应的应用程序。例如。对于 Word,这看起来如下,适用于普通文档:
s_word.Quit(false);
Marshal.ReleaseComObject(s_word);
s_word = null;
GC.Collect();
GC.WaitForPendingFinalizers();
我还有一个计时器,如果它在 x 秒后没有退出,它应该退出应用程序。但是,如果弹出任何对话框等,我会遇到问题,例如打开文档时的密码提示。我会遇到超时,但上面的所有命令都不会退出应用程序。 所以我添加了一个硬进程终止方法,它将简单地查找所有 WINWORD 进程并杀死它们。虽然这可行,但我想避免一些陷阱。比如下次你打开失败的文档时,Word会询问你是否修复它等。
那么,有没有更好的方法来强制 Office 应用程序退出?
【问题讨论】:
-
我无法解决您的问题,但您可以尝试“Open XML SDK 2.5 for Office”而不是使用 office interopt,我不确定它可以打开哪些文件,但至少它不会启动新进程当你打开文件时。
-
我主要有旧的(非 xml)Office 文件,所以这不是一个真正的选择。
-
我在使用它时总是做的事情是我实现 IDisposable 并覆盖 Dispose 方法。
标签: c# excel ms-word powerpoint office-interop