استفاده از AGENT در دلفی
 
راز شب 14
نرم افزار - شعر - عـکس
 
 

با سلام

Microsoft Agent يكي از سرگرم كننده ترين فن آوريهاي Microsoft مي باشد كه تا كنون توانسته بسيار مورد علاقه كاربران قرار بگيرد. Agentها به برنامه هاي شما جذابيت زيادي مي دهند و امكان ارتباط بهتر و جالبتري را با كاربر ايجاد ميكنند. در اينجا من مي خواهم شما را با Microsoft Agent و طريقه بكار گيري آن در برنامه هاي خودتان را آموزش بدهم كه اميدوارم مفيد باشد. از آنجايي كه من اين امكان را در دلفي استفاده كرده ام براي شما هم مثالهاي دلفي آورده ام ...

اولين باري كه از اين تكنولوژي استفاده شد در برنامه Office 97 بود كه خيلي مورد علاقه كاربران قرار گرفت. من اون موقع خيلي گشتم تا بتونم از اين امكان استفاده كنم ولي خوب نتونستم ): اما بعد ها با پيشرفت كردن علم برنامه نويسي و همچنين با پيشرفت كردن عقل Microsoft (كه از نظر من بزرگترين كلاه بردار قرن هست) اين تكنولوژي در اختيار ديگران هم قرار گرفت... براي همين در اوايل فقط در Office بود كه از اين امكان استفاده مي شد.

حالا اينا رو گفتم اما ببينيم اصلاً Agent چي هست؟؟!!!

شما اگه از Office استفاده ميكنيد حالا هر كدوم از برنامه هاش كه باشه (Word,Excel,FrontPage,...) يك شكلكي رو ميبينيد كه هميشه نسبت به كارهايي كه انجام ميدين يك سري حركات از خودش نشون ميده كه هم سرگرم كننده هست هم آموزنده. حالا حتماً متوجه شدين كه در مورد چي صحبت ميكنيم (هر چند كه ميدونم ميدونستيد (; ) خوب حالا مي خواهيم ببينيم كه چطور ميشه از اين امكان تو برنامه هاي خودمون استفاده كنيم مثلاً وقتي برنامه داره كار ميكنه يه شكلكي بياد براي كاربر ادا در بياره تا طرف نفهمه كه برنامه چيكار ميكنه (: يا مثلا موقع ذخيره كردن و بازيابي كردن و يا جستجو و ... يك سري حركات مربوط به آن عمل انجام بده...

اينكار خيلي ساده است و فقط كافي هست شما يك Agent رو انتخاب كنيد و در برنامتون تعريفش كنيد و بعد هر كاري كه خواستين رو بهش دستور بدين تا براتون انجام بده . ضمنا شما لازم نيست اصلاً غصه درست كار كردن اون رو بخورين چون خود Windows اونو كنترل ميكنه كه يه وقت كار بدي نكنه ((:

شما نميتونيد كه Agent رو داخل يك جعبه مكالمه (Dialog Box) قرار بدين و فقط ميتونيد جاي اوليه اون رو انتخاب كنيد بعد نمايش بدين و كاربر ميتونه اونو به دلخواه خود تغيير مكان بده با Drag كردن اينكار رو انجام ميده. خوب حالا براي شروع كار به يك سري Agent نياز داريم كه البته همراه ويندوز هميشه يك سري همراه هستند بهترين اونها كه ميتونه كارهاي زيادي انجام بده (منظور حالتهاي زيادي براش تعريف شده) Merlin هست كه يك جادوگر پير مي باشد. براي Download كردن اينها ميتونيد به سايتهايي كه معرفي ميكنم يك سري بزنيد. ضمناً شما خودتون هم ميتونيد يك Agent طراحي بكنيد كه براي اينكار بايد از يك سري نرم افزار استفاده كنيد.

براي اينكه كاربر بتونه از Agent برنامه شما استفاده كنه بايد حتماً Microsoft Agent Server‌ رو نصب كنه. كه البته من تا حالا تو هر ويندوزي كه برنامم رو اجرا كردم نصب شده بوده فكر كنم اين برنامه همراه خود ويندوز هست (; ولي اگه نبود شما ميتونيد يك سري به آدرس زير بزنيد اونجا چيزهاي جالبي در اين مورد داره كه يك مطالعه كنيد بد نيست.

http://msdn.microsoft.com/workshop/imedia/agent/defualt.asp

در اين آدرس اخرين باري كه رفتم مطالب زير بود حالا اگه تا حالا بيلي جون حوصله اش از اونا سر نرفته باشه و عوض نكرده باشد بايد باشه:

- The Agent Server

- The Characters/Agents

- A Text-to-Speech pices

- A Voice command (input) pices



اين مطالب تحت عنوان Microsoft Agent Software Development Kit هست كه در اونجا شما همچنين ميتونيد نرم افزار Microsoft Agent Character Editor رو براي درست كردن Agent دريافت كنيد. در اين مقاله ما در مورد Voice Command‌ (فرمان هاي صوتي) و طراحي Agent صحبت نميكنيم و فقط طرز استفاده از اين امكان رو شرح ميدم كه خودتون بعداً ميتونيد در موردش بيشتر جستجو كنيد. ما براي كارمون فقط احتياج به Agent Server و يك كاراكتر داريم كه اگه روي ويندوزتون ندارين ميتونيد از اينجا Download بكنيد.

خوب حالا ميريم سر اصل مطلب:

بعد از اينكه مطمئن شدين روي ويندوزتون AgentServer رو دارين دلفي رو اجرا كنيد و مراحل زير رو مو به مو انجام بدين:

1- Component|Import ActiveX Control رو انتخاب كنيد.

2- Microsoft Agent Control رو از تو ليست پيدا كنيد و رو ي دكمه Install كليك كنيد.

3- خوب حالا بايد تو قسمت ActiveX يك آيكوني شبيه به MenInBlack داشته باشيد.

خوب تا يادم نرفته اينو بگم كه براي پيدا كردن يك كاراكتر روي ويندوزتون بايد براي acs.* جستجو كنيد كه البته به طور عادي اگر Agent Server نصب باشه توي شاخه Windows يك msagent بايد وجود داشته باشه و داخل اون هم يك شاخه ديگه به نام Char هم هست كه توش يك يا چند كاراكتر وجود داره كه اگر از XP استفاده ميكنيد حتماً يكيش Merlin.acs هست (كه من خيلي بهش علاقه دارم (: ) براي همين ما بايد تو برنامه مون چك كنيم كه آيا اين شاخه وجود داره يا نه اگه وجود داشت ميدونيم كه Agent Server روي ويندوز كاربر نصب هست و ما مي تونيم از Agent استفاده كنيم .

خوب براي اينكار بايد اول ActiveX رو به روي فرم منتقل كنيم با اينكار يك type با نام TAgent به تعاريف فرم اضافه ميشه . بعد بايد يك متغيير تعريف كنيم كه از نوع Boolean باشه تا با اون چك كنيم كه آيا Agent Server نصب هست يا نه براي اينكار ميشه از Code زير استفاده كرد:



TYourObject

private

AgentInstalled: Boolean;

function AgentIsInstalled: Boolean;

procedure CreateAndLoadAgentIfInstalled;

function GetColorDepth: Word;

function GetWinDir: String;

procedure SetFormColor;

function AgentWasClicked



شما ميتونيد روي ويندوز كاربر به دنبال اون شاخه و كاراكتري كه مي خواهيد از او استفاد هكنيد بگرديد و اگه بود كار رو باهاش شروع كنيد اگه هم نبود خوب ديگه كاربر بايد محيط خشك برنامتون رو تحمل كنه (;

حالا مثلاً ما مي خواهيم از Merlin استفاده كنيم :

{-----------------------------------------------}

function TYourObject.AgentIsInstalled: Boolean;

begin

Result := (FileSearch('Merlin.acs',

Format('%s\MSAGENT\CHARS', [GetWinDir]))<>'');

end;



{-----------------------------------------------}

function TYourObject.GetWinDir : string;

var

WinDirZ : array[0..256] of Char;

begin

GetWindowsDirectory(WinDirZ, SizeOf(WinDirZ));

Result := StrPas(WinDirZ);

end;



نكته : در بالا براي بدست آوردن نام شاخه اي كه ويندوز در آن نصب هست از API استفاده شده كه مسير كامل ويندوز را به ما ميدهد.

حال كه فهميديم كاربر امكان استفاده از Agent رو داره مي تونيم كار رو شروع كنيم. در ادامه بايد يك Object براي Agent خودمون بسازيم تا از اين به بعد از اون استفاده كنيم و مجبور نباشيم از ActiveX استفاده كنيم. براي اينكار از كد زير ميشه استفاده كرد:

implementation



uses

AgentDemoConsts,

Registry,

OLECtrls, AgentObjects_TLB;



{-----------------------------------------------}

procedure

TYourObject.CreateAndLoadAgentIfInstalled;

const

RightBias = 80;

TopBias = 70;

var

tp: TPoint;

begin

if (AgentInstalled) and

not (Assigned(RobotAgent)) then begin

RobotAgent := TAgent.Create(Application);

RobotAgent.Characters.Load('Merlin','Merlin.acs');

{ Move the Agent to the center of the screen }

tp.x := (Screen.Width div 2)-(Width div 2);

tp.y := (Screen.Height div 2)-(Height div 2);

with RobotAgent.Characters.Item['Merlin'] do begin

MoveTo(tp.x+RightBias, tp.y+TopBias, 0);

Show(0);

Play('Greet');

Play('Explain');

Speak(SDemoIntro, '');

Play('Pleased');

Play('RestPose');

Speak(SWhisper, '');

Speak(SMonotone, '');

Speak(SMap, '');

end;

end;

end;





چند خط اول كه مشخص هست چه كار ميكنه . اما بعد از اينكه كاراكتر تعريف شد (RobotAgent) اونو به Merlin نسبت ميديم وبعد هم اونو به وسط صفحه نمايش منتقل ميكنيم و حالا ميرسيم به مهمترين قسمت كار كه دستور دهي به Merlin هست.

با استفاده از Play شما ميتونيد به Agent دستور بدين اما براي هر Agnet دستورات متفاوت هست يعني ممكن هست كه دستوارتي كه براي Merlin كار ميكنه براي Robby (كه يكي ديگر از Agent ها هست) كار نكنه. شما اگه كاراكترتون رو خودتون درست ميكنيد خوب پس ليست دستوراتش رو داريد اما اگه اونو از جايي Download ميكنيد حتما ليست دستوارتش هم همراش هست مثلا شما ميتونيد در مورد Merlinو يا Robby و يا چند Agent ديگه از تو همون آدرسي كه در بالا دادم ليست دستوارتش رو بگيريد.

حالا در كد بالا ميبينيد كه در ابتدا از دستور Show استفاده شده اين دستور براي به نمايش در آوردن Agent هست و در تمامي آنها كار ميكنه . بعد با استفاده از Play كارهاي مورد نظرمون رو به Agent‌ ميگيم. مثلاً من در ابتدا با استفاده از دستور Greet از Agent خواستم كه سلام كنه و بعد هم با استفاده از Explain خواستم كه شروع كنه به گفتن يك سري مطالب كه با دستور Speak اونها رو كه در متغيير SDemoIntro قرار داده ام به صورت يك بالون كه بالاي سرش باز ميشه ميگه. شما براي اينكه بگين مطالب رو با چه حالتهايي بخونه مي تونيد از دستواراتي كه در جدول زير آوردم استفاده كنيد:

Addition

Resulting capability

\Chr="Whisper"\

The Agent will whisper the following text.

\Pau=N\

The Agent will pause for the designated number of milliseconds.

\Emp\

The Agent will give special emphasis to the following phrase.

\Chr="Montone"\

The Agent will emphasize nothing at all.

\Map=

The Agent will say one thing, and = "think" another.

خوب حالا براي اينكه بيشتر متوجه بشين در زير يك سري مثال آوردم كه ميتونيد اونها رو در برنامه استفاده كنيد و نقش هر كدوم از دستوارت رو ببينيد:

SFuzzyWuzzy = 'Fuzzy wuzzy was a bear;\Pau=500\ ' +

'fuzzy wuzzy had no hair;\Pau=500\ ' +

'fuzzy wuzzy wasn't very \Emp\fuzzy, \Emp\was he?';

SWhisper = '\Chr="Whisper"\Now I will whisper: ' +

'Whisper whisper whisper.';

SMonotone = '\Chr="Monotone"\Now I will speak in a ' +

'monotone. Pat Paulsen for President.';

SMap = '\Map="I will now continue to speak in ' +

'English, but you will see my words ' +

'translated into German in the balloon above ' +

'my head. How are you today? I am just ' +

'\Emp\dandy!"="Jetzt werde ich zwar immer ' +

'noch in Englisch reden, sie werden ' +

'aber meine Woerte im Balloon obenauf ins ' +

'Deutsch uebersetzt sehen. Wie geht es ' +

'Ihnen heute? Mir geht es ganz gut!"\';



خوب ديگه همين بود تمام ماجرا حالا شما اگه مي خواهين بيشتر در اين مورد كار كنيد من در مقالات بعدي يكي سري سايت و مطلب ديگه هم براتون ميزارم البته به زبون اصلي خودشون حتماً خيلي مفيد خواهد بود.

ضمنا شما ميتونيد از Event ها هم در Agent استفاده كنيد و مثلا براي رويداد OnClick روي Agent‌ يك چيزي تعريف كنيد.



خوب در آخر از شما كه تا اينجا آمديد متشكرم و يك سري نكات رو هم بايد ذكر كنم :

1- اين مطالب حاصل تجربه خودم و همچنين برگرفته از يك سري مقالاتي بوده كه در اين مورد مطالعه كردم.

2- در مورد استفاده از اين كدهايي كه در اين مقاله آورده ام و همچنين در پايان اين مقاله ضميمه كرده ام هيچ گونه مسئوليتي بعهده من نخواهد بود كه درست كار كنه يا بزنه كامپيوتر شما رو بسوزونه !!!!!

3- استفاده از اين مقاله به شرط ذكرنام و آدرس اصلي مقاله در سايتها و جاهاي ديگر آزاد است .

4- اگه در اين مورد نظري دارين يا حتماً براي من ايميل كنيد خوشحال خواهم شد بشنوم.







موفق باشيد


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:






ارسال شده در تاریخ : یک شنبه 19 شهريور 1390برچسب:, :: 22:10 :: توسط : رضا بوالحسنی

درباره وبلاگ
سلام به وبلاگه من خوش امدید لطفا ایمیلتون رو توی خبرنامه وبلاگم پبت کنید تا زمانی که آپ کردم بهتون خبر بدم و خواهشا توی نظر سنجی وبلاگم شرکت کنید . مرسی
آخرین مطالب
نويسندگان
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان راز شب 14 و آدرس raze-shabe14.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.






ورود اعضا:

نام :
وب :
پیام :
2+2=:
(Refresh)

<-PollName->

<-PollItems->

خبرنامه وب سایت:





آمار وب سایت:  

بازدید امروز : 13
بازدید دیروز : 11
بازدید هفته : 13
بازدید ماه : 510
بازدید کل : 57324
تعداد مطالب : 79
تعداد نظرات : 396
تعداد آنلاین : 1