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

البرمجة ل MSN Messenger بواسطة سي شارب (مثال بسيط)

مغلق
بدأه خضر ترزي في 11 أبريل 2002 · 23 رد · 3,354 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لم ارغب بوضع مثال معقد لذلك حاولت وضع مثال من ابسط ما يمكن و يتمثل بعدة خطوات.

الكل يعرف MSN Messenger 4.6 و برنامج Messenger بصورة عامة حيث بدأ كبرنامج بسيط للتخاطب عبر انترنت و وصل اليوم الى واجهة صغيرة لتكنولوجيا ضخمة في الخلفية و هي تكنولوجيا Messenger API

ال API مشروحة مفصلا في انترنت على الوصلات التالية

Messenger APIs

http://download.microsoft.com/download/win...MessengerUA.exe

Messenger Service APIs

http://download.microsoft.com/download/win...S/Messenger.exe

Messenger Add-In APIs

http://download.microsoft.com/download/win...sengerAddIn.exe

يفضل جدا ان تستخدم النسخة الاخيرة من MSN Messenger من http://messenger.msn.com

ماذا يمكن ان تصنع بالاوامر السابقة ؟ ، الاجابة بسيطة ، بامكانك اضافة اتصال بين برامجك و بين MSN Messenger ، يمكنك بناء اضافات للبرنامج نفسه ، او ان لم يعجبك شكل ماسنجر كله فيمكنك بناء واحد جديد بالكامل :P ، بالطبع التكنولوجيا موجودة و الاوامر موجودة فلم يبقى الا الشكل الخارجي و بامكانك اضافة اضافات طبعا.

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

افتح مشروع جديد في Microsoft Visual C# .NET

msn1.png

قم باضافة دعم لتكنولوجيا Messenger الى سي شارب

msn2.png

قم باضافة دعم لكائنات Messenger API Type Library

msn3.png

اضف زر على النموذج الذي سيظهر امامك

msn4.png

و نقرة مزدوجة لتظهر شاشة الكود لتضف بها ال 3 اسطر التي ستصنع كائن ليتصل بالماسنجر

msn5.png

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

msn6.png

المثال بسيط جدا و انا تعمدت بان ابسطه الى هذا الحد حتى تتمكن من الدخول الى اول الطريق للبرمجة للماسنجر :P

الان نحن بانتظار اضافاتك :)

#2

أستاذ خضر :

1. هل برمجة الماسنجر مقتصر فقط على السي# ؟!؟

2. أو هل هي مقتصره على بيئة الدوت نت ؟!؟

3. هل يمكن عملها بالفجول سي++ 6.0 ؟!؟

ولك جزيل الشكر ,,,

#3

بامكانك برمجته بالفيجوال سي 6 و حتى بفيجوال بيزك 6

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

اذا رغبت باستخدام فيجوال سي فستحتاج الى ملفات ال #include و هي ستجدها في الثلاثة وصلات السابقة اعلى الرسالة حيث تحتوي على تعريف للكائنات التي ستستخدمها.

بالتوفيق

#4

متى سوف تظهر اضافاتنا العربية لماسنجر ؟

هذه بعض الاضافات العالمية الموجودة الان ، فاين هي اضافاتكم ؟

msnm1.png

#5

ولو بزود عليك أستاذي خضر :D

هل يمكن عملها في الدلفي !! لأني انا بادي في الدلفي الآن

وكنت سئلتك قبل ذلك عن الفجول سي++ لأني كنت ناوي

عليها بس واحد الله يهدية :D قلب مخي و حولني دلفي :)

أنا نزلت الوصلات اللي فوق بس حصلتها ببتكلم عن الفجول سي++

و الفجول بيسك بس و رغم ذلك حاولت تنزيل هذه الملفات في الدلفي

عن طريق Project -----> Import Type Library ولكن للأسف

لم أستطع تحميل الملفات إليها !!! مع العلم أن الدلفي الذي عندي

هو دلفي خمسة ( 5 ).

مع تحياتي ,,, و شاكر على تجاوبك استاذ خضر .

#6

فعلا الله يهديه هذا الواحد ... يعني مالقا غير الدلفي يزتك عليها ..:eek: :eek:

Coding on the Cloud and for the Cloud!

My Blog

#7

أح أح أح أح استاذ هاني وليش ؟!؟:eek: :eek:

شو بها الدلفي !؟ عارف عنها شي مو كويس ؟ :D

بس لا تخاف السي في دمي راح ارجع على الفجول سي++

بس بعد شي سنه إن شاء الله :) .

مع تحياتي ,,,

#8

Messenger API is a COM component which means it can be accessed using all languages that support COM.This includes VC++,VB,J++ in version 6 and all the .NET languages like C++.NET,VB.NET,C#,and also J# that replaced J++ in the .NET version

The important step is what Brother Khadar described as

'قم باضافة دعم لكائنات Messenger API Type Library '

because it wrapps the COM component using the language classes by exposing the methods,and properties supported by the COM interface.

Tahiyati

Madani

#9

حسب علمي ما في مشكلة لاستخدامها في دلفي نهائيا، المسألة انه لا يوجد دلفي في جهازي لتجربتها، فنفس الوامر مع تعديل بسيط يفترض ان تعمل هناك :)

نصيحة مني

استخدم Microsoft Visual C# .NET

هيك هاني و الي نصحك بالدلفي بيزعلوا ;)

#10

طيب راح اخلصك من هم اللغة ....

اسمع كلام خضر و هاني :)

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

طبعا الفيجوال سي ++ انتاجية عالية لكن مشكلة مرحلة التنفيذ فيه تأخذ وقت طويل جدا ... طبعا المبرمجين قابلين بالشيء هذا بسبب الأداء العالي اللي راح يحصلون عليها منه ..... لكن مع المشاريع المتوسطة اداء برامج الدوت نيت جيد و لان تحس بفرق ...

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

اترك القديم و تعال للجديد ...

#11

أشكركم اخواني و لكن مو أنا وش أريد من اللغة بل وش تريد اللغة

مني :D

المهم أنا طالب مستوى رابع في قسم علوم الحاسب و أريد لغة بناء

برامج على الوندوز أستقر عليها :) سئلت كثير من الاخوان قالو علوم =

أكثر من لغة يعني تعلم اكثر :) و بفعل أني جديد على برمجة الوندوز

قلت يا رجال أدخل دلفي سهلة و سريعة إبداء فيها مع الوندوز و بعدها

راح انتقل للفجول سي++. الصراحة انا جلست على الفجول سي++

أكثر من جلوسي على الدلفي ومع أني أعرف سي و سي++ من قبل

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

;) .

الصراحة انا ناوي أرجع على أحد مشتقات السي أكيد و لكن أتوقع ان

الرجوع راح يكون على الفجول سي++.

أنا الصراحة كنت حاب أبداء في الفجول سي++ و لكن ما حصلت الدعم

الكبير و خصوصاً أني راح اتعلم اللغة الجايه لوحدي !

و صعب انها تكون فجول سي++.;) ;) ;)

مع تحياتي ,,,

#12

في البداية ارحب بالجميع

واشكر الأخ خضر على مجهودات في هذا المنتدى

بالنسبة لك يااخ طلال

علمية تحملية وحدة مكتبة ( Library ) جديدة في الدلفي عملية سهلة وهي بنفس الأسلوب الذي قمت به

اما بالنسبة لعملية تركيب Messenger API Type Library فهي كالآتي

Project >> Import Type Library

اذا كانت لم تظهر لديك Messenger API Type Library في القائمة فقم بالنقر على الزر Add

ثم حدد المسار التالي

C:Program FilesMessengermsmsgs3

وبعدما يتم ادراجها في القائمة قم بتحديدها ثم انقر على زر Install

ولكن لدي ملاحظة بسيطة وهي :

انه Messenger API Type Library لاتعمل مع الدلفي :D فهي تعمل مع اللغات التي ذكرها الأخ madani جزاه الله خيراً

وبالنسبة للأخ هاني :mad: :mad:

فأقول احترم نفسك ;) واذا كنت ان تحب لغتك فلا تسب لغت غيرك :D

و بالنسبة للأخ Developer .NET

فهو ماقصر على ملاحظاته ولكن انا لي ملاحظات بسيطه احببت ان اذكرها وهي طبعاً تدور حول Delphi و Visual C++ و Visual C# .NET

فطبعاً لا احد ينكر قوة السي ولكن في الحقيقة انها غير جيده في برمجة الويندوز Win32 Application بل ان الدلفي افضل منها ولن اقول بمراحل بل سأقول بأشواط :)

تقول انت لماذا ؟؟؟؟

