Оценка 345 Оценить ![]() ![]() ![]() ![]() ![]() ![]()
|
| Предисловие Запуск IDE Кодирование Подводя итоги | ![]() |
vbagent.zip – пример для VB.NET
csagent.zip – пример для C#
В данной статье речь пойдет об использовании технологии MS Agent в Microsoft .NET Framework. Основной упор будет сделан на использовании в среде VB.NET. Но С#-программистам не составит большого труда на основании данной статьи понять основные принципы работы с MS Agent.
Прежде чем перейти к разбору примеров, давайте посмотрим на область применения технологии MS Agent. Сначала MS Agent являлась отдельным продуктом, который можно было скачать с сайта Майкрософт. Российские пользователи могли познакомиться с данной технологией, приобретая программный продукт известной питерской компании PROMT под названием Magic Gooddy 98. Волшебный гусь представлял собой переводчик, ориентированный на детскую аудиторию. Но его услугами с удовольствием пользовались и взрослые, плохо знающие английский язык. Переводчик представлял собой обычый текстовый редактор, разделенный на две части. Вводимые в одну часть редактора слова автоматически переводились на другой язык. Фишка заключалась в том, что можно было воспользоваться услугами виртуального персонажа, который мог воспроизвести текст вслух! Этот пример иллюстрирует, для чего собственно была разработана данная технология.
Исследования показали, что у части пользователей существует определенный страх перед машиной. Диалог с машиной с помощью клавиатуры и мыши пугает пользователя. Исследователи установили, что общение с компьютером станет более эффективным, если будет происходить в форме человеческого общения. Майкрософт решила попробовать воплотить эти рекомендации в жизнь. Была предложена концепция общения через виртуального персонажа. Это не обязательно должен быть человек, но, например, симпатичный зверек или знакомый предмет. Наиболее известным продуктом, в котором применили новую форму общения, стал MS Office 97, где пользователи смогли познакомиться со Скрепкой. На основе этой и целого ряда других разработок Майкрософт выпустила на рынок технологию MS Agent. Причем проект получился настолько обнадеживающим, что, начиная с Windows Me/2000, MS Agent является уже составной частью операционной системы. MS Office XP также использует помощников MS Agent.
| ПРИМЕЧАНИЕ Скрепка из Office 97 не является персонажем MS Agent, несмотря на свою определенную схожесть. А в MS Office XP ассистент Скрепка уже полноценный персонаж MS Agent. |
Программисты, которые еще никогда не видели этих персонажей на своем компьютере, могут сделать это прямо сейчас. Откройте Пуск-Поиск и вы увидите собачку Тузика. Если выбрать пункт Настроить помощника, то можете установить другого персонажа, установленного на вашем компьютере (если таковые имеются).
Рассмотрим пример использования MS Agent в VB.NET. Запускаем среду разработки Microsoft Visual Studio .NET 2003, выбираем вкладку New Project. У вас откроется окно выбора типа проекта. Выбираем Windows Application и щелкаем на кнопке OK. Добавим на форму несколько элементов управления: список ListBox1, две кнопки Button1 и Button2. Свойству Text для кнопок присвоим значения Женский голос и Мужской голос соответственно.
| ПРИМЕЧАНИЕ Так как наш пример предназначен исключительно для иллюстрации статьи, мы оставляем все имена элементов управления без изменений. При разработке собственных приложений используйте говорящие имена (например, lstAnimationNames вместо ListBox1). |
О назначении этих элементов мы поговорим позже, а пока приступим к подключению MS Agent к проекту. Так как мы собираемся использовать MS Agent через ActiveX control, то необходимо добавить ссылку на данный элемент. В меню Project выбираем пункт Add Reference. Затем в следующем окне надо выбрать вкладку COM и найти в списке строку Microsoft Agent Control 2.0. Выделите найденную строку и нажмите кнопку Select (рисунок 1).
Рисунок 1. Окно Add Reference
Следующим шагом будет добавление элемента на панель инструмента. В меню Tools щелкаем на пункте Add/Remove Tools Item и в появившемся диалоговом окне Customize Toolbox переходим на вкладку COM Components, ставим галочку напротив Microsoft Agent Control 2.0 (рисунок 2) и щелкаем на кнопке OK.
Рисунок 2. Окно Customize Toolbox.
Теперь, если вы посмотрите на панель инструментов, то увидите на ней новый значок Microsoft Agent Control 2.0.
| ПРИМЕЧАНИЕ В реализации .NET Framework данный объект носит имя AxAgent, в отличие от имени Agent, которое применялось в Visual Basic 6.0. |
Дальше все уже знакомо по прежней версии, VB 6.0. Добавляем на форму элемент AxAgent1 (см. рисунок 3). Подготовительная работа закончена. Можно приступать к кодированию.
Рисунок 3. Элемент AxAgent1 на форме.
В результате всех манипуляций в папках проекта создаются два файла - Interop.AgentObjects.dll и AxInterop.AgentObjects.dll. Причины появления этих файлов выходят за рамки статьи, просто примите это к сведению.
Написание кода для VB.NET 2003 принципиально ничем не отличается от кода на VB 6.0. Практически вся документация по технологии MS Agent на http://msdn.microsoft.com написана применительно к Visual Basic. Тем, кто не очень дружит с английским языком, могу посоветовать скачать русскоязычный Справочник по MS Agent в среде VB, доступный по адресу http://rusproject.narod.ru/guide.htm. Для начала создадим глобальную переменную для загружаемого персонажа:
Dim MyChar As AgentObjects.IAgentCtlCharacterEx |
Теперь можно загружать персонаж. Удобнее всего это делать при загрузке формы:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Загружаем персонаж AxAgent1.Characters.Load("CharacterID") MyChar = AxAgent1.Characters("CharacterID") ' Заполняем список анимаций ListBox1.Items.Clear() For Each animation In MyChar.AnimationNames ListBox1.Items.Add(animation) Next End Sub |
Одновременно с загрузкой персонажа мы выведем список доступных анимаций выбранного персонажа. Цикл For Each…Next перебирает все доступные анимации персонажа, которые хранятся в коллекции AnimationNames и выводит их в список.
Теперь самое время писать код для кнопки, которая будет отвечать за показ персонажа на экране. В данном примере мы используем для загрузки персонажа по умолчанию, который после своего появления будет говорить женским голосом.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Показываем персонаж MyChar.Show() ' Устанавливаем русский язык MyChar.LanguageID = &H419 ' Устанавливаем женский голос MyChar.TTSModeID = "{06377F80-D48E-11d1-B17B-0020AFED142E}" ' Говорим MyChar.Speak("Здравствуйте, я ваша тетя!") End Sub |
Метод Show выводит персонаж на экран. Затем мы устанавливаем соответствующие язык и голос для персонажа, который должен сказать заданные слова (см. рисунок 4).
Как нетрудно догадаться, чтобы персонаж заговорил мужским голосом, надо лишь присвоить свойству TTSModeID соответствующее значение.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ' Мужской голос MyChar.TTSModeID = "{06377F81-D48E-11d1-B17B-0020AFED142E}" MyChar.Speak("Извините, я пошутил!") End Sub |
Рисунок 4. Приложение в действии.
| ПРЕДУПРЕЖДЕНИЕ Для того, чтобы персонаж заговорил (через динамики), необходимо установить несколько дополнительных файлов. В частности, для возможности говорить по-русски, нужно установить соответствующий голосовой движок Lernout & Hauspie TTS3000 TTS engine – Russian. А владельцам машин под управлением Windows XP придется также установить поддержку SAPI 4.0. Дело в том, что в Windows XP уже имеется встроенная SAPI 5.1, не обладающая обратной совместимостью с SAPI 4.0. Это вызвало волну недоумения на форумах, посвященных MS Agent. Не проходит месяца, чтобы очередной новичок не задал вопрос – «Почему на моем компьютере под WinXP персонажи не говорят?». Эти две версии могут сосуществовать вместе в одной системе. Более подробную информацию об установке необходимых файлов вы можете посмотреть на странице http://www.microsoft.com/msagent/downloads/user.asp |
Мы рассмотрели простейший пример работы с персонажами MS Agent 2.0 на VB.NET 2003. Следует отметить, что в C# принципы подключения элемента MS Agent к проекту будут аналогичны приемам, используемым при работе на VB.NET. Разница заключается только в синтаксисе языка. Повторяем последовательность действий, которую мы уже делали для примера на VB.NET: Project-Add Reference-COM-Microsoft Agent Control 2.0. Добавляем выбранный элемент на форму, и у нас все готово к написанию примера. Повторяю, что меняется только синтаксис языка, поэтому нет смысла описывать подробно все строчки кода. Готовый пример поставляется вместе со статьей. Обратите внимание, что в примере на C# явно указыван путь к файлу персонажа, который находится в стандартной папке Windows\MSAgent\chars. Если вы распространяете собственный персонаж вместе с программой, то укажите его полное имя (путь и имя файла). Всем, кто заинтересовался персонажами, советую прогуляться на сайт http://characters.narod.ru/, на котором собрана внушительная коллекция помощников на любой вкус. Удачного вам программирования!
Оценка 345 Оценить ![]() ![]() ![]() ![]() ![]() ![]()
|