如何使用 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();
}
我正在维护一个使用 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();
}