:: Главная :: Проекты :: MSAgent :: Музыка :: Гостевая :: Форум ::

Главная

О сайте

Гостевая книга
Форум

Проекты

О разделе

Animals v1.7.2r2
ReadIt v1.2
LittleHelper
EasyTester v1.3
EasyTester v2.0

MS Agent

Отступление

MSAgent в Delphi
MSAgent+MSBalloon
Новый DlgBalloon
SpeechAPI в Delphi

MSAgent и SAPI

Speech API часть2
- Работа с тегами
- Атрибуты голоса
- Диалоги
Синтез речи в файл
Обзор говорящих программ
Насосная станция

Музыка

Моя музыка

Альфред Шнитке
Музыка А. Шнитке

Голосование
Применяете ли вы технологию MSBalloon в своих приложениях?
Да, применяю
Собираюсь применить
Лишняя фишка

Поиграть с MSA

Персонаж:

Позиция:
X: Y:
 
Величина:

%

Поговорить:
Примечание: Поиграть с персонажем можно только, если у вас установлен MSAgent v2.0, а проговорить при установленных голосовых функций. Все компоненты можно скачать тут.

Подписка
Ваш e-mail:
Раздел:
 

MS Agent и MS Balloon

Долгое время посетители сайта просили меня написать статью о MS Balloon, о том как его подключить к Delphi и MSAgent, чтобы в нем появлялись разные сообщения. Я и рад был бы скорее написать, так как давно занимаюсь с MS Balloon, да все времени не было (дописывал EasyTester v2.0).

Итак, для тех, кто еще не догадался, MS Balloon - это воздушный шарик, появлющийся у агента, когда он (или она или может быть оно) пытается нам что-то сообщить. Обычно это какое-нибудь сообщение, то что сейчас говорит персонаж. Но как мы видим в пакете MS Office в шарике выводится и другая дополнительная информация. Через него можно выдавать диалоги, просить пользователя ввести что-нибудь и т.д. Так почему же нам с вами этому не научиться?

Вот когда-то я тоже об этом подумал. MS Balloon это тоже ActiveX, своеобразная примочка к MSAgent'у. Причем бывают разные баллоны (шарики), их пишут разные люди. Например MsgBalloon, BlnDialog6.5 (есть уже 7.1, но его еще не пробовал) ну и стандартный в WindowsXP.

Должен сразу огорчить ни один из них не подключается в Delphi. Причем в любой - 5,6,7. Один из них (MsgBalloon) вообще не дружит с MSAgent, этот ActiveX куда-то теряется после установки. BlnDialog благополучно устанавливается, работает, компилируется, но во время выполнения благополучно падает так, что даже не показывает в чем ошибка, а просто предлагает "позвонить разработчику". Так что даже не знаешь кому, себе или автору ActiveX.

Поэтому расскажу только как работать с MS Balloon в VB на примере VBScript, хотя это не относится к теме сайта. Больше хотелось бы написать о MSAgent и его примочках в Delphi, а не во всяких там VB и VC++. Нет, я не противник VB и VC++, но обидно, что разработчики примочек равняются на VBasic и VC++, а про Delphi забывают. Поэтому я решил попробовать написать свой MSBalloon. Основа есть, нужно просто технически описать все нужные функции. Надеюсь в скором времени вы увидите первую версию моего "воздушного шарика".

Итак, попробуем создать простенький пример наподобии фотографии в начале этой статьи. Писать будем с помощью BlnDialog. После скачивания ActiveX установите его в систему обычным образом, нажав Установить в контекстном меню на файле .inf.

После этого можно непосредствено писать что-нибудь для MSBalloon. Где-нибудь на странице нужно внедрить MSBalloon в виде ActiveX:

<OBJECT id=Balloon codeBase=BlnDialog.CAB#version=6,5,0,0
classid=CLSID:18D9ABAF-C390-4018-B153-ABB46EBF5A989>
</OBJECT>

Если требуется загружать MSBalloon с заранее заданными параметрами, то можно поступить так:

<OBJECT id=Balloon style="LEFT: 0px; TOP: 0px" codeBase=BlnDialog.CAB#version=6,5,0,0                    
                   classid=CLSID:F7BD9D8A-D337-4DEE-A7F9-A16913E6FE69>
                   <PARAM NAME="_ExtentX" VALUE="820">
                   <PARAM NAME="_ExtentY" VALUE="767">
                   <PARAM NAME="BalloonWidth" VALUE="200">
                   <PARAM NAME="ForeColor" VALUE="0">
                   <PARAM NAME="BackColor" VALUE="14811135">
                   <PARAM NAME="TextBoxBColor" VALUE="-2147483643">
                   <PARAM NAME="LineColor" VALUE="14737632">
                   <PARAM NAME="BorderColor" VALUE="0">
                   <PARAM NAME="MaskColor" VALUE="16711680">
                   <PARAM NAME="UserMove" VALUE="-1">
                   <PARAM NAME="ButtonsCaptions" 
                                VALUE="&amp;Ok;&amp;Cancel;&amp;Abort;&amp;Retry;&amp;Ignore;&amp;Yes;&amp;No">
                   <PARAM NAME="BorderFocus" VALUE="-1">
                   <PARAM NAME="Style" VALUE="1">
                   <PARAM NAME="URLButtonPicture" VALUE="">
                   <PARAM NAME="URLOptionPicture" VALUE="">
                   <PARAM NAME="URLIconPicture" VALUE="">
                   <PARAM NAME="URLSuggestPicture" VALUE="">
                   <PARAM NAME="MoveStyle" VALUE="1">
                   <PARAM NAME="BalloonDistanceX" VALUE="0">
                   <PARAM NAME="BalloonDistanceY" VALUE="0">
