Форум: "Основная";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
ВнизВопрос по OLE-Automation(ранние связывание) Найти похожие ветки
← →
Art_east (2002-04-11 11:50) [12]2kimblch
Если ты используешь TWordApplication, то отловить ситуацию закрытия Word"а пользователем можно по событию TWordApplication.OnQuit. Здесь Word немножко хулиганит, потому что т.к. на него есть ссылка из твоей проги, следовательно его RefCount>0, следовательно он должен просто уйти в инвизибл (как это делает напримерExcel), но никак не уничтожиться. Но поскольку он всё таки уничтожается можно например прописать в этом событии WordApplication1.Disconnect дабы избавится от ссылки на несуществующий интерфейс, а если в ConnectKind поставить ckRunningOrNew то при следующем обращении Word запустится снова.
А проверить запущен ли Word, можно так
function GetWord: IUnknown;
begin
if not Succeeded(GetActiveObject(ProgIDToClassID("Word.Application"), nil, Result)) then
Result := CreateComObject(ProgIDToClassID("Word.Application"));
WordApplication1.ConnectTo((pUnk as _Application));
end
WordApplication1.ConnectTo((GetWord as _Application));
что собственно и делает TWordApplication в методе Connect при ConnectKind = ckRunningOrNew
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.006 c