Как закрыть документ Word с помощью автоматизации OLE?

1

Я поддерживаю приложение, использующее автоматизацию 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) он все равно сохраняет мой документ открытым. Любая идея, как я мог закрыть свой документ, когда мой кадр закрывается?

Теги:
ms-word
ole

1 ответ

0
Лучший ответ

По моему опыту существует множество методов API, которые просто не работают. Вероятно, "закрыть" - один из них.

Возможно, вы можете убедиться, что OleClientSite размещен перед вкладкой или приложением.

У меня возникла проблема с диалогом, в котором я сделал следующее (не так приятно, но работает):

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню