📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,AgentServerObjects_TLB,ActiveX,
StdCtrls,ComObj;
type
TSink=Class(TAutoIntfObject,IAgentNotifySink)
procedure Command(dwCommandID: Integer; const punkUserInput: IUnknown); safecall;
procedure ActivateInputState(dwCharID: Integer; bActivated: Integer); safecall;
procedure Restart; safecall;
procedure Shutdown; safecall;
procedure VisibleState(dwCharID: Integer; bVisible: Integer; dwCause: Integer); safecall;
procedure Click(dwCharID: Integer; fwKeys: Smallint; x: Integer; y: Integer); safecall;
procedure DblClick(dwCharID: Integer; fwKeys: Smallint; x: Integer; y: Integer); safecall;
procedure DragStart(dwCharID: Integer; fwKeys: Smallint; x: Integer; y: Integer); safecall;
procedure DragComplete(dwCharID: Integer; fwKeys: Smallint; x: Integer; y: Integer); safecall;
procedure RequestStart(dwRequestID: Integer); safecall;
procedure RequestComplete(dwRequestID: Integer; hrStatus: Integer); safecall;
procedure BookMark(dwBookMarkID: Integer); safecall;
procedure Idle(dwCharID: Integer; bStart: Integer); safecall;
procedure Move(dwCharID: Integer; x: Integer; y: Integer; dwCause: Integer); safecall;
procedure Size(dwCharID: Integer; lWidth: Integer; lHeight: Integer); safecall;
procedure BalloonVisibleState(dwCharID: Integer; bVisible: Integer); safecall;
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormShow(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
Capture:BOOLEAN;
public
{ Public declarations }
end;
var
Form1: TForm1;
IAgentEx1:IAgentEx;
IAgentCharacterEx1:IAgentCharacterEx;
CharID:Integer;
SinkID:Integer;
sink:TSink;
ISink:IAgentNotifySink;
I1:ITypeLib;
CmdIndex:array[0..3] of Integer;
implementation
{$R *.DFM}
procedure TSink.Command(dwCommandID: Integer; const punkUserInput: IUnknown);
var
REqId:Integer;
begin
if dwCommandID=cmdIndex[0] then
IAgentCharacterEx1.Speak('You select Action1','',ReqId);
if dwCommandID=cmdIndex[1] then
IAgentCharacterEx1.Speak('You select Action2','',ReqId);
if dwCommandID=cmdIndex[2] then
IAgentCharacterEx1.Speak('You select Action3','',ReqId);
end;
procedure TSink.ActivateInputState(dwCharID: Integer; bActivated: Integer);
begin
end;
procedure TSink.Restart;
begin
end;
procedure TSink.Shutdown;
begin
end;
procedure TSink.VisibleState(dwCharID: Integer; bVisible: Integer; dwCause: Integer);
begin
end;
procedure TSink.Click(dwCharID: Integer; fwKeys: Smallint; x: Integer; y: Integer);
var
ReqId:Integer;
begin
IAgentCharacterEx1.Speak(' You clicked me ','',ReqId);
end;
procedure TSink.DblClick(dwCharID: Integer; fwKeys: Smallint; x: Integer; y: Integer);
var
ReqId:Integer;
begin
IAgentCharacterEx1.Speak(' You Double Clicked on Me','',ReqId);
end;
procedure TSink.DragStart(dwCharID: Integer; fwKeys: Smallint; x: Integer; y: Integer);
begin
end;
procedure TSink.DragComplete(dwCharID: Integer; fwKeys: Smallint; x: Integer; y: Integer);
begin
end;
procedure TSink.RequestStart(dwRequestID: Integer);
begin
end;
procedure TSink.RequestComplete(dwRequestID: Integer; hrStatus: Integer);
begin
end;
procedure TSink.BookMark(dwBookMarkID: Integer);
begin
end;
procedure TSink.Idle(dwCharID: Integer; bStart: Integer);
begin
end;
procedure TSink.Move(dwCharID: Integer; x: Integer; y: Integer; dwCause: Integer);
begin
end;
procedure TSink.Size(dwCharID: Integer; lWidth: Integer; lHeight: Integer);
begin
end;
procedure TSink.BalloonVisibleState(dwCharID: Integer; bVisible: Integer);
begin
end;
procedure TForm1.FormShow(Sender: TObject);
var
ReqId:integer;
begin
CoCreateInstance(CLASS_AgentServer,nil,CLSCTX_ALL,IAgentEx,IAgentEx1);
OleCheck(LoadRegTypeLib(LIBID_AgentServerObjects,2,0,0,I1));
Sink:=TSink.Create(I1,IID_IAgentNotifySink);
ISink:=Sink As IAgentNotifySink;
IAgentEx1.Load('Merlin.acs',CharId,ReqID);
IAgentEx1.GetCharacterEx(CharId,IAgentCharacterEx1);
IAgentEx1.Register(ISink,SinkID);
IAgentCharacterEx1.SetSoundEffectsOn(1);
IAgentCharacterEx1.SetLanguageID($0409);
IAgentCharacterEx1.show(0,ReqId);
IAgentCharacterEx1.Speak('Hello! I am here!','',ReqId);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
IAgentEx1.Unregister(SinkID);
IAgentEx1.Unload(CharId);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
IAgentPropertySheet1:IAgentPropertySheet;
begin
IAgentPropertySheet1:=IAgentEx1 As IAgentPropertySheet;
IAgentPropertySheet1.SetVisible(1);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
IAgentCommandsEx1:IAgentCommandsEx;
pwdid:Integer;
begin
IAgentCommandsEx1:=IAgentCharacterEx1 As IAgentCommandsEx;
IAgentCommandsEx1.AddEx('Action1','Voice1','VoiceCaption1',1,1,0,pwdid);
CmdIndex[0]:=pwdid;
IAgentCommandsEx1.AddEx('Action2','Voice2','VoiceCaption2',1,1,0,pwdid);
CmdIndex[1]:=pwdid;
IAgentCommandsEx1.AddEx('Action3','Voice3','VoiceCaption3',1,1,0,pwdid);
CmdIndex[2]:=pwdid;
Button2.Enabled:=false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -