Avoird Ответов: 0

Используя форму слова служба


Привет,

Для наших нужд печати документов я пишу новое сервисное приложение (на языке c#), которое должно печатать документы в шаблонах word. Эта концепция основана на старом приложении на c++, которое мы имели в конце девяностых годов. В основном сервис открывает документ word с помощью макрофункции printDocument(strFile as string, templateName as string). Функция анализирует файл и печатает содержимое через закладки в шаблоне, которые передаются в параметрах функции. Это работало 20 лет назад.

У меня есть весь код, написанный снова на c#, и он отлично работает в моей среде Visual Studio. Однако если я попытаюсь запустить его как сервис, то при открытии документа с помощью макроса возникнет ошибка.

Мне нужна некоторая помощь в понимании, если это все еще возможно?

Основываясь на этой статье, я понимаю, что это уже не так: https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office

Заранее спасибо за помощь.

Что я уже пробовал:

Поискал в интернете похожие решения

OriginalGriff

"Ошибка выброшена" - это один из отчетов об ошибках, которые мы получаем довольно часто, и он всегда совершенно бесполезен-он ничего не говорит нам о вашей проблеме, кроме "У меня есть проблема", и мы знали это, потому что вы задаете вопрос!

Что он сделал такого, чего вы не ожидали, или не сделали того, что вы сделали?
Когда он это сделал?
Есть ли какие-либо сообщения об ошибках? Что же это такое? К какому коду они относятся?
Что вы сделали, чтобы заставить его сделать это?
Что вы пытались сделать, чтобы выяснить, почему?
Каковы были результаты?
Какая помощь вам нужна?

Это все вопросы, на которые нам нужен ответ - или мы вообще не сможем вам помочь!

Avoird

Привет,
Чтобы быть более конкретным тогда. Приведенная ниже функция возвращает null в объекте wordDocument:

объект wordDocs = GetProperty("документы", wordApplication);

wordDocument = InvokeMember("Open", wordDocs, new object[]{fileName, отсутствует,
isReadonly, отсутствует, отсутствует, отсутствует,
пропал, пропал, пропал, пропал,
отсутствует, isVisible});

Когда я запускаю логику в своем тестовом консольном приложении, то открывается документ word, который я пытаюсь открыть, и я могу выполнить макрос внутри.
Когда я запускаю приложение внутри проекта службы в debugmode в visual studio, я также могу открыть документ word и запустить marco.
Затем при компиляции в режим выпуска и создании проекта установки для установки приложения в качестве службы, а затем при запуске службы из диспетчера служб он не открывает слово doc вместо этого InvokeMember возвращает null в объекте.
Я разрабатываю это приложение для того, чтобы заменить наш центральный сервер Adobe и программное обеспечение Adobe Designer. Adobe прекратила свою поддержку 7 лет назад.

Что я сделал до сих пор, чтобы попытаться решить эту проблему?..
Несколько решений, предложенных на форумах, таких как:
* создание папки рабочего стола в системном профиле.
* Изменение олицетворения DCOM с запуска на интерактивное (что, конечно, не имеет смысла при запуске в качестве службы).

Служба должна работать на W2016 с последней версией MS Office word.

Поэтому мне нужна некоторая помощь, чтобы понять, почему мой сервис не может запустить документ, который я пытаюсь открыть, и почему функция возвращает нулевое значение.

Я надеюсь, что это достаточно подробно.

0 Ответов