MS Agent в Delphi, Різне, Програмування, статті

Все, напевно, пам’ятають нав’язливу Скріпку з MS Office? Особливо дратувало, коли ця гидота починала пояснювати якісь прописні істини по роботі з пакетом, коли цього не було потрібно. Природно в підсумку “Помічник” відключався і більше ніколи не використовувався.


MS Agent. Doctor

MS Agent. Doctor


Але, незважаючи на це, подібні “живі” помічники можуть допомогти Вашій програмі набрати додаткову популярність серед користувачів (природно при доречному та раціональне використання цієї чудової технології).


Якщо говорити конкретно, то використання технології MS Agent свого часу дуже допомогло мені заощадити нерви і час на те, щоб навчити недосвідчених користувачів використовувати складний програмний комплекс. Більш того, тепер абсолютно всі користувачі використовують “Помічника” в роботі. Хочете дізнатися що таке MS Agent і як його використовувати правильно? Тоді приступимо.


1. Що таке MS Agent і де його взяти?


Microsoft Agent – Це сервер автоматизації (OLE Automation Server), який дозволяє розширити форму взаємодії додатка або web-сайту з користувачем за допомогою анімованих персонажів у рамках інтерфейсу Microsoft Windows. Розробники можуть використовувати даний компонент для розширення користувальницького інтерфейсу, в який входять звичні елементи управління.


Слід особливо відзначити – MS Agent може тільки доповнити інтерфейс програми, а не замінити його повністю. Ніколи не слід надто навантажувати вашого персонажа діями одночасно скорочуючи звичний інтерфейс програм (кнопки, меню і т.д.) – люди в більшості своїй консервативні і мало кому сподобається, якщо замість звичного вікна на робочому столі буде скакати поятоянно якийсь мутант і при цьому (не дай Боже) Говорт на кострубато російською. У зв’язку з цим, хотілося б дати декілька загальних рекомендацій по використанню технології MS Agent:



  1. Визначте роль агента.

  2. Дайте можливість користувачеві вибрати – використовувати їм персонаж чи ні.

  3. Забезпечте зворотний зв’язок з асистентом (персонажем). Зв’язок можна забезпечити як через звичний інтерфейс, наприклад контекстне меню персонажа, так і через більш “наворочений” – набір голосових команд.

  4. Раціонально використовуйте анімації. Не слід робити так, щоб Ваш персонаж постійно нарізав круги по робочому столу і махав руками – в дуже короткий термін такий персонаж буде відключений і збит користувачем.

  5. Підготуйте синонімічні відповіді користувачеві. Наприклад, якщо Ви плануєте використовувати MS Agent для заміни вікон з помилками, то слід передбачити реакції (анімацію, рух) і правильність побудови фраз персонажа. Від цього великою мірою залежить сподобатися чи користувачу використання агента чи ні.

Тепер безпосередньо по установці MS Agent. Перше, що необхідно – це завантажити ядро MS Agent з офіційного сайту Microsoft. Також Ви можете завантажити і файли персонажів.


Після того як Ви завантажите і встановите пакет MS Agent, неободимо виконати наступні дії:


msagent_1



  1. Запускаємо Delphi (я використовую Delphi 2009);

  2. Вибираємо в меню “Component” -> “Import Component …”

  3. Пам’ятаючи про те, що MS Agent – Це ActiveX компонент, вибираємо у вікні “Import ActiveX Control” і тиснемо кнопку “Next”. Після чого Delphi згенерує список доступних ActiveX-компонентів.

  4. У всьому цьому неподобстві різноманітті шукаємо компонент з назвою Microsoft Agent Control 2.0. Вибираємо його і тиснемо “Next”. У підсумку нам запропонують вибрати сторінку палітри компонентів на яку слід помістити піктограму компонента, шлях до юніта компонента і пр. Все це можна залишити як є і натиснути два раз “Next” і, після цього “Finish”

В результаті Delphi згенерує нам unit компонента з промовистою назвою AgentObjects_TLB і купою коментарів на тему використання функцій і параметрів. Тепер можна сміливо приступати до програмування.


2. Підключаємо MS Agent до додатка.


Для початку визначимо порядок дій, які потрібно виконати для того, щоб почати працювати з одним персонажем:



  1. Підключитися до сервера Microsoft Agent

  2. Завантажити персонаж в колекцію

  3. При необхідності показати персонаж

Отже, для демонстрації описаних вище дій візьмемо персонажа з назвою “merlin” для цього кладемо в каталог з нашої майбутньої програмою файл merlin.acs , Який ви можете завантажити все на тому ж офф.сайте Microsoft.


Тепер створюємо наш проект в Delphi і на подію FormCreate головної форми пишемо наступний код:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActiveX, AgentServerObjects_TLB;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Agent : IAgentEx;
Chars : IAgentCharacterEx;
ICharID : integer;
IReqID  : integer;
implementation
{$R *.dfm}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Agent.Unload(ICharID);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CoCreateInstance(CLASS_AgentServer, nil, CLSCTX_SERVER, IID_IAgentEx, Agent);
Agent.Load(“merlin.acs”, ICharID, IReqID);
Agent.GetCharacterEx(ICharID,Chars);
Chars.Show(0,IReqID);
end;
end.

Власне, те, що ми зараз зробили, називається ” Пряме звернення до Agent Server “. Якщо Ви помітили – я не просив Вас використовувати будь-які компоненти – тільки підключаємо два модулі в розділі uses і все. Після запуску проекту можна побачити приблизно наступну картинку


msagent_2


Тепер спробуємо розібратися, що ми власне такого навоялі. Перш за все ми отримали покажчик на інтерфейс IAgentEx, який, власне, і дозволяє нам керувати персонажем. Далі, як Ви вже здогадалися за назвою методу (Load), ми завантажили нашого Мерліна в колекцію. Метод Load має три параметри:



  1. назва файлу персонажа (вхідний параметр)

  2. Ідентифікатор персонажа (character ID, вихідний параметр)

  3. Ідентифікатор, який зберігає стан запиту (request ID, вихідний параметр).

Ну, і врешті-решт, ми показали нашого персонажа користувачеві, тобто собі коханому. Після закриття форми персонаж вивантажується з пам’яті. Все просто і доступно.


Якщо Ви досить добре знайомі з інтерфейсами … так і з програмуванням на Delphi в загальному, то Ви зможете без праці переробити нашу найпростішу програмку і використовувати для зв’язку з сервером встановлений нами компонент Agent Control. Ну, а я продовжу розгляд цієї цікавої теми програмування в наступних статтях.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*