|
Как из внешней программы отловить через COM событие Click?
|
|||
---|---|---|---|
#18+
Word открывается из стороннего приложения через COM (Word.Application) Задача: отловить в стороннем приложении события выбора своей команды, добавленной на ленту, т.е. событие Click нужной команды. Я сделал dotm, в котором реализованы команды. Но как их вызов отловить через COM? В дереве Application, объекта COM я не вижу эти команды. Смотрю в сторону COMAddIns, но пока этот вопрос не изучал. Подскажите направление, как правильно реализовать такую задачу? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2016, 20:00 |
|
Как из внешней программы отловить через COM событие Click?
|
|||
---|---|---|---|
#18+
itPiligrim, А разве когда создавал команду на ленте, не указывал для нее действие? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2016, 07:36 |
|
Как из внешней программы отловить через COM событие Click?
|
|||
---|---|---|---|
#18+
Bobgos , я так понимаю создавалось это в Visual Studio и выбирался тип проекта DLL - Библиотека классов. А там чтобы подключиться к отслеживанию событий приложения надо еще портянку кода написать. Надо и ключи реестра для классов конкретного приложения знать и работу с делегатами. itPiligrim , возможно в сети есть примеры - поищите. Я в свое время делал это для Excel, но это было давно и конкретный код сейчас не подскажу. Но сделать можно. Основная проблема именно в верных ключах реестра. А если не секрет - чем не устроил проект надстроек для Word? Там никаких танцев с бубном не требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2016, 10:02 |
|
Как из внешней программы отловить через COM событие Click?
|
|||
---|---|---|---|
#18+
The_Prist, Извините, а зачем столько сложностей. Вариан1 приложение открывает ворд, значит и использовать объекную модель офиса может. Зачем тогда из ворда запускать функции внешнего приложения, а не просто этому приложению поьзоваться объектами офиса? Вариант 2 Команда есть на ленте. Значит xml для не есть, то бишь и привязать функцию из надстройки можно было при создании ленты. Собственно addins. Вариант3 Если быстро, можно к команде меню ворда привязать сендкей в сторону приложения а в приложении обработать. Вариантов всегда масса, а вот какой правильный? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:27 |
|
Как из внешней программы отловить через COM событие Click?
|
|||
---|---|---|---|
#18+
Bobgosприложение открывает ворд, значит и использовать объекную модель офиса может. Зачем тогда из ворда запускать функции внешнего приложения, а не просто этому приложению поьзоваться объектами офиса?это я тупанул. Почему-то подумал, что надо событие Word отследить(а-ля выделение текста). В случае с лентой, конечно, все чуть проще. Но тоже не так уж радужно, если это библиотека классов, а не спец.проект надстройки Word. По поводу Вашего варианта 2: для отлова через COM нажатий в XML надо в этой COM реализовать поддержку IRibbonExtensibility для перехвата обратных вызовов, насколько помню. Иначе в самой надстройке COM это событие фиг появится вообще. В специальных шаблонах VS есть и такое, а вот для библиотеки классов опять же - танцы с бубном нужны будут. Надо будет реализовывать все самому. Благо в сети есть примеры. Первые два варианта: пусть автор решает, что из этого для него допустимо :) Пока мы даже не знаем на чем эта COM написана. Но вот первый Ваш вариант я сам плохо понял. Как приложение должно использовать офис для обработки действий пользователя? Я вижу только один вариант: COM в любом случае должна быть подвязана через References, чтобы к ней был доступ из VBA. И вот в шаблоне-то и реализовать на функции обратного вызова ленты вызов неких функций подключенной COM. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 22:40 |
|
|
start [/forum/topic.php?fid=61&tid=2173012]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 155ms |
0 / 0 |