Microsoft visual studio 2010 tools for office runtime x64 что это

Обновлено: 04.07.2024

Несмотря на обилие различных дополнений к Microsoft Office от сторонних поставщиков, для корпоративных разработчиков популярный пакет офисных приложений долгое время оставался в некотором смысле «вещью в себе» – полноценно интегрировать его в собственные решения было не так-то просто. Однако корпорация не прекращает попытки превратить Microsoft Office в мощную программную платформу для серьезных решений и предлагает для этого все более совершенные инструменты.

Хотя Microsoft Office действительно стал де-факто стандартом среди инструментов для работы с документами, его успехи в сфере автоматизации бизнес-процессов (ввода и обработки информации) гораздо скромнее. Программисты предпочитают не связываться с ограничениями Visual Basic for Applications (VBA) и готовы пожертвовать привычным для пользователей интерфейсом и широкими возможностями пакета в угоду простоте построения и большей управляемости конечных решений, к тому же нередко политика безопасности подразумевает полное отключение средств VBA. Альтернативный подход с применением COM также не заслужил особого признания по причине своей сложности, слабой документированности интерфейсов и значительных проблем при отладке готовых продуктов. В лучшем случае приложения Microsoft Office кое-как взаимодействовали с корпоративными системами, но отнюдь не становились центральным звеном.

Долгий путь от VBA к VSTO

Выяснилось однако, что крайне сложно (если вообще реально) придумать инструмент, в равной мере устраивающий разные категории разработчиков – от обычных пользователей, автоматизирующих рутинные операции, до создателей распределенных корпоративных систем. Причем с учетом изначального позиционирования Microsoft Office в худшем положении оказались именно последние, и простым совершенствованием весьма отставшего от времени языка программирования VBA ситуацию было не изменить – требовалось какое-то кардинальное решение.

Создание панелей задач для Microsoft Office ничем не отличается от разработки интерфейса с помощью WinForms

Хотя первая версия VSTO вполне справилась со своей основной задачей, она все же не вызвала заметного ажиотажа. Во многом это можно объяснить относительной новизной (на то время) предложенной платформы и консерватизмом разработчиков. Кроме того, пакет нельзя назвать легким в использовании: он требовал достаточно серьезных усилий по освоению новой парадигмы программирования, прилагать которые были готовы далеко не все – в отличие от подкупающего своей простотой VBA, философия VSTO предусматривала гораздо более высокий уровень квалификации.

Таким образом, первую версию VSTO вполне можно считать «пробным шаром» Microsoft, получившим высокую оценку квалифицированных разработчиков, но не снискавшим популярности в широких кругах офисных программистов и поставщиков корпоративных решений.

VSTO 2005: проще, нагляднее, лучше

Одновременно с Visual Studio 2005 появилась вторая существенно обновленная редакция VSTO, получившая название VSTO 2005. В целом следует отметить, что основные усовершенствования были направлены на повышение наглядности процесса программирования, что сделало его проще и доступнее даже для начинающих программистов.

Существует два типа VSTO-решений – уровня документов и уровня приложений. Первые разрабатываются и распространяются вместе с документами или шаблонами – в VSTO 2005 они доступны для Word и Excel, вторые представляют собой расширения (add-ins) функциональности и могут быть созданы только для Outlook. В любом случае поддерживаются только Microsoft Office 2003 и последующие версии, но не предыдущие.

Решения для офисных приложений в VSTO 2005 создаются в полностью визуальном режиме – Word или Excel загружаются непосредственно в среду разработки Visual Studio

Удобство использования панели задач проявляется в том, что формирование интерфейса пользователя в таком случае не отличается от построения обычных WinForms-форм. Единственное, что при этом следует принимать во внимание – ограниченные размеры панели, которая отображается как часть окна родительского приложения и при этом занимает существенно меньшую площадь, чем рабочая область.

Также VSTO позволяет создавать смарт-теги, удобные в том случае, когда при работе над документами нужно выполнять какие-то контекстно зависимые действия.

