Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...

Использование Microsoft Agent
Автор: Матвеев Игорь

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

Персонаж GENIE Персонаж MERLIN Персонаж ROBBY

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

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

 Для дальнейших экспериментов вам прежде всего необходимо установить себе MS Agent-a, думаю, найти его можно на http://www.microsoft.com/workshop/prog/agent/agentdl.htm или на дисках VisualStudio (там есть еще три персонажа и редактор персонажей в придачу),- дистрибутив имеет размер ~350 kb. А также характер - это файл анимационного персонажа, который и будет виден на экране. Это файлы с расширением *.acs (офисовские не подходят). Характер можно взять из переводчика Magic Gooddy, с дисков VisualStudio или других.

 Итак, далее подразумевается, что у вас уже установлен MS Agent и есть по крайней мере один персонаж. Теперь вам нужно установить ActiveX компонент агента. В Delphi выберите пункт "Компоненты->Импорт компонента ActiveX" и найдите в списке что-то вроде "Microsoft Agent Control 2.0". После установки в палитре компонентов на вкладке ActiveX появится новый компонент,- через него мы и будем управлять помощником.

 Установите на форму компонент Agent1, Edit1, Memo1 и две кнопки Button1 и Button2. По нажатию на первую кнопку будет загружаться MS Agent и персонаж, а на вторую кнопку мы будем вешать различные команды для агента.

 В поле Edit1.Text введите путь к файлу характера, а в Memo1.Text - то, что должен будет говорить помощник (должно быть на английском языке, вообще-то можно и на русском, но я пока не знаю как).

 В обработчик нажатия первой кнопки впишите следующий код:

Agent1.Characters.Load('MyAgent', Edit1.Text);

 Далее обращаться к этому персонажу (а их может быть несколько) нужно так:

Agent1.Characters['MyAgent']. ...

 Самые распространенные команды персонажу перечислены ниже:

  •  Для того чтобы показать персонажа нужно вызвать метод Show() со значением Fast = True, чтобы он появился мгновенно или False - чтобы персонаж появился с анимацией. Закрыть персонажа можно с помощью метода Hide().
  •  Персонаж может с анимацией передвигаться в указанную вами позицию - метод MoveTo(), первые два параметра - координаты назначения, третий - скорость анимации (в районе 1000..1500 будет нормально).
  •  Персонаж может обратить внимание пользователя на определенную часть экрана - метод GestureAt(), параметры - координата экрана, на которую должен указать персонаж.
  •  Чтобы персонаж произнес какую-то фразу нужно вызвать метод Speak(), первый параметр - строка, которую персонаж показывает в всплывающем облаке и читает, если второй параметр равен пустой строке. Второй параметр может содержать путь к *.wav или *.lwv звуку, который должен произвести персонаж, при этом персонаж обычно шевелит губами в такт звуку.

 Сделаем, чтобы наш персонаж сначала появился в углу экрана, переехал в противоположный угол, затем поприветствовал нас, прочитал содержимое Memo и скрылся. Впишите в обработчик нажатия второй клавиши следующее:

{ Установка начальных координат }
 Agent1.Characters['MyAgent'].Left := 0;
 Agent1.Characters['MyAgent'].Top  := 0;
 { Появление персонажа с анимацией }
 Agent1.Characters['MyAgent'].Show(False);
 { Переезжаем в противоположный угол }
 Agent1.Characters['MyAgent'].MoveTo(Screen.WorkAreaWidth-Agent1.Characters['MyAgent'].Width,
   Screen.WorkAreaHeight-Agent1.Characters['MyAgent'].Height, 1500);
 { Приветствие }
 Agent1.Characters['MyAgent'].Play('Greet');
 { Читаем содержимое Memo1 }
 Agent1.Characters['MyAgent'].Speak(Memo1.Text, '');
 { Скрываем персонажа с анимацией }
 Agent1.Characters['MyAgent'].Hide(False);

 В результате многочисленных опытов не удалось выяснить только как читать текст по-русски. Однако, использование помощников даже с английской речью может поднять популярность ваших продуктов (особенно если они изначально ориентированны для иностранного потребителя). В результате множества испытаний не было найдено каких-то ошибок при использовании персонажей - MS Agent сам загружается когда он нужен и сам выгружается когда он уже не нужен. А небольшой размер дистрибутива MS Agent-а позволяет "таскать" его с собой и устанавливать при инсталляции своих проектов.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay