Управление агентом MsAgent

Обсуждение вопросов программирования (WSH/JScript/VBScript, CMD), проблемы и решения
Ответить
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Управление агентом MsAgent

Сообщение nhutils »

Вывод сообщения агентом - анимированным персонажем, см. картинку.

Код: Выделить всё

var agent2=WScript.CreateObject("Agent.Control.2");
agent2.Connected=true;
agent2.Characters.Load("MERLIN","C:\\Windows\\Msagent\\Chars\\merlin.acs");
var merlin=agent2.Characters.Character("MERLIN");
merlin.MoveTo(320,320);
merlin.Show();
merlin.Play("GetAttention");
merlin.Play("GetAttentionReturn");
merlin.Speak("Приветствую тебя, мой повелитель!");
WScript.Sleep(5000);
merlin.Hide();
while(merlin.Visible)
  WScript.Sleep(250);
Хотя по умолчанию установлен только MERLIN, можно скачивать и других агентов.
Вложения
merlin.jpg
merlin.jpg (16.87 КБ) 15532 просмотра
FLS
Сообщения: 2
Зарегистрирован: 23 янв 2011, 17:06

Re: Управление агентом MsAgent

Сообщение FLS »

1. На фоне черного экрана файла
С:\WINDOWS\SYSTEM32\CScript.exe
он смотрится отвратительно.
Нельзя ли спрятать экран и вообще сделать так, чтобы этот DOS экран не появлялся, показывался только Мерлин.
Merlin_CScript.jpg
Merlin_CScript.jpg (10.41 КБ) 15455 просмотров
2. Прошу Вас написать кусочек кода, находящего windir - папку установки WINDOWS - не у всех она просто на C.
Тогда вызов MsAgent ожно сделать по адресу
windir+'Msagent\\Chars\\Merlin.acs'
3. В скриптах, используемых в html-файлах, подгружаются речевые компоненты SAPI4.0

//~~~
//Загрузка требуемых компонентов
nr="\n";function Dwrt_cod(cod){document.write(cod)}
cod=
nr+"<OBJECT id=TruVoice classid=CLSID:B8F2846E-CE36-11D0-AC83-00C04FD97575 codebase='http:\//activex.microsoft.com/activex/controls/agent2/tv_enua.exe#vertion=6,0,0,0' width=0 height=0></OBJECT>"+
nr+"<OBJECT id=SAPI4.0 classid=CLSID:0C7F3F20-8BAB-11d2-9432-00C04F8EF48F codebase=http:\//activex.microsoft.com/activex/controls/sapi/spchapi.exe width=0 height=0></OBJECT>"+
nr+"<OBJECT id=Text2Speech classid=CLSD:2398E32F-5C6E-11D1-8C65-0060081841DE codebase=http:\//download.microsoft.com/download/c/9/e/c9ee5f5d-7631-4ee7-aee4-dbd22b2b1439/SpchCpl.exe width=0 height=0></OBJECT>";
Dwrt_cod(cod);
//~~~
и Мерлину назначается язык
merlin.LanguageID=0x409;

Ваш скрипт пока хорош тем, что ничего не грузит и может работать в локале.
Но надо найти уже установленную в win XP SAPI5, хотя есть мнения,
что он с ней не заговорит, только с SAPI4.
Нельзя ли все же поэкспериментировать и услышать его, ничего не загружая из сети?
Заранее благодарю.
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Управление агентом MsAgent

Сообщение nhutils »

1. Чтобы не появлялось окно консоли, запускайте скрипт через wscript.exe, а не через cscript.exe:

Код: Выделить всё

wscript.exe msagent.js
2. Чтобы получить папку Windows (например, C:\Windows), можно использовать метод GetSpecialFolder объекта FileSystemObject (см. http://msdn.microsoft.com/en-us/library ... S.85).aspx):

Код: Выделить всё

var fso = WScript.CreateObject("Scripting.FileSystemObject");
var windows_folder = fso.GetSpecialFolder(0);
3. Воспроизведение голоса через SAPI можно сделать так:

Код: Выделить всё

var sapi = WScript.CreateObject("SAPI.SpVoice");
sapi.Speak("Hello dear user!");
Скрипт использует компонент Windows XP, говорит только по-английски.
Здесь http://www.gettranslite.com/rus/speechsysreq.html написано, как скачать и установить другие голоса.
FLS
Сообщения: 2
Зарегистрирован: 23 янв 2011, 17:06

Re: Управление агентом MsAgent - FSO

Сообщение FLS »

Во-первых, багодарю за конструктивные ответы.
==========================================
Во-вторых, FSO: В script контейнере html я пишу
//~~~
//Функция возвращает директорию windows
function WinFolder()
{FSO=WScript.CreateObject('Scripting.FileSystemObject');
win_folder=FSO.GetSpecialFolder(0);alert('='+win_folder+'=');
return win_folder}
WinFolder();
//~~~
IE выдает ошибку "WScript - определение отсутствует".
При этом файл С:\WINDOWS\SYSTEM32\wscript.exe
у меня имеется.
Почему он выдает эту ошибку? Не находит файла wscript.exe ?

Как работает, я знаю.
Вместо первой строки функции без ошибки срабатывает код
FSO=new ActiveXObject('Scripting.FileSystemObject');

Мне нужен корректный вызов Мерлина из браузера.
К сожалению, на такую невинную просьбу, как уточнение папки windows,
IE выдает сообщение об опасных элементах кода на странице.
Это связано с созданием new ActiveXObject.
Такое сообщение нежелательно, т.к. пользователь, скорее, отреагирует отказом
и Мерлина не увидит.
Как сделать корректно, чтобы код срабатывал и не появлялось этого сообщения.
==========================================
В-тетьих, как записать команду wscript.exe msagent.js
в скрипте html-файла?
Что-то в этом роде?
WSHShell=WScript.CreateObject('WScript.Shell');
WSHShell.Run('С:\\WINDOWS\\SYSTEM32\\wscript.exe msagent.js',0);
Но это не запускает даже при прописке этого в файл js и запуске его, не то что
при записи в скрипт-контейнере html (там вообще WScript не ясен). Может быть, он не находит файла msagent.js и надо прописывать
полный путь этого файла? Как это сделать?
==========================================
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Управление агентом MsAgent

Сообщение nhutils »

Насчёт управления MsAgent'ом через браузер не знаю.
Все примеры, которые я написал, относятся к запуску JScript файлов (.js) через WSH (Windows Script Host).
Aveiro
Сообщения: 6
Зарегистрирован: 23 июн 2011, 00:04

Re: Управление агентом MsAgent

Сообщение Aveiro »

Подскажите пожалуйста что нужно установить,чтобы на компе был MS Agent а то я запутался....
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Управление агентом MsAgent

Сообщение nhutils »

У себя на Windows XP я ничего не ставил, он сразу был (C:\Windows\msagent).
Ответить