如何使用 OLE 自动化关闭 Word 文档?

How do I close a Word doc using OLE automation?

我正在维护一个使用 OLE 自动化来嵌入 Word 的应用程序。但是,当包含文档的选项卡在某些情况下关闭时,Word 进程将挂起该文件 - 即使在关闭我们的应用程序之后也是如此。

我一直在寻找如何在 Word 中关闭 文件,我遇到了 https://msdn.microsoft.com/en-us/library/office/ff196343.aspx,这表明有某种 Close 我想调用的方法,但它似乎不起作用。

Word是这样打开的:

clientSite = new OleClientSite(frame, SWT.NONE, Word97To2003ClassId, file);
automation = new OleAutomation(clientSite);

而且我可以调用 automation.getIDsOfNames(new String[]){ "Close" })[0] 哪个 returns 1105。但是当我调用 automation.invoke(1105) 时,它仍然使我的文档保持打开状态。知道如何在我的框架关闭时关闭我的文档吗?

根据我的经验,有很多 API 方法根本不起作用。大概"close"就是其中之一。

也许您可以确保 OleClientSite 在选项卡或应用程序之前处理。

我在执行以下操作时遇到了对话框问题(不太好但有效):

    @Override
    public boolean close() {
        // make sure clientSite is disposed first
        if (clientSite != null && !clientSite.isDisposed()) {
            clientSite.dispose();
        }
        return super.close();
    }