如何使用 OLE 自动化关闭 Word 文档?
Posted
技术标签:
【中文标题】如何使用 OLE 自动化关闭 Word 文档?【英文标题】:How do I close a Word doc using OLE automation? 【发布时间】:2015-02-05 18:11:35 【问题描述】:我正在维护一个使用 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]
,它会返回1105
。但是当我打电话给automation.invoke(1105)
时,它仍然让我的文档保持打开状态。知道框架关闭时如何关闭文档吗?
【问题讨论】:
【参考方案1】:根据我的经验,有很多 API 方法根本不起作用。可能“关闭”就是其中之一。
也许您可以确保OleClientSite
在选项卡或应用程序之前被释放。
我在执行以下操作时遇到了一个对话框问题(不是很好,但很有效):
@Override
public boolean close()
// make sure clientSite is disposed first
if (clientSite != null && !clientSite.isDisposed())
clientSite.dispose();
return super.close();
【讨论】:
以上是关于如何使用 OLE 自动化关闭 Word 文档?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 OLE 的情况下在 delphi 中将 word 文档转换为 pdf?
使用 java 中的 OLE 自动化将 word 文件拆分为多个较小的 word 文件