</OBJECT> 

Здесь мы, в основном, описываем различные, изначально заданные, параметры шарика. Правда, все значения по умолчанию. Некоторые параметры более-менее понятны, но отдельные поясню:

ForeColor - цвет текста
BackColor - цвет фона шарика(обычно бледно желтый)
TextBoxBColor - цвет области для ввода текста
LineColor - обычно текст от кнопок в MSBalloon отделяется тоненькой линией, так вот этот параметр и определяет цвет линии
UserMove - если 0, то пользователь не может двигать шарик мышкой, иначе может
URLButtonPicture - адрес картинок для кнопок. Обычно существует три состояния кнопок у шариков (Noraml, MouseOver, MouseDown). Так вот картинки этих состояний должны располагаться друг под другом, например:

URLOptionPicture - картинки для кнопок выбора опций, например:

URLSuggestPicture - картинка, которая будет появляться, когда агент желает обратить на себя внимание, например в MSWord это лампочка.

А теперь непосредственно напишем крохотную процедурку для появления шарика. После объявления ActiveX вставим скрипт:

<SCRIPT language=VBScript>
     Sub cmd1_onclick()
         Balloon.MsgBalloon "Привет! Это простейшая функция MSBalloon c одной кнопкой!",
               vbOKOnly  + vbExclamation, "Привет!", char
      End Sub
</SCRIPT>

И добавим стандартную кнопку с именем cmd1:

<input type="submit" name="cmd1" value="Пример 1">

Процедура выводит воздушный шарик около персонажа с именем char (то есть около нашего главного персонажа, посомтрите это в коде) с одной кнопкой и иконкой знака внимания.

Вот сам пример:

Далее, попробуем попросить агента ввести наше имя. Добавим в существующий скрипт еще одну процедуру и соответствующую кнопку уже с именем cmd2:

Sub cmd2_onclick()
Balloon.InputBalloon("Привет, давай познакомимся? Как тебя зовут?", "Второй раз привет!")

End Sub

Теперь функция посложнее, но и поинтереснее! Помните, как в MSWord агент, пытаясь вам что-нибудь предложить, показывает окно с выбором опций. Так вот мы сейчас это и сделаем! Создадим еще одну следующую по счету кнопку и прицепим к скрипту процедуру:

Sub cmd3_onclick()
'Добавляем кнопочки
Balloon.FormBalloon.Buttons.Add "&Да"
Balloon.FormBalloon.Buttons.Add "&Нет"
Balloon.FormBalloon.Buttons.Add "&Отстань"
'Иконку
Balloon.FormBalloon.Icon = 13
'Титл
Balloon.FormBalloon.Title = "Навигация по сайту:"
' Само сообщение
Balloon.FormBalloon.Message = "Может вы желаете перейти на какой-нибудь другой раздел?"
'Непосредственно опции
Balloon.FormBalloon.OptionButtons.Add "&На раздел проектов."
Balloon.FormBalloon.OptionButtons.Add "&Хотелось бы что-нибудь про музыку."
Balloon.FormBalloon.OptionButtons.Add "&Почитать про MSBalloon."
'Текст по умолчанию
Balloon.FormBalloon.TextBox = True
Balloon.FormBalloon.TBoxText = "Вы можете ввести сюда свое сообщение автору сайта."
' комментарий
Balloon.FormBalloon.Comment = "Ваше пожелание."
' Указываем, что нужно отображать линию-разделитель
Balloon.FormBalloon.SepLine = True

' Показываем шарик
Balloon.ShowFormBalloon

'Получаем результаты
If Balloon.FormBalloon.OptionPressed = 0 Then
MsgBox "Вы выбрали кнопку: " & Balloon.FormBalloon.ButtonPressed
Else
MsgBox "Вы выбрали опцию: " & Balloon.FormBalloon.OptionPressed
End If
MsgBox "Ваше пожелание: " & Balloon.FormBalloon.TBoxText
End Sub

Ну и всякие другие процедуры и функции. Их вы можете посмотреть в HTML-коде, а вот кнопочки:

*если примеры не работают, попробуйте включить Разрешать выполнение ActiveX, не помечанных как безопасные в Свойствах обозревателя.


 

 
   
Rambler's Top100
1:5 :2830 - 1:1799
© Copyright 2002-2004; Denis Butorin