Работа с делфийским Activex сервером из ворда

  • Автор темы evan
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

evan

#1
Здравствуйте.
Я пишу приложение на Delphi 6 со встроенным automation server'ом (т.е. сервер - именно exe, а не dll, а созданный класс является наследником от TAutoObject). Требуется обращаться к методам этого класса из VBA-скрипта в ворде или экселе. При этом логика загрузки/создания/уничтожения/выгрузки требуется следующая:
  • если сервер уже загружен, в пределах макроса создать объект, поработать с ним, и освободить полностью объект, не трогая сервер
  • если сервер не загружен, загрузить его, создать объект/отработать/уничтожить, а сервер опять же оставить запущенным
Сейчас существуют две проблемы: во-первых, если сервер загружается в результате создании объекта, то он выгружается после выхода им макроса, и во-вторых, процесс msword почему-то не закрывает хендл на екзешник сервера после выхода из макроса (т.е. после того, как отработал макрос, удалить екзешник невозможно, пока не закроется ворд).
По логике работы, лучше всего иметь instancing model = internal и threading model = single, но допустимо использовать и другие режимы.
Кроме того, никак не могу добиться работы позднего связывания (т.е. сейчас из скрипта объект можно создать только через New, но не через CreateObject).
У кого есть идеи по этому поводу, плиз пните в нужную сторону. Это мой первый COM-объект, поэтому возможны совсем грубые ошибки. Код не привожу, потому что там его практически нет (COM класс создан мастером, в нем создан один пустой метод, в макросе три строчки, которые создают объект, вызывают метод, и присваивают ссылке nothing).
 
Статус
Закрыто для дальнейших ответов.