Весьма важным нововведением VSTO 2005 является возможность генерирования и манипулирования содержимым офисных документов на сервере без необходимости предварительной установки пакета Microsoft Office (избегать чего настоятельно рекомендует сама Microsoft). Раньше для обеспечения максимальной безопасности разработчикам приходилось обращаться к сторонним компонентам либо промежуточным форматам. Появившаяся в Microsoft Office 2003 поддержка XML стала существенным шагом вперед, однако из-за отсутствия обратной совместимости и ряда других проблем она также не нашла широкого применения. Теперь же компоненты VSTO манипулируют документами, используя такой же базовый программный код, что и соответствующие офисные приложения.

Распространение приложений в VSTO 2005

К сожалению, рассмотренные достоинства VSTO в определенной мере омрачаются одним досадным недостатком – сложностью развертывания готовых решений. Нынешний релиз VSTO требует от разработчика значительных усилий по обеспечению правильного распространения программ на клиентские машины. Впрочем, в немалой степени это вызвано довольно строгой моделью безопасности, изначально призванной исключить проблемы с вирусами и другим вредоносным кодом, свойственные, скажем, VBA.

Хотя на текущий момент нет доступной для тестирования версии VSTO для Office 12, с некоторыми ограничениями вполне можно применять и VSTO 2005

Конечно, все эти действия можно попытаться реализовать в процессе установки. Однако для конечных пользователей необходимость инсталляции документа выглядит далеко не очевидной процедурой, требующей к тому же полномочия администратора компьютера. В корпоративной среде на помощь может прийти технология ClickOnce, позволяющая опубликовать решение на общем ресурсе и организовать его автоматическое обновление, однако обеспечение пререквизитов и прав доступа все равно связано с дополнительными усилиями.

Вполне предсказуемо, что третья версия VSTO, ориентированная уже на Office 12, продолжит курс на упрощение создания приложений и всемерное использование возможностей популярного офисного пакета в бизнес-среде. К сожалению, на текущий момент Microsoft не распространяет тестовых версий VSTO 3, хотя ранний альфа-релиз был продемонстрирован еще на конференции PDC 2005 в сентябре прошлого года. Однако это вовсе не означает, что в настоящее время разработчики не могут создавать приложения для Office 12 – с этой задачей справляется и VSTO 2005, хотя и не позволяет использовать все нововведения. Необходимость обеспечения обратной совместимости была одним из главных ориентиров при разработке очередной версии Microsoft Office – такой подход защищает инвестиции и прибавляет уверенности программистам, избравшим данную технологию.

Тем не менее наиболее принципиальные моменты VSTO 3 известны уже сегодня.

Так, будет обеспечена возможность создания расширений (add-ins) для всех приложений офисного пакета (а не только Outlook, как это было в VSTO 2005). Панели задач станут поддерживаться на уровне не только отдельных документов, но и самого приложения, что, безусловно, позволит реализовать более универсальные решения. Полностью будут задействованы все специфические функции Office 12, среди которых особенно важны XML-формат и новый пользовательский интерфейс.

Прямой доступ к внутренней структуре документа посредством XML предоставляет разработчикам широчайшие возможности по генерированию и форматированию документов, а также извлечению из них необходимых данных. Таким образом открываются совершенно новые перспективы для построения систем автоматизированной обработки информации.

Использование смарт-тегов в VSTO позволяет создавать контекстно зависимые команды

Нельзя недооценивать и возможности адаптации Office 12. Ведь, к примеру, контекстно зависимые ленты (основа интерфейса нового пакета) способны в нужный момент акцентировать внимание пользователя только на актуальных инструментах, тем самым упрощая взаимодействие с серверными компонентами или корпоративными системами.

Вообще VSTO 3 будет поддерживать серверные технологии в той же мере, как и сам Office 12. Тем более что и SharePoint Services, и Groove изначально ориентированы на программное расширение функциональности за счет, скажем, новых workflow-моделей, поддерживаемых технологией WWF.

Задачи, решаемые с помощью VSTO

