Изначально являвшийся инженером-программистом в течение многих лет в крупных проектах по разработке программного обеспечения, сейчас я на протяжении 1,5 лет отвечаю за обслуживание и разработку старого, большого, сложного и плохо документированного модуля автоматизации слова (VBA) в рамках стандартного администрирования. применение в правительственной и судебной среде. Все манипуляции с документами (создание, включая слияние данных из БД, обновление, удаление и т. Д.), А также хранение (как BLOB-объектов в БД) контролируются основным приложением с использованием автоматизации OLE.
Фон
Приложение позволяет включить функцию так называемого «косвенного управления OLE», которая, по-видимому, не является официальным названием (никаких выводов в Google). Этот вариант имеет два преимущества. Если включено,
- улучшает производительность при загрузке слова
- и предоставляет приложению свою собственную среду частных слов без вмешательства извне
Это делается путем запуска основного скрытого экземпляра Word прямо при открытии первого документа. Сам фактический и любой другой документ загружается в следующий экземпляр Word, который присоединен к первичному скрытому. Закрытие документа закроет его сеанс Word как обычно, но основной сеанс Word остается открытым и обычно невидимым, пока приложение не будет закрыто в целом. Основной сеанс Word сохраняет макросы, предварительно загруженные шаблоны и шаблоны автотекста, загруженные в оперативную память.
Пока открыт хотя бы один документ, вы увидите в диспетчере задач Windows:
- на вкладке Процесс: как обычно, один экземпляр Word и прикрепленный к нему открытый документ
- на вкладке "Сведения": основной скрытый экземпляр Word плюс, кроме того, один экземпляр Word для каждого открытого документа
Если в настоящий момент нет открытых документов, вы увидите в диспетчере задач Windows:
- на вкладке Процесс: нет экземпляра Word
- на вкладке «Сведения»: только этот основной скрытый экземпляр Word (вы можете узнать это по PID)
Отсутствие документации
В течение некоторого времени мы получаем отчеты о проблемах от клиентов, которые обновили Office 2010 до 2016 года. Они жалуются на плохую производительность при создании новых документов. Я заглянул в код и нашел несколько возможных причин такого поведения в отношении последовательности вызовов при обработке описанной выше концепции. Но прежде чем касаться этого кода, я хотел бы узнать больше об этой концепции в целом. Можете ли вы дать мне любую подсказку, ссылку или документ, предоставив официальное описание / документацию по этой концепции наличия скрытого и стойкого к памяти экземпляра Word.
ТИА!
Питер