Как распознать завершение работы серв. автом. WinWord?
MSWord.Exec( PropertySet("Visible" ) << true );
После чего пользователь переходит в WinWord и закрывает его.
Как об этом узнать по состоянию MSWordHolder?
По прежнему MSWordHolder.IsEmpty()==false
Поиск активных задач неприемлем - есть экземпляры WinWord зависимые от других приложений.
Если это так, то я бы заюзал TOleContainer и запускал WinWord в своем окне.
{
__published: // IDE-managed Components
TOleContainer *Doc;
...
};
void __fastcall TWordDocPreviewForm::FormShow(TObject *Sender)
{
Doc->CreateObjectFromFile(StringToOleStr("MyFile.doc"),false);
Doc->DoVerb(ovShow);
...
}
Неправильная постановка вопроса. Не по состоянию - надо подписаться на вордовские события, предоставив серверу автоматизации интерфейс для их получения
Если это так, то я бы заюзал TOleContainer и запускал WinWord в своем окне.
Была такая мысль, но свой интерфейс несколько сложный, удобнее и понятнее заблокировать интерфейс модальным окном "Редактирование..." и переключиться в хорошо знакомый пользователю WinWord. А закрывать модальное окно когда WinWord снимет fmShareDenyWrite на редактируемый файл.
Понятно, но WinWord'ов на целевой машине может быть 2000, XP, 2003, 2007, 20хх. Надо избежать импортирования и раннего связывания.
А без этого не обойтись для подписки на события. Поправьте, если я неправ.
Сейчас я просто обращаюсь к любому свойству сервера автом. и смотрю не было ли исключения.
Других вариантов наверное нет?
Понятно, но WinWord'ов на целевой машине может быть 2000, XP, 2003, 2007, 20хх. Надо избежать импортирования и раннего связывания.
По идее идентификаторы св-в не должны круто меняться от версии к версии, я делал как-то плагин для 2000-го Ворда, потом он без проблем работал в 2003-м. Выяснить просто - подпишись на события и попробуй это на разных версиях Ворда. Ну в крайнем случае версию Ворда определить и действовать соответственно.
Других вариантов наверное нет?
Похоже нет.
Хм, неправ. Ты получаешь интерфейс на тобой же запущенный экземпляр, и подписываешься на события этого экземпляра - другие экземпляры тебе по боку, какие бы версии он не имели