Использование Ms Agent'a на Новый Год — HackZona.Ru

Использование Ms Agent'a на Новый Год

Использование Ms Agent'a на Новый Год

Тип статьи:
Со старой ХакЗоны.
Источник:
Здравствуйте. Скоро новый год! Вы уже придумали как будете поздравлять своих друзей и подруг. Предлагаю вам неплохой способ, как это можно сделать.
Наверное все из вас при работе в MS Office Word видели лазящую по экрану скрепку, топающего робота или колобка. Это есть агент! Вам никогда не хотелось заставить его делать то чего хотите вы? Можно устроить. По умолчанию в Windows XP (да и более ранних версиях) уже установлен один. Зовут его Merlin. Над ним и будем колдовать. Я кодил на VBScript и Visual Basic.
Открываем блокнот, сохраняем с расширением .VBS и начинаем.

Для начала присвоим объекту msagent ссылку на новый контрол:
Set MsAgent=CreateObject(«Agent.Control.2»)

Потом проверяем готов ли он и активируем
If IsObject(MsAgent) then MsAgent.Connected=true

Далее загружаем персонаж
MsAgent.Characters.Load «merlin»
Если нужен другой персонаж то: MsAgent.Characters.Load «ID персонажа»,«путь к нему»

И присваиваем объекту MyAgent ссылку на агента
Set MyAgent = MsAgent.Characters («merlin»)

Всё объект готов.

Теперь методом Show показываем его на экране.
MyAgent.show

Далее мы можем переместить его в любую точку экрана и даже за него пределы
MyAgent.MoveTo X,Y (где x и y соответственно координаты точки)

Для «показа» речи у агента есть метод Speak «текст»
MyAgent.Speak «Happy New Year»

Имитация думанья Think «текст»
MyAgent.Think «я думаю»

Чтобы выполнить какую-нибудь анимацию метод Play «имя_анимации»
MyAgent.Play «Wave»

У агента имеется коллекция анимаций AnimationNames, чтобы узнать все поддерживаемые данным агентом анимации вбиваем такой код:
For each anim in MyAgent.AnimationNames
Stroka=Stroka & anim & vbCRLF
Next
Msgbox Stroka

Чтобы спрятать агента метод Hide

Все действия агента выполняются асинхронно, наша прога передаёт параметр контролу и продолжает выполняться дальше. Так вот, чтобы агент не выпаливал всё залпом придумано такое:
Set ValReturn= MyAgent.play «Process»
Do while ValReturn.status > 0
Loop
В данном случае ValReturn.Status содержит состояние, как только < 0, то анимация закончена. Если необходимо досрочно закончить анимацию: MyAgent.Stop
Для паузы между действиями в VBS я делал WScript.Sleep [время], а в VB использовал API функцию Sleep из kernel32.dll.
Ещё агент может воспроизводить то что говорит, но для этого надо устанавливать дополнительные элементы. Вообще он способен разговаривать на 11 языках мира. Чтобы заставить его озвучивать надо ещё скачать с сайта майкрософта Text-to-Speech engines, например для русского языка вот отсюда
activex.microsoft.com/activex/controls/agent2/lhttsrur.exe.
После установки этого модуля ваш агент заговорит по-русски. Но потом надо указать язык, на котором он должен будет говорить, иначе агент попытается говорить на языке по умолчанию, который не всегда соответствует нужному. Русский значится как &H0419.;
MyAgent.LanguageId=&H0419.;
Вот пожалуй и всё. Возможно я рассказал не о всех его свойствах и методах, но для того, чтобы послать агента поздравить друга, этого думаю вполне достаточно. А если добавить под его «выход» новогоднюю мелодию, то вообще круто будет!
Дополнительных агентов можно скачать отсюда:
www.rohitab.com/freevoice/gallery.html
Нравится
Не нравится

11 комментариев

10:58
ыыыыыыыыыыы
улыбнуло.
20:07
меня тоже) мелочь, а приятно...
11:51
Прикольно. Своей девчонке сделаю...
15:05
Set ValReturn= MyAgent.play "Process"
вроде так должно быть:
Set ValReturn= MyAgent.play ("Process")
21:01
хе) защита от ньюбов раскрыта, зачем?)
22:07
думал просто опечатка в статье ;)
00:17
2 _Lio
действительно ошибся, должно быть:
Set ValReturn=MyAgent.Play ("Process")
спасибо за поправку
17:25
прикольная штука, если б годика два раньше, а то я когда-то разбирался, как с этим компонентом работать. Хотя использование его на C# отличается. А так молодец, порадовал кучу людей, научив пользоваться компонентом
02:40
Прикольно, не был бы занят php попробывал бы заняться расширением всех возможностей агента..:) Автору +1
за статью
23:23
Cтатья была написана просто для любопытных, раскрытие всех возможностей не было её целью, если вы захотите использовать в коде к агенту ещё что-нибудь, например фичу для воспроизведения голоса, то вам придётся тащить ещё несколько сотен килобайт а то и больше к получателю, а это не очень удобно.
Того, что выложено тут, вполне достаточно чтобы написать ооочень красивый (а главное компактный и оригинальный) подарок, а остальное уже будет лишним.
Ведь мастерство - это умение с меньшим делать большее!
19:45
ничего нового...
>>>мелочь, а приятно...
+1