Используя VSTO, можно строить различные решения, начиная с дополнений для приложений Microsoft Office, спектр которых по мере роста популярности XML-форматов наверняка расширится. Но, пожалуй, самая логичная и привлекательная сфера его применения – корпоративная среда с большим количеством задач по вводу и обработке информации.

Как правило, сотрудники современных компаний применяют в своей практике целый ряд приложений, слабо интегрированных между собой. Очень часто в этом наборе пакет Microsoft Office играет весьма заметную роль, но его использование обычно ограничивается стандартными операциями по вводу первичной информации и подготовке отчетности. Учет специфики бизнес-процессов и взаимодействие с корпоративными системами реализуется главным образом либо заказным ПО, либо посредством Web-интерфейса, что в любом случае подразумевает дополнительные операции.

Теперь, благодаря VSTO, ничто не мешает разработчикам обеспечить интерфейс к корпоративным системам непосредственно в привычных офисных приложениях, что в конечном итоге позволит повысить производительность труда пользователей. Следует отметить, что такие решения сулят значительные преимущества перед популярными в настоящее время «тонкими» клиентами, основанными на применении браузеров, поскольку предлагают более удобный интерфейс и значительное число вспомогательных инструментов. В определенном смысле данный подход объединяет в себе достоинства как «тонких», так и «толстых» клиентов и прекрасно укладывается в современную концепцию «умных» клиентов (smart clients), продвигаемую Microsoft.

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

Заключение

Еще одно заметное преимущество – легкость интеграции сторонних разработок с продуктами самой Microsoft, что особенно хорошо заметно на примере Microsoft Office. На наш взгляд, именно VSTO (вместе с некоторыми новациями Office 12) позволит офисному пакету окончательно завоевать признание в корпоративном секторе, где очень важно уменьшить количество клиентских приложений и сократить время, затрачиваемое на обучение персонала.

VSTO заменяет выпуски для разработчиков Office 2000 и Office XP для разработки Office. Выпуски Office для разработчиков были прекращены после того, как Office XP и VSTO стали доступны только для Office 2003 и более поздних версий. Среда выполнения VSTO, хотя и является частью инструментов разработки VSTO, при необходимости также может быть загружена отдельно. Разработка надстройки COM по-прежнему возможна для Office 2000 и всех более поздних версий с использованием шаблона общей надстройки в любой версии Microsoft Visual Studio .

Позже Visual Studio Tools для Office 2005 Second Edition (VSTO 2005 SE) был выпущен как бесплатная надстройка к Visual Studio Professional и выше, которая включает поддержку Office 2007 и 2003. Однако для Visual Studio Professional Edition он устанавливает только надстройки уровня приложения; он не добавляет настройки уровня документа или другие функции (панель действий, главные элементы управления, визуальный дизайнер документов и т. д.), доступные в полной версии выпусков VSTO или Team System.

Текущая версия - Visual Studio Tools для Office 2012 (VSTO 4.5), совместимая с Office 2016, Office 2013, Office 2010 и Office 2007.

СОДЕРЖАНИЕ

Сравнение с VBA

Как и VBA, код, написанный для VSTO, выполняется отдельной виртуальной машиной (CLR), которая размещается внутри приложений Microsoft Office. Однако, в отличие от VBA, где код хранится в самом файле документа , программы, написанные с помощью VSTO, хранятся в отдельных сборках CLI, которые связаны с документами с помощью настраиваемых свойств.

Разработка VSTO обычно выполняется с использованием Visual Studio, используемого профессиональными программистами. Приложение Office запускается (повторно) для каждого сеанса отладки. VBA обычно разрабатывается из приложения Office и не требует специальных инструментов. VBA также имеет записывающее устройство макросов, которое может генерировать код VBA из действий пользователя, что полезно для непрофессиональных программистов.

Сравнение с JavaScript API

Надстройки JavaScript API легко переносятся на такие платформы, как iOS, мобильные телефоны, планшеты и Windows. Полный процесс и цикл лицензирования просты и поддерживаются в надстройках. Интерактивная визуализация возможна в надстройках JavaScript API с использованием диаграмм, клипов и карт.

