Можно ли обрабатывать события нажатия кнопки на пользовательской кнопке ленты из другого приложения с помощью взаимодействия?
Итак, если я создал надстройку приложения Word 2010, которая создает настраиваемую вкладку с несколькими кнопками, а затем я создаю экземпляр приложения Word из приложения форм C # win с помощью взаимодействия, как мне тогда выполнить подключение к события нажатия кнопки на моей настраиваемой ленте из приложения выигрышных форм? В Word 2003 я мог получить доступ к кнопкам через коллекцию CommandBars, а затем просто подключиться к событию click.
После некоторого дальнейшего чтения, я думаю, что я пытаюсь сделать, это выяснить, как получить доступ к объектной модели ленты с помощью взаимодействия. Это возможно?
[редактировать]
Для всех, кто заинтересован. Когда я писал этот вопрос, я знал о другом способе решения моей проблемы, но это означало много дополнительной работы по изменению моей существующей реализации для обновления с Office 2003 на Office 2010, и поэтому я надеялся, что будет отсутствовать доступ к объекту ленты модель вне надстройки VSTO.
Мое решение состоит в том, чтобы использовать IpcChannel для вызовов из надстройки vsto в мое приложение win-forms. Таким образом, мое приложение win-forms инициализирует экземпляр Word, а затем открывает канал сервера. В надстройке vsto я обрабатываю Application.DocumentOpen, и, если документ принадлежит моему приложению, я открываю клиентский канал для своего приложения. Затем я могу перезвонить моему приложению win-forms из надстройки vsto с помощью общих интерфейсов.
Хотя эта техника работает, у нее есть некоторые недостатки. Если вызовы через канал ipc являются синхронными, то мое приложение не может коснуться слова объекта, потому что возникает тупик. Выполнение асинхронных вызовов создает другие проблемы, но я обнаружил, что могу заблокировать окно Word с помощью модального диалогового окна без блокировки.
Хотя это не точный ответ на мой первоначальный вопрос, это альтернатива, и поэтому я подумал, что поделюсь этим с кем-либо еще, кто имеет эту проблему.
Если кто-нибудь знает, как получить доступ к объектной модели ленты за пределами VSTO, мне все равно будет интересно узнать, как это сделать.