Доброго дня. Скоро новий рік! Ви вже придумали як будете вітати своїх друзів і подруг. Пропоную вам непоганий спосіб, як це можна зробити.
Напевно всі з вас при роботі в 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