Разработка надстроек JavaScript API - сравнительно новая технология, представленная в Office 2016. Доступны и поддерживаются ограниченные API и функции.

Совместимость с VSTO и функциональность надстроек

Последней версией VSTO по состоянию на 2018 год является «Инструменты Office для Visual Studio», которая доступна во всех версиях Microsoft Visual Studio 2017.

Среды выполнения VSTO 2003, 2005, 3.0 и 2010 устанавливаются в параллельном (SxS) режиме. Среда выполнения VSTO 2005 SE заменяет более раннюю среду выполнения VSTO 2005. Среда выполнения VSTO 2010 устанавливается параллельно с VSTO 3.0, однако приложения Office 2007 также могут использовать среду выполнения VSTO 2010. Все старые решения VSTO будут продолжать работать в более новых версиях Office, пока установлена ​​среда выполнения, для которой они были разработаны.

Решения VSTO, разработанные для новых версий Office, не будут работать в более старых версиях Office, поскольку в них отсутствуют необходимые первичные сборки взаимодействия (PIA). Приложения Office 2010 всегда будут использовать среду выполнения VSTO 2010. Поддержка во время разработки выглядит следующим образом:

Код, разработанный с помощью различных выпусков VSTO, будет работать только с определенными выпусками и выпусками Microsoft Office 2003 и связанных продуктов. В частности, решения VSTO, разработанные в выпусках до VSTO 2005 SE, не будут работать ни с одним выпуском Office 2003, кроме Professional. Решения VSTO, разработанные с помощью VSTO 2005 SE, будут работать с Office 2003 Standard (только надстройки уровня приложений) и Professional. Решения VSTO 2005 SE будут работать со всеми выпусками Office 2007.

В статье приведена инфраструктура Windows Forms проекта, в котором Microsoft Word воспринимается приложением в качестве шелла. В статье раскрыты несколько интересных моментов использования Composite UI Application Block, в частности подключение инфраструктуры доменной модели Word в сервисам расширения каркаса, а так же приведены некоторые факты и особенности разработки с использованием средств VSTO.

Задача

Предположим, у нас есть несколько десятков людей, которые пишут документы и постоянно работают с их редакциями. Sharepoint и другие порталы по каким-то причинам не подходят, поэтому требуется реализация собственной бизнес-логики. Усложним задачу — люди работают в области, очень далекой от компьютерной тематики и хорошо знают только пакет Microsoft Office. Еще усложним — контора бедная, Microsoft Office у большинства народа версии 2003-ей. Кое где, у больших начальников и Главного босса стоит 2007ой. Парк машин разнородный — начиная от 2000-ой винды и до Windows Vista.

Решение

А к чему все это?

(Это кому не терпиться узнать, чем все закончится). На выходе я выложу Visual Studio solution, который позволит в полпинка создать свое приложение, подключаемое в Microsoft Word. По ходу дела я объясню практически все, что и как в этом солюшене используется.

Что потребуется для работы

  1. Microsoft Word 2003 SP3
  2. Visual Studio 2005 или 2008

Зачем CAB?

Для того, чтобы определить явное разделение функционала, связанного с Microsoft Word от простой Windows Forms логики. Проще говоря, наш плагин будет являться модулем CAB, и при желании, мы легко сможем подключить эту логику в другие приложения CAB. Еще проще говоря, использование CAB минимизирует количество glue-кода.

Есть еще две причины, по которым я включил CAB в решение. Первая состоит в том, что я уже давал описание этого каркаса здесь, а теперь хочу привести полноценный работающий пример. Вторая причина более банальная — мне нравится CAB, он делает мир и вещи в нем проще:)

Подробнее про VSTO

  1. Уровень документа (Document Level Customization)
  2. Уровень приложения (Application Level Customization)

Если кто заинтересовался возможностями VSTO — очень много про них есть в msdn.

Псевдозадача

Создадим маленький пример, иллюстрирующий все вышесказанное. Пусть есть требование, согласно которому пользователь может выделять текст из документа Microsoft Word и получать этот выделенный текст в окошке пользовательского элемента (знаю, дурацкий пример, но более сложного делать не хочется, а менее сложный уже трудно придумать).

