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