Я поддерживаю приложение, использующее автоматизацию 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();
}