Более подробно. Пользователь запускает Microsoft Word. После запуска среди тулбаров пользователю будет доступен ТР — тулбар расширения (т.е., нашего расширения). На нем находится кнопка, по нажатию которой пользователю показывется окно с кнопкой «Получить текст» и элементом управления multiline textbox. Пользователь нажимает на кнопку «Получить текст», выделенный в документе текст копируется в textbox. Все счастливы.

Понятно, что для жизни пример малопригоден. Но создаваемая инфраструктура позволит довольно просто нарастить на него «мускулы», если это, конечно, кому-то потребуется.

Создание solution

После установки VSTO в студии при создании нового solution станут доступны Office проекты:


Будьте аккуратны с названием — оно одновременно будет являться названием root namespace и поменять его можно будет только ручками через выгрузку проекта.


На выходе получается солюшен с двумя проектами:

WordCAB — это, собственно, add-in. Второй — не менее важный, это deployment проект для модуля расширения. Почему он важен?

Дело в том, что установка модуля расширения на рабочие станции пользователей — весьма трудоемкая затея. Она заключается не только в том, чтобы просто скопировать библиотеки в нужную папку. Для успешного фукнционирования модуля требуется прописать кучу ключей в реестр. Если копнуть глубже, получается, что модуль расширения подключается к Microsoft Office как COM-библиотека, со всеми вытекающими. Кому интересно, все нужные ключи реестра можно поглядеть в deployment-проекте (Нажать правой кнопкой, View->Registry).

В классе ThisAddIn находится точка доступа в модуль:

private void ThisAddIn_Shutdown( object sender, System. EventArgs e)
>

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
this .Startup += new System.EventHandler(ThisAddIn_Startup);
this .Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
>

* This source code was highlighted with Source Code Highlighter .

В ThisAddIn_Startup будем писать код. Если быть точнее, будем запускать CAB-приложение.

Что такое CAB-приложение?

Это класс такой. В нем есть точка запуска — метод Run() , и некоторая инфраструктура каркаса — в частности, имеются доступ к главному прецеденту «Приложение» (т.е., к основному, рутовому WorkItem) и возможности переопределить системные сервисы, добавляемые в приложения по-умолчанию. Этот класс уже реализован в базовом виде, а программисту требуется параметризировать его — указать тип рутового прецедента и тип главной формы:

internal sealed class AddInApplication : WindowsFormsApplication<AddInWorkItem, object >
protected override void Start()
>
>

* This source code was highlighted with Source Code Highlighter .

В качестве типа главной формы (шелловой формы), указан object. Почему? Потому что приложение запускается в Microsoft Word, поэтому необходимости создавать главную форму нет. Форма Microsoft Word и есть главная форма, правда, без традиционных для нее возможностей.

По ходу пьесы мне пришло в голову немного прояснить модель приложения для модуля расширения в Microsoft Word.

Модель приложения Word Add-in

Итак, пользователь работает с документами. Более того, в единицу времени он может работать только с одним документом. Поэтому модуль расширения имеет четкий контекст — текущий открытый документ. (Кстати, в модели Microsoft Word VSTO этот документ обозначен как Globals.ThisAddIn.Application.ActiveDocument ). Отсюда (я сделал) вывод (или упрощение) — показывать пользовательские бизнес-элементы имеет смысл в модальном режиме, поскольку в ином случае нарушается контекст. Элементы управления, открытые для одного документа, должны существовать только во время активности этого документа.

Пример — пользователь открыл документ и открыл его карточку (не в модальном режиме). Переключился на другой документ, а карточка осталась для предыдущего — нарушение контекста и целостности восприятия. Разумеется, подобное поведение контролировать можно (и даже нужно, в некоторых случаях), но модальность элементов управления и жесткая их привязка к текущему активному документу делает жизнь проще.

Modal Workspace