طبعاً الجواب لأن دلفي اكثر مرونه من Visual C++ وكذلك تستخدم كائنات VCL ( وهي الميزة الأهم ) وكذلك تقوم بناء برامجها على هية Rad وهذا مااشتهر به

دلفي بسرعة برامجه

وانا قد اطلعت على Visual C++ وبرمجة بها ولكن في الحقيقة كرهتا في اول لحظته لأني لم اجد الشيء الذي وجدته في دلفي من مرونه وسرعة في البرمجة

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

فطبعاً انا اعرف انك ستقول لماذا لم تستخدم C++ Builder فهي تدعم كائنات VCL !!

سأقول انا لك السبب

فكما تعلم ان كمبايلر VCL مبرمج بالدلفي ( الباسكال ) وعندما تستخدم هذه الكائنات في ال C++ Builder فهنا سيقوم ال C++ Builder بتحويلها الى

الى الباسكال لكي يتم تنفيذها وبهذا تكون برامج الدلفي اسرع من برامج ال C++ Builder بشكل ملحوظ ;)

اما Visual C# .NET فهي في الحقيقة كانت رائعة ولكني فضلت الدلفي عليهت

ستقول انه مرة اخرى لماذا ؟؟؟ :mad: :mad: :D

السبب هو كما ذكرت سابقاً لدعم الدلفي كائنات ال VCL و ال ActiveX ايضاً ولكن ال Visual C# .NET يعمل على ال ActiveX فقط

وبالنسبة لي شخصياً فأنا اكره ال ActiveX

والفرق بين ال VCL و ال ActiveX ظاهر ومعلوم فطبعاً ال VCL افضل بدون منافس :D

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

آخر فأنك لاتحتاج الى تسجيل الكائن المستخدم لأنه اصلاً داخل في البرمجة :)

اما ال ActiveX في بالعكس تماماً فأنه عندما تقوم بالعمل على كائن ActiveX جديد في برنامجك فأنك وتريد ان تنقل برنامجك الى جهاز آخر

فأنك تحتاج الى تسجيل الكائن وغيرها من الأشياء

هذا مااحببت ان اذكره

ولكن من الأفضل ان يتعلم الشخص اكثر من لغة برمجة لأنه هذا يطور من مهاراته

وطبعاً عملية الأنتقال من لغة الى آخرى عملية سهلة جداً للشخص الفاهم بالبرمجة

لأنه عرف فكرة البرمجة ومتطلباتها

انا اعرف انه كلامي موعاجبكم لأنكم متعصبين Visual C++ ;)

ولكن اقول لك شخص رأيه

وتقبلوا اطيب تحياتي اخوكم SUM

#13

امممممممممممم

طيب الدلفي فعلا ممتازه و سبق لي ان اشتغلت عليها ... بس من ناحية برامج ويندوز فالأفضل ال visual c++ لانه اكثر مرونه :) ، اكثر مرونه اقصد بها اكثر مرونه بشكل ما تتخليه و سبق لي استخدام الاثنين ... و بعدين المقارنة هنا ماهي في محلها فكما قلت الدلفي برنامج Rapid Development فكيف تقارن بالفيجوال سي++ .

لمعرفة مدى مرونة الفيجوال سي++ في برمجة برامج ويندوز شوف برنامج الاوفيس .... Rich User Interface Application

بس الغريب انو ال visual c# لا تستخدم ال activex مين اللي قاللك ؟ الفيجوال سي شارب مبينة على الدوت نيت !!! وعلى كائنات الدوت النت ,,, و فيها اختلاف كبيييير بشكل ما تتصوره ...

كائنات الدوت نيت ما فيها لا تسجيل و لا اي من اللي انت ذكرته ...

#14

تحية طيبة لكل الاخوة

ان ما قالة الاخ خضر صحيح وارجوا التركيز علية

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

هذا هو المهم التطوير بأسرع طريقة و اقصر وقت لان ينتظرنا احد

#15

اهلاً وسهلاً بك اخي Developer .NET مرة ثانية

وفي بداية احببت ان اقو لك شي اخي Developer .NET وهو

دع عنك التعصب للغة معينة وبل تكلم معي كلام دون تعصب

وآسف اذا كنت ازعلتك او ازعلت احد الأخوة واذا كانت هناك اي كلمة جارحة فهي من باب المزاح فأرجوا ان لاتأخذوها كلام الجد وكذلك ارجوا المعذرة

بالنسبة لكلامك

اقتباس
 

بس من ناحية برامج ويندوز فالأفضل ال visual c++ لانه اكثر مرونه  ، اكثر مرونه اقصد بها اكثر مرونه بشكل ما تتخليه و سبق لي استخدام الاثنين

ارجوا ان تذكر لي المرونة وين ;) يكفي في الفيجوال سي التأثر الحرفي :D هو هادم لكل المرونة :)

بالنسبة لبيئة نت فآسف على المعلومة الخاطئة لأنه في الحقيقة لم اكن اعرف غير هذه النوعين للكائنات وكنت على حسب معرفتي ان مكيروسفت تدعم ال ActiveX فقط ولم اكن اعرف الأضافات الجديدة التي حصلت في بيئة نت

لأنه هذا من سوء اطلاعي على المستجدات ;) علشان ماعندي وقت (clock)

بس حبت اسأل سؤال بسيط وهو ماهو الفرق بين بيئة Net والبيئات الأخرى !! هل هناك تغير في البرمجة ؟؟؟؟؟

واشكر من يجاوب على سؤالي مقدماً

وقبل النهاية احببت ان اذكر شي واحد وهو

انه لكي شخص رأيه

ولولا اختلاف الآرىء لما مشت البضائع ;)

وارجوا ان لايكون هناك اي زعل من هالكلام لأننا اتينا هنا لأجل ان نتعلم لا لأجل ان نتشاجر

(f) (f) (f)

وتقبلوا اطيب تحياتي اخوكم SUM

#16

ما فيه تعصب ..... بالعكس الدلفي مثبت في جهازي ولا أريد ان ازيلها ابدا ... الموضوع كله اختلاف في وجهات النظر لا اكثر ....

بالنسبة لسؤالك حول الدوت نيت ...

هناك فروق كبيرة بين البرامج العادية و برامج الدوت النيت ... اذكر بعضها :

1 - ال CLR هو الذي يدير تنفيذ برامج الدوت نيت .... و إدارته لتنفيذ البرنامج اعطت برامج الدوت نيت قوة رهيبة منها امكانية تشغيل برنامجين في مساحة عناوين address space واحدة لان في ويندوز يعزل كل برنامج في address space لوحدة و هذا ما يسبب خسارة لموارد النظام ، طبعا ال CLR سوف يدير تنفيذ البرنامجين بطريقة تمنع كل برنامج من التعدي على برنامج اخر، لذلك لا خوف على متانة و استقرار النظام .

2 - يدير ال CLR الذاكر المحجوزة خلال عمل البرنامج Run time .... و يزيل جميع المناطق المحجوزة التي لا تعد الحاجة إليها .

3 - يتختلف التركيب البنيوي للبرامج التنفيذية PE Format ( البرامج العادية ) عن التركيب البنيوي لبرامج الدوت نيت .... طبعا برامج الدوت نيت تستخدم صيغة ال PE و لكنها اظافت بعض الاقسام و ازالت اقسام اخرى ... على سبيل المثال : يوجد الان قسم يسمى CLR Header يحتوي على معلومات تخص البرنامج تهم ال CLR .... كذلك يوجد قسم لل Meta data التي تحتوي على معلومات عن جميع الملفات المطلوبة ليعمل البرنامج .

هذا بعض اللي في راسي الان .... ممكن اذكر المزيد وقت اخر ....

#17

تحيه طيبة للجميع................

اخي خضر .. قمت بتنفيذ البرنامج وفعلاً عمل معي تمام ولكن ما استغرب وجودة هو هذا الكود الطويل الموجود مسبقاً في منطقةالكود ما هو ولماذا ...

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace messenger
{
	/// <summary>
	/// Summary description for Form1.
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
  private System.Windows.Forms.Button button1;
  private System.Windows.Forms.Label label1;
  /// <summary>
  /// Required designer variable.
  /// </summary>
  private System.ComponentModel.Container components = null;

  public Form1()
  {
 	 //
 	 // Required for Windows Form Designer support
 	 //
 	 InitializeComponent();

 	 //
 	 // TODO: Add any constructor code after InitializeComponent call
 	 //
  }

  /// <summary>
  /// Clean up any resources being used.
  /// </summary>
  protected override void Dispose( bool disposing )
  {
 	 if( disposing )
 	 {
    if (components != null) 
    {
   	 components.Dispose();
    }
 	 }
 	 base.Dispose( disposing );
  }

  #region Windows Form Designer generated code
  /// <summary>
  /// Required method for Designer support - do not modify
  /// the contents of this method with the code editor.
  /// </summary>
  private void InitializeComponent()
  {
 	 this.button1 = new System.Windows.Forms.Button();
 	 this.label1 = new System.Windows.Forms.Label();
 	 this.SuspendLayout();
 	 // 
 	 // button1
 	 // 
 	 this.button1.Location = new System.Drawing.Point(104, 152);
 	 this.button1.Name = "button1";
 	 this.button1.TabIndex = 0;
 	 this.button1.Text = "button1";
 	 this.button1.Click += new System.EventHandler(this.button1_Click_1);
 	 // 
 	 // label1
 	 // 
 	 this.label1.BackColor = System.Drawing.SystemColors.ActiveCaption;
 	 this.label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
 	 this.label1.FlatStyle = System.Windows.Forms.FlatStyle.System;
 	 this.label1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(178)));
 	 this.label1.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224)));
 	 this.label1.ImageAlign = System.Drawing.ContentAlignment.TopCenter;
 	 this.label1.Location = new System.Drawing.Point(96, 8);
 	 this.label1.Name = "label1";
 	 this.label1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
 	 this.label1.Size = new System.Drawing.Size(104, 16);
 	 this.label1.TabIndex = 1;
 	 this.label1.Text = "البرنامج الاولى لشبكة ";
 	 this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
 	 // 
 	 // Form1
 	 // 
 	 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
 	 this.ClientSize = new System.Drawing.Size(292, 190);
 	 this.Controls.AddRange(new System.Windows.Forms.Control[] {
                    this.label1,
                    this.button1});
 	 this.Name = "Form1";
 	 this.Text = "Form1";
 	 this.ResumeLayout(false);

  }
  #endregion

  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main() 
  {
 	 Application.Run(new Form1());
  }

  private void button1_Click(object sender, System.EventArgs e)
  {
  
  }

  private void button1_Click_1(object sender, System.EventArgs e)
  {
 	 MessengerAPI.MessengerClass msg;
 	 msg = new MessengerAPI.MessengerClass();
 	 MessageBox.Show(msg.MySigninName.ToString());
 	 }

  private void button2_Click(object sender, System.EventArgs e)
  {
  
  }
	}
}

وهل هو ضروري لعمل البرنامج...

تم تعديل هذه المشاركة بواسطة walcom في 22 مارس 2005 في 13:08

#18

هذا الكود هو البرنامج، عندما ترسم نموذج فبيئة التطوير تقوم من طرفها بكتابة الكود مقابله و عندما تضع اية امر على النموذج فهو يصمم بالكود

اي ان البرنامج في النهاية هو كود متكامل يمكن معالجته بدون Visual Studio.net

#19

السلام عليكم لماذا الصور لا تظهر هنا ؟؟؟

#20

الصور ذهبت بعد تغير المنتدى من فترة بعيدة و ضياع جزء من قاعدة البيانات

#21

يعني مافي حل لاسترجاعالصور هذة

حسبي الله ونعم الوكيل

#22

أخي خضر ترزي الموضوع حلو جدا ولدي فية عدة اسئلة(أتمنى أنه لم يفت اوانها :rolleyes: )وهي:

1 - الوصلات التي ارفقتها في أول مشاركة لك لم تعمل معي بشكل جيد لا أدري لماذا(أتمنى أن ترفقها مرة أخرى).

2 - هل هل أستطيع من خلال المكتبة هذة الوصول أيضا إلى المحادثات التي تحصل خلال الماسينجر وكذلك أصل إلى أسم وعنوان الشخص الذي تتم معة المحادثة.

3 - هل يوجد المقابل للـ Yahoo أي هل تدعم السي شارب الـ Yahoo أيضا .

وشكرا.

(h)

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

#23

السلام عليكم

كرد سريع والله اعلم زمن الاستاذ خضر الترزي ولي وراح يعني الاستاذ مشغول والتفاصيل الاكثر عند الاقدميه من اصحاب المنتدي

ولكم الف تحية معطرة بالعبق اليماني

#24

طيب ياريت أحد يدلني على بريدة الالكتروني أو يجاوب على السؤال (h)

تم تعديل هذه المشاركة بواسطة students في 21 مارس 2005 في 15:30

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

هذا الموضوع مغلق.

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