我正在维护使用OLE自动化嵌入Word的应用程序。但是,在某些情况下关闭包含文档的选项卡时,即使关闭我们的应用程序,Word进程也会挂在文件上。

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

单词是这样打开的:

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


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

最佳答案

根据我的经验,有很多API方法根本无法使用。可能“关闭”是其中之一。

也许可以确保将OleClientSite放在选项卡或应用程序之前。

我在执行以下操作的对话框中遇到了问题(不太好,但是可以正常工作):

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

09-10 07:17