Пользовательские элементы управления в каркасе CAB показываются в специальных так называемых рабочих зонах (Workspace). Согласно описанному выше поведению, нам требуется показывать элементы управления в модальном режиме. Поскольку родной CAB-овский WindowWorkspace оказался дубоват и выглядит некрасиво, я написал простенький свой — приводить код не буду, потому что его пара-тройка экранов. Насладиться творчеством можно скачав solution с кодом (ссылка на архив приведена в конце статьи).

Workspaces.Add(( new SimpleModalWorkspace() ), WorkspaceNames.MainWorkspace);

* This source code was highlighted with Source Code Highlighter .

Итого: под ключем-идентификатором WorkspaceNames.MainWorkspace зарегистрировали модальную рабочую зону. Доступиться до нее теперь можно откуда угодно, где есть ссылка на главный прецедент: запрос интерфейса IWorkspace из коллекции Workspaces по указанному выше ключу. Все просто, как апельсин! (с) х/ф «Терминатор 2»

Фабрика элементов управления Microsoft Word

Речь пойдет о тулбаре Word и кнопках на нем. В VSTO это обертки над COM-объектами — CommandBar и CommandBarButton из пространства имен Microsoft.Office.Core . Жутко глючные штуки, если честно, особенно их анимация. Понять все тонкости и детали удалось только после ударного троллинга на форумах VSTO.

В чем идея — идея состоит в том, чтобы избавить программиста и разработчиков бизнес-модулей от необходимости работать с COM-обертками. Для этого, мы (то есть, я) интегрируем модель Misrosoft Word в механизм так называемых мест расширения (UiExtensionSite) каркаса CAB.

  1. В массив тулбаров Microsoft Word вставляется тулбар
  2. В коллекцию кнопок на тулбаре вставляется кнопка
  3. В кнопку уже ничего не вставляется (не рассматриваем случае комбобоксов, хотя они присутствуют), поэтому это терминальный объект
  1. IWordCommandBarContainer — контейнер тулбаров Microsoft Word
  2. IWordCommandBar — контейнер кнопок на тулбаре
  3. IWordButton — кнопка

К слову сказать, помимо определения элементов управления Word конкретные типы интерфейсов IWordCommandBar и IWordButton являются адаптерами к упомянутым выше CommandBar и CommandBarButton соответственно.

Для того, чтобы каркас понял, что, куда и, главное, каким образом вставлять, ему необходимо зарегистировать фабрику адаптеров для пользовательских элементов управления. В нашем случае, вставлять можно тулбары (в коллекцию тулбаров) и кнопки (в коллекцию кнопкок на тулбаре). Поэтому, регистрировать фабрику адаптеров нужно для IWordCommandBarContainer и для IWordCommandBar . Потом, когда пользователь будет получать место расширения, каркас будет искать инстансы классов добавления подчиненных элементов для этого места расширения, после чего использовать их по назначению — добавлять элементы. Ну а чтобы не заморачиваться, эти инстансы порождаются фабрикой:

public class CommandBarUIAdapterFactory : IUIElementAdapterFactory
public IUIElementAdapter GetAdapter( object uiElement)
if ( uiElement is IWordCommandBarContainer ) //тулбары
return new CommandBarUIAdapter(( IWordCommandBarContainer )uiElement);
if ( uiElement is IWordCommandBar ) //кнопки в тулбарах
return new CommandBarButtonUIAdapter(( IWordCommandBar )uiElement);

throw new ArgumentException( "uiElement" );
>

public bool Supports( object uiElement)
return ( uiElement is IWordCommandBarContainer ) || ( uiElement is IWordCommandBar );
>
>

* This source code was highlighted with Source Code Highlighter .

А вот реализация коллекции тулбаров (с возможностью добавить новый!)

private object _null = System.Reflection.Missing.Value;

* This source code was highlighted with Source Code Highlighter .

С кнопками на тулбарах аналогично. Гляньте код на досуге.

