الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية إضافة الجني الى تطبيقاتك

بدأه بن العيد في 19 يونيو 2007 · 6 رد · 3,045 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

جميعنا يتذكر الكرتون علاء الدين والمصباح السحري. ذلك الجني متوفر في الدوت نت وكيفية إدماجه إلى تطبيقك هي غاية هذا الموضوع.

post-91400-1182249657_thumb.jpg

الكود يعتمد على مكتبتين ديناميكيتين وهما: AgentServerObjects.dll و AgentObjects.dllويمكنان من التصرف في الجني بمعنى إظهاره, إخفاءه, جعله يقوم ببعض الحركات. الأمر ليس مرتبط فقط بهذا الجني بل هنا تجسيدات وأشكال أخرى. يكفي أن تقوم بتحميل الملفacs المخصص للتجسيد وتغير إسم الملف المقابل له في الكود

إثر تحميل أحد تلك الملفات وتنصيبه ستجد الملف الخاص للتجسيد في المجلد c:\WINNT\msagent\chars بالنسبة لمستعملي ويندوز2000 أوc:\WINDOWS\msagent\chars المجلد بالنسبة لمستعملي XP

هذه الدالة الرئيسية لإظهار الجني:

private void ShowAgent()
{
  AgentServer Srv = new AgentServer();
   if (Srv == null)
	{MessageBox.Show("ERROR: Agent Server couldn't be started!"); }

	  IAgentEx SrvEx;
	  SrvEx = (IAgentEx)Srv;

	  int dwCharID = 0, dwReqID = 0;
	   try
		{
			String strAgentCharacterFile = null;
		   strAgentCharacterFile = AppDomain.CurrentDomain.BaseDirectory + "\\genie.acs"; //merlin.acs";
		   SrvEx.Load(strAgentCharacterFile, out dwCharID, out dwReqID);

		 }
		 catch (Exception)
		 {
		  MessageBox.Show("Failed to load Agent character! Exception details:");
		 }

	  SrvEx.GetCharacterEx(dwCharID, out CharacterEx);
	  CharacterEx.Show(0, out dwReqID);
	  CharacterEx.SetPosition(Screen.PrimaryScreen.WorkingArea.Width-100, Screen.PrimaryScreen.WorkingArea.Height-100);
	  CharacterEx.Speak("Assalamou Alaykom Arabteam2000 members :)", null, out dwReqID);

}

هذا الجزء لإستدعاء قسم المستخدم للجني ثم التأكد من وجوده أم لا

AgentServer Srv = new AgentServer();

وبهذه التعليمة يتم تحديد المسار وهو نفس مجلد ملف التشغيل للبرنامج. لذلك يجب إضافة الملفgenie.acs في المجلد المحدد أو غيره الى مكن وجود ال acs

 strAgentCharacterFile = AppDomain.CurrentDomain.BaseDirectory + "\\genie.acs";

تحميل متعلقات الجني

SrvEx.Load(strAgentCharacterFile, out dwCharID, out dwReqID);

إظهار الجني

 CharacterEx.Show(0, out dwReqID);

تحديد مكان ظهور الجني وهو الركن الأيمن الأسفل للشاشة, وبكيفية متكيفة مع حجم الشاشة

CharacterEx.SetPosition(Screen.PrimaryScreen.WorkingArea.Width-100, Screen.PrimaryScreen.WorkingArea.Height-100);

هنا تكتب النص الذي سيظهر مع الجني, أو بالحرى يقوله الجني. ولكي يتكلم يجب تحميل SAPI SDKو إضافتها للمشروع

CharacterEx.Speak("Assalamou Alaykom Arabteam2000 members :)", null, out dwReqID);

هذه الواجهة الرئيسية للبرنامج وبها تختار الخروج أو غلق النافذة والبقاء برفقة الجني :)

post-91400-1182257290_thumb.jpg

عند التشغيل لن تظهر النافذة الرئيسية ولا الجني إنما ستظاف أيقونة إلى عمود المهام لحاسوبك وذلك بإستعمال الكود التالي:

[STAThread]
  static void Main()
   {
	 Process aProcess = Process.GetCurrentProcess();
	 string aProcName = aProcess.ProcessName;
	  if (Process.GetProcessesByName(aProcName).Length > 1)
	   {
		 MessageBox.Show("Genie '" + aProcName + "' is already active !!!", "Application already running", MessageBoxButtons.OK, MessageBoxIcon.Stop);
		 Application.Exit();
		 return;
	   }			
	   Form1 f1 = new Form1();
	   System.Windows.Forms.Application.Run();	  
   }

عوض الكود التلقائي الذي يولده الفيزوال ستوديو.

أترككم الآن مع الكود متمنيا لكم قضاء وقت ممتع مع الجني :)

post-91400-1182249696_thumb.jpg
#2

عذرا نسية إضافة الكود

يمكن نسخ merlin.acs في نفس المجلد bin/debugوتغير الإسم في الكود منgenie.acs الى merlin.acs

GenieArbican.zip

merlin.zip

#3

مشكور جدا يا أخي العزيز على الموضوع الممتاز

لكن سؤالي هو كيف له أن يتعرف على الكلام .

ما أعنيه أن هذا الجني يدعم التعرف على الكلام .. وهذا شئ معروف . لكن ما الشفرة التي تجعله يتعرف على الكلام ..

وشكرا لك .

كن جميلاً ترى الوجود جميلا

#4

شكرا" والله يعطيك الف عافية

جهد رووووووووووووووووووعة :rolleyes: :rolleyes:

#5

السلام عليكم

اقتباس
ما أعنيه أن هذا الجني يدعم التعرف على الكلام .. وهذا شئ معروف . لكن ما الشفرة التي تجعله يتعرف على الكلام ..

للتعرف على النص وقراءته قراءة صوتية بإمكانك تحميل اSAPI SDKلذي أشرت له وفيه المكتبة Interop.SpeechLib.dll

تضفها للبرنامج ثم تستعمل

1.

using SpeechLib;

2. أضف التعليمات التالية داخل ShowAgent

SpVoice speech = new SpVoice();
speech.Speak("Text to be spoken", SpeechVoiceSpeakFlags.SVSFlagsAsync);
#6

السلام عليكــم ورحمـة الله وبركاتــه ،،

Up

#7

سلمت يداك

وجزاك الله الجنة

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…