Замечательная технология MS AGENT и применение ее для программирования в среде VFP

Agent Наверное нет такого пользователя, который, работая в MS Office версии 97 и выше не заметил бы присутствие так называемого помощника Microsoft. Кого-то он раздражает, кому-то нравится. Но не в том дело...
Мало кто из вас наверное задумывался какие замечательные возможности предоставляет этот компонент для программирования.
Помимо воспроизведения анимации различными персонажами (Маг, Скрепыш, Джин и др.), агент умеет еще говорить и "слушать" (конечно, при наличии соотв. установленных программных компонентов). Данная статья является лишь небольшим руководством по использованию этой технологии.
Итак, ВЫ ГОТОВЫ ЭКСПЕРИМЕНТИРОВАТЬ???

Из названия статьи ясно, что языковым средством, которым мы будем пользоваться, будет MS Visual FoxPro (7.0). Но, тем не менее, функции MS AGENT доступны и во всех других средствах программирования под Windows.

1) Появись! Сперва создадим пустую форму Form1. На панели "Form controls" выбираем объект ActiveXcontrol. В появившемся окне выбираем "Microsoft Agent Control 2.0". Подтверждаем свой выбор, и далее редактируем получившийся объект (Olecontrol1). В процедуре "Init" пишем:
agent_s="Wizard.acs" && файл персонажа "Маг". Можно выбрать и другой. this.Characters.Load("g", agent_s) && персонаж инициализируется и ... this.characters("g").show && ... появляется на экране this.characters("g").Top=470 && определяем положение персонажа на экране this.characters("g").left=700 && * следующие строчки объясню немного позже. this.characters("g").LanguageID='&h419' && thisform.olecontrol1.characters("g").Speak(" Привет. Вот я и заговорил")
Agent Запускаем форму на выполнение.
Итак, персонаж появился в правом нижнем углу экрана ...




2) Заговори!
Итак, что же значат те две последние строчки?
Надо сказать, что говорить агент умеет на 11 языках и на русском в том числе (правда, с легким акцентом). Проговорит он все, что Вы введете и за содержание его высказываний отвечаете только Вы.

this.characters("g").LanguageID='&h419' && Определяем язык 419 - русский. Английский - 409 thisform.olecontrol1.characters("g").Speak(" Привет. Вот я и заговорил") * С помощью функции персонажа Speak развязываем язык нашему агенту.
Чтобы Ваш персонаж заговорил по-русски необходимо скачать речевой движок, который нах-ся по адресу: www.activex.microsoft.com/activex/controls/agent2/lhttsrur.exe
Понятно, что не всем понравится произношение агента, но использование некоторых тегов в тексте может изменить впечатление:

Привет.\pau=200\ Вот я и заговорил. Меня зовут \pau=100\ \Emp\ Merlin

Список всех тегов с пояснением из значений:
\Chr=[тип]\ Тип голоса (нормальный Normal, монотонный Monotone, шёпот Whisper). \Ctx=[тип]\ Тип текста Address, E-mail, Unknown \Emp\ Сделать акцент на следующем слове \Lst\ Выполнить предыдущую команду. \Map="spokentext"="baloontext"\ Говорим одно, а "думаем" другое. spokentext - говорим, baloontext - "думаем". \Mrk=число\ Вставить закладку \Pau=число(мс)\ Сделать паузу \Pit=число\ Частота голоса в Герцах. \Spd=число\ Скорость вывода речи (от 50 до 250) \Vol=number\ Громкость речи (от 0 до 65535)
Теперь попробуйте заставить сказать агента следующую фразу:

Agent Talking "\Pit=120\Итак \pau=200\, Вы уже \emp\ узнали \pau=100\ , какие удивительные возможности \pau=100\ для создания приложений предоставляет технология Microsoft \emp\ Agent. Но также я могу воспроизводить различные анимации, слушать Вас и исполнять команды, данные Вами с помощью микрофона." Однако, эта возможность будет рассмотрена автором в отдельной статье.

Покривляемся.
Итак, анимация. Анимация зачастую является неким дополнительным способом донести нужную мысль до пользователя. Да и просто утомительно смотреть на одно и то же серое окно программы в течение даже получаса. Анимация, в некотором смысле, снимает напряжение.
Для воспроизведения анимации в командном наборе персонажа содержится метод Play, и вызывается он таким образом: thisform.olecontrol1.characters("g").Play("Greet"), где "Greet" - название анимации (в данном случае - анимация приветствия).
Все названия анимаций (а у каждого персонажа они свои, либо отсутствуют вообще) содержатся в специальной коллекции AnimationNames.

Некоторые другие параметры персонажей.
1) Размер персонажа. Для изменения параметров ширины и высоты изображения персонажа существуют свойства Width и Height (ширина и высота соответственно).
Пример применения:
thisform.olecontrol1.characters("g").width=thisform.olecontrol1.characters("g").width/2
thisform.olecontrol1.characters("g").width=thisform.olecontrol1.characters("g").Height/2

Чтобы узнать исходные параметры персонажа нужно обратиться к свойствам OriginalHeight и OriginalWidth

2) Параметры персонажа. Для того, чтобы вызвать окно регулирования основных параметров персонажа (скорость речи, шрифт и др.), необходимо ввести следующий код: thisform.olecontrol1.PropertySheet.Visible=.t.

Итак, автор рассмотрел почти все основные возможности MS Agent. В принципе данная технология предоставляет большие возможности для программистского творчества. Вы можете, например, заставить персонажа рассказывать анекдоты, как это сделано в программе "Говорун+" ( автор Алексей Ермаков http://govorunplus.narod.ru), можете сделать говорящего помощника к любой Вашей программе (кстати, не совсем понятно почему этого не сделано в MS Office... было бы намного интересней...) и так далее...Нужна лишь Ваша фантазия...

AUTHOR: _STONE igevdo@mail.ru

Хостинг от uCoz