Пришлось, к слову, создавать фабрику самих кнопкок и тулбаров (см. IWordUIElementFactory ). Дело в том, что модули CAB работают с интерфейсами IWordCommandBar и IWordButton . Конкретные типы этих интерфейсов находятся в сборке VSTO Word-AddIn и завязаны на Microsoft.Office.Core . Поэтому, чтобы в модулях (где отсутствует ссылка на Office) была возможность получать инстансы указанных элементов, создается фабрика. Она регистрируется в главном WorkItem.

Services.AddNew<WordUIElementFactory, IWordUIElementFactory>();
IUIElementAdapterFactoryCatalog factoryService = base .Services.Get<IUIElementAdapterFactoryCatalog>();
factoryService.RegisterFactory( new CommandBarUIAdapterFactory());

UIExtensionSites.RegisterSite(UIExtensionSiteNames.WordBarsSite, new BarCollection());

* This source code was highlighted with Source Code Highlighter .

Если вы запутались, извините:) Я сам понимаю, что тут без поллитры не разберешься. (Если подебажиться, то многое становится понятным.)

Модуль CAB

Это обычная сборка. В ней должен быть класс ModuleInit . В этом классе есть ссылка на главный прецедент AddInWorkitem и, как следствие, есть доступ ко всему добру, про которое я писал выше.

Задача модуля CAB такова — подгрузиться к главному преценденту, вставить тулбар, вставить кнопку на него, описать обработчик кнопки:

UIExtensionSite site = _rootWorkItem.UIExtensionSites[UIExtensionSiteNames.WordBarsSite];
IWordCommandBar mainBar = site.Add<IWordCommandBar>(_factory.CreateBar( "AddInToolbar" ));

IWordButton btn = _factory.CreateButton(mainBar, CommandNames.OpenForm, ToolStripItemDisplayStyle.ImageAndText, "Открыть окно" ,
"Открыть форму просмотра Custom Control" , Resources.OpenForm, false );

mainBar.AddButton(btn);
btn.Click += new EventHandler<WordButtonClickArgs>(ButtonClick);

* This source code was highlighted with Source Code Highlighter .

Обработчик кнопки будет создавать пользовательское окно с кнопкой «получить текст» и текстовым полем, после чего показывать его (применив специальный модификатор показа WindowSmartPartInfo ) в ранее упомянутой рабочей зоне (которую, как мы помним, я зарегистрировал в прецеденте под ключем WorkspaceNames.MainWorkspace ):

private void ButtonClick( object sender, WordButtonClickArgs e)
object smartPart = _rootWorkItem.SmartParts.AddNew<SampleSmartPart>();
WindowSmartPartInfo info = new WindowSmartPartInfo();
info.FormStartPosition = FormStartPosition.CenterScreen;
info.MaximizeBox = false ;
info.MinimizeBox = false ;
info.Resizable = false ;
info.Title = "Custom Control" ;
info.ShowInTaskbar = false ;
_rootWorkItem.Workspaces[WorkspaceNames.MainWorkspace].Show(smartPart, info);
>

* This source code was highlighted with Source Code Highlighter .

Подгрузка модуля

Здесь я сделал финт коленом. Обычно модули подгружаются в каркас через специальный декларативный формат подгрузки — так называемый ProfileCatalog. Обычно, это хороший способ подключить все, что нужно. Но, учитывая суровые советские реалии, имеется ненулевая вероятность того, что программисту потребуется недекларативная логика подключения модуля. Для этого мы будем переопределять специальный сервис перечисления подгружаемых модулей — IModuleEnumerator . Я сделал его очень простым — он глядит в папку исполняемой сборки и ищет в ней модуль под названием CustomModule.dll. Находит, и подгружает. Ну, или не подгружает, если не находит:

public IModuleInfo[] EnumerateModules()
List <IModuleInfo> result = new List <IModuleInfo>();

string path = GetModulePath(ModuleName);
if ( File .Exists(path) )
result.Add( new ModuleInfo(ModuleName));
return result.ToArray();
>

* This source code was highlighted with Source Code Highlighter .

Сейчас эта служба очень простая, но при желании, разумеется, в нее можно нагородить хоть черта лысого. Например, подгружать модули из базы данных:)

