Работа с LibreOffice, как с Com-объектом

Автор Борис_С, 22 октября 2021, 17:15

0 Пользователи и 1 гость просматривают эту тему.

Борис_С

Я правильно понимаю, что создать com-объект можно только для Open Office. Для Libre Office такой возможности нет.

sokol92

#91
У меня только LO и я могу работать с com объектами. Пример.
Владимир.

Борис_С

Это судя по всему означает, что, если на компе нет ОО, то формируется объект LO.
Если же есть, то формируется объект ОО, хотя возможно есть еще какие-то нюансы.

mikekaganski

Это означает только то, что два пакета конфликтуют (естественно, поскольку имена COM-объектов одни и те же), и поэтому кто последним записывал в системный реестр - того и тапки.
С уважением,
Михаил Каганский

Борис_С


sokol92

#95
Цитата: Борис_С от 13 декабря 2021, 14:45Это судя по всему означает, что, если на компе нет ОО, то формируется объект LO.
Похоже на правду. "Боливар не вынесет двоих".  :(

Придется "химичить". Попробуйте вместо
CreateObject("com.sun.star.ServiceManager")
использовать
CreateObject("new:{82154420-0FBF-11d4-8313-005004526AB4}"

ЦитироватьДружба дружбой, а табачок Guid врозь...
Владимир.

Борис_С

А зачем химичить. Пусть работает тот объект, который создается, благо алгоритмы обработки текста практически одинаковы.

sokol92

Дистанция между LO и OO увеличивается с каждым годом. Код выше позволяет стартовать именно LO.
Владимир.

Борис_С

#98
Есть одна проблемка. В С# OO CLI создание com-объекта происходит так:

XComponentContext localContext = uno.util.Bootstrap.bootstrap();
XMultiServiceFactory multiServiceFactory =
            (XMultiServiceFactory)localContext.getServiceManager();


Я не знаю, как код VB преобразовать в код С#.

И еще один момент. А что, если у пользователя стоит только Open Office?

sokol92

Я не могу ответить на вопрос по сборке кода, поскольку у меня нет соответствующей инфраструктуры (я на С# не пишу и не читаю).
Владимир.

Борис_С


sokol92

Действия по созданию стартового объекта (ServiceManager) MRI не может показать - события происходят до его рождения. Автор примера в #95 - Ваш покорный слуга, а не MRI.
Владимир.