Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как из внешней программы отловить через COM событие Click? / 5 сообщений из 5, страница 1 из 1
18.07.2016, 20:00
    #39275908
itPiligrim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из внешней программы отловить через COM событие Click?
Word открывается из стороннего приложения через COM (Word.Application)
Задача: отловить в стороннем приложении события выбора своей команды,
добавленной на ленту, т.е. событие Click нужной команды.

Я сделал dotm, в котором реализованы команды. Но как их вызов отловить через COM?
В дереве Application, объекта COM я не вижу эти команды.

Смотрю в сторону COMAddIns, но пока этот вопрос не изучал.

Подскажите направление, как правильно реализовать такую задачу?
...
Рейтинг: 0 / 0
23.07.2016, 07:36
    #39279095
Bobgos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из внешней программы отловить через COM событие Click?
itPiligrim,

А разве когда создавал команду на ленте, не указывал для нее действие?
...
Рейтинг: 0 / 0
23.07.2016, 10:02
    #39279104
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из внешней программы отловить через COM событие Click?
Bobgos , я так понимаю создавалось это в Visual Studio и выбирался тип проекта DLL - Библиотека классов. А там чтобы подключиться к отслеживанию событий приложения надо еще портянку кода написать. Надо и ключи реестра для классов конкретного приложения знать и работу с делегатами.

itPiligrim , возможно в сети есть примеры - поищите. Я в свое время делал это для Excel, но это было давно и конкретный код сейчас не подскажу. Но сделать можно. Основная проблема именно в верных ключах реестра.
А если не секрет - чем не устроил проект надстроек для Word? Там никаких танцев с бубном не требуется.
...
Рейтинг: 0 / 0
25.07.2016, 21:27
    #39279947
Bobgos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из внешней программы отловить через COM событие Click?
The_Prist,

Извините, а зачем столько сложностей.
Вариан1
приложение открывает ворд, значит и использовать объекную модель офиса может. Зачем тогда из ворда запускать функции внешнего приложения, а не просто этому приложению поьзоваться объектами офиса?
Вариант 2
Команда есть на ленте. Значит xml для не есть, то бишь и привязать функцию из надстройки можно было при создании ленты. Собственно addins.
Вариант3
Если быстро, можно к команде меню ворда привязать сендкей в сторону приложения а в приложении обработать.

Вариантов всегда масса, а вот какой правильный?
...
Рейтинг: 0 / 0
25.07.2016, 22:40
    #39279971
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из внешней программы отловить через COM событие Click?
Bobgosприложение открывает ворд, значит и использовать объекную модель офиса может. Зачем тогда из ворда запускать функции внешнего приложения, а не просто этому приложению поьзоваться объектами офиса?это я тупанул. Почему-то подумал, что надо событие Word отследить(а-ля выделение текста). В случае с лентой, конечно, все чуть проще. Но тоже не так уж радужно, если это библиотека классов, а не спец.проект надстройки Word.

По поводу Вашего варианта 2: для отлова через COM нажатий в XML надо в этой COM реализовать поддержку IRibbonExtensibility для перехвата обратных вызовов, насколько помню. Иначе в самой надстройке COM это событие фиг появится вообще. В специальных шаблонах VS есть и такое, а вот для библиотеки классов опять же - танцы с бубном нужны будут. Надо будет реализовывать все самому. Благо в сети есть примеры.

Первые два варианта: пусть автор решает, что из этого для него допустимо :) Пока мы даже не знаем на чем эта COM написана.
Но вот первый Ваш вариант я сам плохо понял. Как приложение должно использовать офис для обработки действий пользователя? Я вижу только один вариант: COM в любом случае должна быть подвязана через References, чтобы к ней был доступ из VBA. И вот в шаблоне-то и реализовать на функции обратного вызова ленты вызов неких функций подключенной COM.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как из внешней программы отловить через COM событие Click? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]