Перегрузить эту службу нужно в классе приложения CAB:

protected override void AddServices()
base .AddServices();

RootWorkItem.Services.Remove<IModuleEnumerator>();
RootWorkItem.Services.AddOnDemand<CustomModuleEnumerator, IModuleEnumerator>();
>

* This source code was highlighted with Source Code Highlighter .

Доктор, я устал. Что получилось?


Получилось то, что задумывалось в изначальном псевдопримере:

В тулбарах Microsoft находится наш тулбар, на нем висит кнопка с иконкой, по событию нажатия кнопки вылезает пользовательский элемент управления, в текстовое поле которого с помощью кнопки можно загнать выделенный в документе текст:) Тривиально, но обратите внимание, как ничтожна связность между объектами! Хочется подметить, что у каркаса, при должном обращении, идеальная code maintainability.

Внимание! Подводные камни!

Security

The operation you are performing will alter security policy.
Are you sure you want to perform this operation? (yes/no)
yes
Added union code group with "-url" membership condition to the User level.
Success

Вместо "D:\Projects\WordCAB\bin\Debug\*" нужно указать папку, из которой производится запуск Add-in. Не забудьте про звездочку.

Add-in перестал загружаться!

Иногда, когда в модуле возникает необработанный Exception, Word блокирует исполнение этого модуля при следующей загрузке. Зайдите Help->About->Disabled Items и посмотрите, нет ли в списке вашего расширения. Если есть, уберите его оттуда. При следующем Run-Debug он появится.

Как убрать

Удаление расширения не такое тривиальное. Вытащите кнопку COM-AddIns на тулбар Microsoft Word. Для этого надо зайти в Tools->Customize->Tools->(Drag'n'Drop)COM-AddIns. Кликните на нее и снимите галку с вашего расширения. Он выгрузится. Чтобы заново подгружать, наоборот, выставите галку обратно. Другой способ — зайти в панель управления и удалить из программ.

А что с Word 2007?

Add-in замечательно подгружается в Ribbon на последнюю вкладку.

Там еще кучка мелких подводных камней. Но я тут и так уже настолько много написал, что не уверен, что кто-нибудь до конца дочитает:)

Microsoft Visual Studio 2010 — интегрированная среда для разработки приложений на Windows, Linux и Mac OS. Содержит набор инструментов для тестирования и отладки кода, позволяющих быстро находить и исправлять ошибки.

Возможности Microsoft Visual Studio 2010

  • Быстрое создание нового проекта;
  • Отслеживание и устранение ошибок;
  • Ручная регулировка рабочей области;
  • Поддержка одно- и многоядерных процессоров;
  • Хранение базы данных с помощью SQL Server Express;
  • Совместимость с Microsoft Windows XP (32, 64 bit) и выше;
  • Visual Studio Ultimate Облегчает процесс разработки программного обеспечения;
  • Встроенные инструменты для отладки и статического анализа кода на языке C++;
  • Возможность использования структурных диаграмм для определения и связывания логической архитектуры приложения.
  • Microsoft Visual C++ 2010 Не поддерживает выпуски Starter XP и Vista;
  • Есть платная версия Visual Studio Professional.

Системные требования:

  • ОС Windows Server 2003 (x86, x64) и выше;
  • Компьютер с процессором с тактовой частотой 1,6 ГГц;
  • 1024 МБ ОЗУ (1,5 ГБ при выполнении на виртуальной машине)
  • Свободного места на HDD: от 3 Гб;
  • Жесткий диск с частотой вращения 5400 об/мин;
  • Видеоадаптер, соответствующий стандарту DirectX 9 и поддерживающий разрешение экрана 1024 x 768 или выше.

VirtualBox

Android Studio

NetBeans

MATLAB

Microsoft Visual Studio 2010 скачать бесплатно

Последняя версия:
10.0.60724.0 от 12.03 2015

Разработчик: Microsoft Corporation

Операционные системы:
Windows 7, 8, 10, XP, Vista

Размер файла: 38.2 Mb

Полное описание

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

Читайте также: