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

فئة للتراسل بين برنامجين

بدأه رغيد الطيب في 2 يناير 2008 · 10 رد · 3,370 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اثناء تصفحي لأحد المنتديات اليمينة التابعة للكلية التي تخرجت منها

(http://www.ecstudents.com)

لفت انتباهي الموضوع التالي : (http://www.ecstudents.com/forum/viewtopic.php?f=27&t=5008)

فقد ذكرني بكوني قد احتجت في مرة سابقة قديما شيئا ممثالا وهو تبادل رسائل بين برنامجين في نفس الجهاز ..

وطبعا هي مسئلة ليست صعبة خاصة و اننا يمكننا القيام بالكثير من الطرق كالريجستري او عن طريق ملف نصي او

عن طريق برمجة السوكت (Winsock سابقا) و و و ..

ولانني اكره الخوض في تفاصيل جانبية اثناء شروعي ببناء برنامج معين ..ارتئيت انه سيكون من المفيد بناء فئة

بسيطة جاهزة للإستخدام لاحقا ...

فكرتها الاعتماد على رسائل نصية بين نوافذ البرنامجين .. بإستخدام SendMessage و الرسالة WM_COPYDATA ...

بحيث يكون إستخدامها سهل ومرن ..

post-40889-1199261271_thumb.jpg

اسم الفئة rtaWindowsMessage

تحتي على دالة وحيدة هي Send و المستخدمة في ارسال اي رسالة إعتمادة اما على عنوان النافذة الهذف او رقمها

Handle و بالتالي فيمكن إستخدامها بالشكل التالي :

Dim msg AS New rtaWindowsMessage(Me)

msg.Send("Program Two","How Are You?")

وبهذا سيتم ارسال رسالة الى البرنامج الذي عنوانه هو "Program Two" و الرسالة هي "How Are You?" ... كما

تحتوي الفئة على ثلاث خواص هي :

Parent

وهي الفورم الحالية التي يتم ربط الفئة بها عن إنشائها كما يظهر في السطر الاول (Me) في الكود السابق

TargetWindowHandle

وفيه يتم تعيين عنوان او الـ Handle التابع للفورم الذي نريد الارسال لها

TargetWindowTitle

ويستخدم لتعيين العنوان الخاص بالفورم الهذف

بكلمات اخرى اذا استخدمت ايا من الخاصيتين الاخيرتين TargetWindowTitle او TargetWindowHandle فأنه يمكنك

استخدام الامر Send مباشرة كالتالي:

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 

MyBase.Load
		msg.TargetWindowTitle = "Program Two"
	End Sub

وبهذا يمكن ان ترسل اي رسالة بالشكل التالي :

msg.Send("Welcome")

وذلك للسهولة

اخيرا و ليس آخرا يوجد حدث مضاف الى الفئة بإسم MessageArrived ويفيد بأن البرنامج قام بإستلام رسالة خارجية يمكنك ان تعرضها مثلا في MsgBox بالشكل التالي :

Private WithEvents msg as New rtaWindowsMessage(Me)

Private Sub msg_MessageArrived(ByVal Sender As Object, ByVal msg As String) Handles msg.MessageArrived
	  MsgBox(msg)
End Sub

لاحظ انني استخدمت الكلمة WithEvents في التعريف لانني اريد استخدام احداث الفئة.

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

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

MessagesExchange.zip

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#2

chokran akhi al akrim 3la l mocharaka

#3

أخي رغيد شكرا على كل ما تقدمه ، فأنا ممن لم ينسو جهودك فيما سبق بالذات البالون على سبيل المثال لو تذكر ..

اعود وأقول أنه لقد جذبني موضوعك واحب أن استفيد منه أيضا ، ولعلي لم أفهم تماما وما فهمته أنه باستطاعتي أن أرسل لأي برنامج نص معين يستقبله من برنامجي ، إن كان هذا صحيح فأرجو التوضيح لي فأنا أحتاج لذلك كثيرا في برنامجي الحالي ، حيث أني أرغب في استخدام برنامج Windows Live Mail للقيام بمراسلاتي من خلال برنامجي ، وحيث أني استخدم مربع نص غني وأريد أن أرسل النص المنسق الذي بداخله لبرنامج البريد المذكور أنفاً ، وعند استخدامي للكود التالي ..

			RTF.SelectAll()
			RTF.Copy()

		   Dim theStringBuilder As New System.Text.StringBuilder()

			theStringBuilder.Append("mailto:" & EmailTo & "")

			theStringBuilder.Append("?subject=" & EmailSubject & "")

			theStringBuilder.Append("&body=" & My.Computer.Clipboard.GetText )

			System.Diagnostics.Process.Start(theStringBuilder.ToString())

اجد أن النص المراد نسخه قد فقد رونقه وتنسيقه ، أرجو أن تكون الفكرة واضحة ، وان يكون هذا ما تتحدث عنه واني في صلب الموضوع ولم أذهب بعيداً ، لأني لو استطيع أن أقوم بنسخ النص وبالتنسيق الذي هو عليه ولصقه في برنامج البريد بشكل برمجي فسوف يحل ذلك لي مشكله ، ويفتح لي أفاق جديده في البرمجة ،،

1 - سقوط الإنسان ليس فشلاً ، ولكن الفشل أن يبقى حيث سقط .

2 - الفاشلون قسمان : قسم فكر ولم يفعل ، وقسم فعل ولم يفكر .

-------------------------------------------------------

درس في ADO.NET 2005, التعامل مع الجداول المترابطة في ado.net 2005

درس في الإجراءات الفرعية ( العامة )

درس في ADO.NET من الصفر إلى الإحتراف .

#4

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

اخي العزيز yaseralshikh .... نعم اذكر قصة البالون المحزنة على هذا الرابط /index.php?showtopic=77221

حقيقة لقد كانت للمساكين امثالي الذين كانوا يستخدمون الـدوت نت 2003 بينما يتمتع اصحاب الدوت نت 2005 به جاهزا في حاسباتهم

على العموم تلك قصة طويلة بالفعل, دعنا منها الان و قل لي هل بإمكانك توضيح ما تقصده اكثر لأن الفئة غرضها مختلف كليا ولا تمث الى الايميالات بأي صلة فهي ما وجدت إلا للتواصل بين البرامج في (الجهاز الواحد) و ليس بين اكثر كمبيوترين كما في حالة الايميل فهو يرسل من جهاز الى آخر..

انتظر تفصيلك

السلام عليكم

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#5

شكرا ...

كيف تم تغير شكل الفورم ؟؟؟؟؟ شكل الفورم جميل جدا ؟؟ هل يمكن توضيح كيف افعل هدا ... وشكرا جزيلا

سبحان الله وبحمده سبحان الله العظيم

#6

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

أخي الكريم بشا ... لم اقم بأي تغيير في شكل الفورم ... و لكنني اعتقد ان نظام تشغيل الـ Vista قد خدعك ! ... حيث انني استخدم الفيستا وليس الأكس بي و بالتالي فأن شكل الفورم يتغير دون تدخل المبرمج بحسب نظام التشغيل.

ام انك تقصد شيئا آخر في تساؤلك

السلام عليكم

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#7

بارك الله فيك أخي الكريم رغيد على هذا المقال الخفيف ... الجميل في محتواه

#8

أخي رغيد الطيب شكرا على الرد ورحابة الصدر ..

البالون الذي صممته لنا في الاصدار 2003 كان رائعا في ذلك الوقت ، وكذلك كل مداخلاتك وما تقدمه للمبرمجين الناشئن مثلنا ، فلك اخي كل احترامي وتقديري وحبي أيها الجار الغالي ..

ما أريده ليس له علاقة بالبريد الإلكتروني ، فقط اريد التراسل بين برنامجين في جهاز واحد بحيث ارسل نص منسق بألوانه وخطوطه من برنامجي إلى برنامج البريد المعتمد في الجهاز أيا كان ، وبعد أن يفتح برنامج البريد المطلوب أجد النص المرسل قد انتقل إليه ..

فعند استخدامي للكود التالي ..

			RTF.SelectAll()
			RTF.Copy()

		   Dim theStringBuilder As New System.Text.StringBuilder()

			theStringBuilder.Append("mailto:" & EmailTo & "")

			theStringBuilder.Append("?subject=" & EmailSubject & "")

			theStringBuilder.Append("&body=" & My.Computer.Clipboard.GetText )

			System.Diagnostics.Process.Start(theStringBuilder.ToString())

أجد أن طلبي قد تحقق لان برنامج البريد الافتراضي يفتح واجد به عنوان المرسل إليه الذي ادخله المستخدم وكذلك عنوان الرسالة والرسالة نفسها ، ولكن نص الرسالة فقد تنسيقه الذي أعد عليه ، وانا ابحث عن حل يجعل النص يصل بالتنسيق الاصلي الذي اعد عليه ، لاني ألاحظ انه عند النسخ واللصق لنص الرسالة بشكل يدوي يصل النص منسق ..

هذا كل شيء أرجو أن تكون الفكره واضحه .. وشكرا مجددا ،،،

1 - سقوط الإنسان ليس فشلاً ، ولكن الفشل أن يبقى حيث سقط .

2 - الفاشلون قسمان : قسم فكر ولم يفعل ، وقسم فعل ولم يفكر .

-------------------------------------------------------

درس في ADO.NET 2005, التعامل مع الجداول المترابطة في ado.net 2005

درس في الإجراءات الفرعية ( العامة )

درس في ADO.NET من الصفر إلى الإحتراف .

#9

اخى رغيد الطيب

كالعادة تبهرنا افكارك وكالعادة انت دائما متجدد الفكر

الى الامام دائما

#10

شكرا لك مجددا اخوك من زمااااااااااان

JET سابقا :wub:

ادعموا موقعنا بالضغط علا الاعلانات

مرحبا بك زائرا لموقعنا

مكتبة ضخمه لاكثر كتب البرمجه والتصميم

#11

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

أخي رغيد الطيب بارك الله فيك ، هل من الممكن أن توضح لنا ماهية TargetWindowHandle و TargetWindowTitle وكيفية الحصول عليها

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

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