Microsoft Agent 學習筆記 (一) (轉)
Agent 學習筆記 (一):namespace prefix = o ns = "urn:schemas-microsoft-com::office" />
Microsoft A是一組可的服務, 用來管理一些角色(Character),這些角色透過動畫、
來同交流,使用最新的技術,他們甚至可以聽懂人的話,也就是說,使用者可以用聲音控制他們,
這使得應用的操作方式更符合人的行為方式。
雖然Microsoft對於Agent最成功的使用是Office Asistant, 它用來提供上下文幫助和使用嚮導,但是可以把
Agent使用在任何地方,譬如一般的應用程式和遊戲中。在本文和後面的文章中,我將簡單的介紹一下它的使用。
MS Agent包含了一組,它們分別是Request, Agent(control), Characters (collection), Character,
Commands(collection),Command,Balloon,AnimationNames(collection),SpeechInput,AudioOutput,CommandsWindow,
PropertySheet。本篇先介紹Agent(control), Characters(collection), Request三個物件,其他物件以後再作介紹。
MS Agent元件包含了一組物件,它們分別是Request, Agent(control), Characters (collection), Character,
Commands(collection),Command,Balloon,AnimationNames(collection),SpeechInput,AudioOutput,CommandsWindow,
PropertySheet。本篇先介紹Agent(control), Characters(collection), Request三個物件,其他物件以後再作介紹。
Agent(control)--透過它,我們可以訪問到Microsoft Agent支援的大部分物件和事件。它有幾個重要的屬性和方法,
包括:Connected屬性, Characters屬性。
unit AgentDemo;
uses
Agents_TLB; //引用匯入的TypeInfo unit
const
RequestSuccesully = 0
RequestFailed = 1;
RequestPending = 2;
RequestInterrupted = 3;
RequestInProgress = 4;
var
Agent1: TAgent; //宣告TAgent型別的變數Agent1
IAgnt: IAgentCtlEx;
Merlin: IAgentCtlCharacterEx;
IReq: IAgentCtlRequest;
begin
Agent1 := TAgent.Create;
IAgnt := Agent1.ControlInterface; //取得IAgentCtlEx介面
IAgnt.Connected := True; //連線到Microsoft Agent Server
IReq := IAgnt.Characters.Load('Merlin', 'Merlin.acs'); //載入Merlin角色
Merlin := IAgnt.Characters.Character('Merlin'); //取得Merlin的Character介面
Merlin.Show(False); //顯示Merlin
IReq := Merlin.Play('Congratulate_2'); //讓Merlin鼓掌
if IReq.Status <> RequestSuccessfully then //判斷Merlin當前的狀態,如果鼓掌動畫//還沒有完成就停掉它
Merlin.Stop;
Merlin.Speak('Hello, guys', ''); //讓Merlin說話
Merlin.H; //隱藏Merlin
IAgnt.Characters.Unload('Merlin'); //解除安裝Merlin
IAgnt.Connected := False; //與Microsoft Agent Server斷開連線
Agent1.Free;
end;
說明:Request Object用來同步對Character的訪問,對Character的訪問,如Load, Get, Play, Speak都會產生一個Request,
IAgentCtlRequest的Status屬性有五個值,分別是
0:請求已經完成
1:請求失敗
2:請求已經提交,但是還沒有完成
3:請求被中斷
4:請求正在處理
Request物件在上面的程式中的作用就是強制Merlin停止鼓掌說話,你也可以用在多個Character的程式碼中,例如:讓多個Character
,
procedure WaitFor(AReq: IAgentCtlRequest);
var
Status: LongInt;
begin
if AReq <> nil then
repeat
Application.ProcessMessages;
Status := AReq.Get_Status;
until (Status <> RequestPending) and (Status<>RequestInProgress)
end;
end;
Req := Merlin.Speak('Hello, Monkey King','');
WaitFor(Req);
Req := MonkeyKing.Speak('Hello, Merlin','');
WaitFor(Req);
Req := Merlin.Speak('Byebye, Monkey King', '');
WaitFor(Req);
Req := MonkeyKing.Speak('bye', '');
上面的程式使用的是early binding, 需要import MS Agent 2.0的TypeInfo, 如果使用late binding,則可以這樣
uses
ComObj;
var
vAgent: OleVariant;
Merlin: OleVariant;
Req: OleVariant;
begin
vAgent := CreateOleObject('Agent.Control.2');
vAgent.Connected := True;
Req := vAgent.Characters.Load('Merlin', 'Merlin.acs');
Merlin := vAgent.Characters.Character('Merlin');
Req := Merlin.Show(False);
WaitFor(Req):
Req := Merlin.Play('Congratulate_2');
WaitFor(Req);
Merlin.Speak('Hello, guys', '');
Merlin.Hide;
vAgent.Characters.Unload('Merlin');
vAgent.Connected := False;
end.
不過速度上面會慢,因為涉及到介面的多次查詢和轉換
以上程式碼只是簡單的演示和說明,只能作為參考。
以上技術資料可以參考 <
MSDN---->PlatfoSDK-->User Interface Services--> Microsoft Agent
必要的準備:因眾多語言中,本人只略懂Delphi, 所以所有的思路及程式程式碼都以Object Pascal描述,因此
讀者應具備一定的Object Pascal基礎和Delphi使用。另外由於MS Agent包含有一組元件,要執行程式,
也必須先在本地計算機上面Microsoft Agent 2.0。Microsoft Agent 2.0和角色請至。本文
所有的源程式可以發信至lukejee@263.net向我索取。
Luke Jee
2001.11.22
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990491/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PE學習筆記(一) (轉)筆記
- 【持續更新...】Microsoft SSIS 學習筆記ROS筆記
- Microsoft Agent Tutorial Chapter 1 (轉)ROSAPT
- Microsoft Agent Tutorial Chapter 2 (轉)ROSAPT
- repuest轉發學習筆記一筆記
- C#學習筆記(一) (轉)C#筆記
- STL的學習筆記之一 (轉)筆記
- sed學習筆記(轉)筆記
- gurb學習筆記(轉)筆記
- ANT學習筆記 (轉)筆記
- GRUB學習筆記(轉)筆記
- TreeView學習筆記 (轉)View筆記
- 學習筆記(一)筆記
- 智慧演算法學習筆記(一) (轉)演算法筆記
- 資料結構學習筆記(一) (轉)資料結構筆記
- ctf學習筆記[轉載]筆記
- SAP BASIS學習筆記(轉)筆記
- kitten 學習教程(一) 學習筆記筆記
- 《深入淺出MFC》學習筆記之一 (轉)筆記
- LaTeX學習筆記:一筆記
- ANFIS學習筆記(一)筆記
- Angular 學習筆記(一)Angular筆記
- GOLang 學習筆記(一)Golang筆記
- oracle學習筆記《一》Oracle筆記
- React 學習筆記【一】React筆記
- Jquery學習筆記(一)jQuery筆記
- goLang學習筆記(一)Golang筆記
- Canvas學習筆記(一)Canvas筆記
- SCSS學習筆記(一)CSS筆記
- vue學習筆記一Vue筆記
- Kettle學習筆記(一)筆記
- kafka學習筆記(一)Kafka筆記
- Cesium學習筆記(一)筆記
- opencv學習筆記(一)OpenCV筆記
- 深度學習 筆記一深度學習筆記
- javaNIO學習筆記一Java筆記
- Maven 學習筆記一Maven筆記
- css學習筆記(一)CSS筆記