fmo_82

أشترك معنا في بناء نظام Remote Desktop مع خاصية التحكم

71 ردود في هذا الموضوع

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

سألخص المشاكل في النظام وحلولها في النقاط التالية:

1- مشكلة عدم التعرف على الأمور الصغيرة التي تحدث ولا تؤثر بشكل كبير في تغير الصورة مثل الكتابة ولذلك لا بد لنا من عمل دالة اضافية تأخذ الصورة بدون عملية المقارنة ويتم تنفيذها مع حدث استخدام الكي بورد إلا إذا وجد لديكم حل اخر

2- مشكلة عدم امكانية فتح أكثر من Remote Desktop لأكثر من جهاز في نفس الوقت وسبب المشكلة أنه لا يمكن عمل ريجستر لنفس الـChannel أكثر من مرة على نفس التطبيق والحل هو تمييز تلك الـChannels بـHashTable لكل منها ويمكنك مثلا توليد رقم عشوائي لتمييز كل Channel عن الأخرى وكما يلي كمثال:

Random rand = new Random ();
System.Collections.Hashtable HashName = new System.Collections.Hashtable();
HashName["ID"] = rand;
chan = new TcpChannel(HashName, null, null);

يبقى لدينا بعد عمل هذه التعديلات :

1- عملية نقل الملفات ونريد تنفيذ هذه العملية على ثلاثة مراحل:

الأول: تنفيذ عملية الـDragDorp على الـForm بحيث أن يتم ارجاع موقع الملف لدى الـClient عند سحبه على الـForm

الثاني: عمل Remoting Method يتم من خلالها تحديد الـActive Folder الذي هو على الـServer بحيث يوضع فيه الملف المراد نقله

الثالث: عمل Remoting Method تأخذ موقع الملف على الـClient واسمه ومكان وضعه على الـServer

2- تحويل واجهة الـServer إلى Windows Service

3- عملية الـAuthentication بين الـClient والـServer ويمكن كما ذكرت سابقا ربط هذه العملية بالـUser Acount في الـWindows.

ارحب بالإقتراحات الأخرى

تم تعديل بواسطه فادي عبدالقادر
اضافة نقاط
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بالنسبة للمشكل الأول فقد عملت خاصية للفئة تحدد مااذا كنا سنستعمل خاصية المقارنة

post-23361-1221331341.png

Make Difference

عند تحديدها يتم اعتماد المقارنة بين الصور

يمكننا تعطيلها عند الكتابة

الخاصية CompareActive هي المسؤولة هنا فنجعلها false عند الكتابة

مجرد اقتراح أولي ننتظر الاقتراحات الأخرى

ان شاء الله سأقوم بالخطوات الاخرى

بالتوفيق للجميع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
الأول: تنفيذ عملية الـDragDorp على الـForm بحيث أن يتم ارجاع موقع الملف لدى الـClient عند سحبه على الـForm

الثاني: عمل Remoting Method يتم من خلالها تحديد الـActive Folder الذي هو على الـServer بحيث يوضع فيه الملف المراد نقله

الثالث: عمل Remoting Method تأخذ موقع الملف على الـClient واسمه ومكان وضعه على الـServer

الأول:نفذت عملية السحب على الصورة لذلك قمت بتفعيلها

انسخ الكود
  1. pictureBox1[color= #339933;].[/color]AllowDrop [color= #339933;]=[/color] [color= #000000; font-weight: bold;]true[/color][color= #339933;];[/color]
  2.  
  3.  

عمل تأثير السحب للملفات فقط على الصورة

انسخ الكود
  1. [color= #000000; font-weight: bold;]private[/color] void pictureBox1_DragEnter[color= #009900;]([/color]object sender[color= #339933;],[/color] DragEventArgs e[color= #009900;])[/color]
  2. [color= #009900;]{[/color]
  3. [color= #b1b100;]if[/color] [color= #009900;]([/color][color= #009900;]([/color]e[color= #339933;].[/color]Data[color= #339933;].[/color]GetDataPresent[color= #009900;]([/color]DataFormats[color= #339933;].[/color]FileDrop[color= #009900;])[/color][color= #009900;])[/color] [color= #009900;])[/color]
  4. [color= #009900;]{[/color]
  5. e[color= #339933;].[/color]Effect [color= #339933;]=[/color] DragDropEffects[color= #339933;].[/color][color= #990000;]Copy[/color][color= #339933;];[/color]
  6. [color= #009900;]}[/color]
  7. [color= #b1b100;]else[/color]
  8. [color= #009900;]{[/color]
  9. e[color= #339933;].[/color]Effect [color= #339933;]=[/color] DragDropEffects[color= #339933;].[/color]None[color= #339933;];[/color]
  10. [color= #009900;]}[/color]
  11. [color= #009900;]}[/color]
  12.  
  13.  

ارجاع اسم الملف المسحوب

انسخ الكود
  1. [color= #000000; font-weight: bold;]private[/color] void pictureBox1_DragDrop[color= #009900;]([/color]object sender[color= #339933;],[/color] DragEventArgs e[color= #009900;])[/color]
  2. [color= #009900;]{[/color]
  3. string fileName [color= #339933;]=[/color] [color= #009900;]([/color][color= #009900;]([/color]string[color= #009900;][[/color][color= #009900;]][/color][color= #009900;])[/color]e[color= #339933;].[/color]Data[color= #339933;].[/color]GetData[color= #009900;]([/color]DataFormats[color= #339933;].[/color]FileDrop[color= #009900;])[/color][color= #009900;])[/color][color= #009900;][[/color][color= #cc66cc;]0[/color][color= #009900;]][/color][color= #339933;];[/color]
  4. [color= #009900;]}[/color]
  5.  
  6.  

الثاني:الفكرة التي أقترحها وهي نقل الملف المسحوب من الclient إلى الServer يتم وضعه في مجلد الTemp

وبعد اتمام عملية النقل يتم حفظه في الClipboard

انسخ الكود
  1. StringCollection fileToCopy[color= #339933;]=[/color][color= #000000; font-weight: bold;]new[/color] StringCollection[color= #009900;]([/color][color= #009900;])[/color][color= #339933;];[/color]
  2. fileToCopy[color= #339933;].[/color]Add [color= #009900;]([/color]receivedFile[color= #009900;])[/color][color= #339933;];[/color]
  3. Clipboard[color= #339933;].[/color]SetFileDropList[color= #009900;]([/color]fileToCopy[color= #009900;])[/color][color= #339933;];[/color]
  4.  
  5.  

بعدها نقوم بجلب الHandle للنافذة الموجودة عليها مؤشر الفأرة باستعمال دالة الAPI المعروفة WindowFromPoint والتي تأخذ كبرامتر احداثيات الماوس الحالية

انسخ الكود
  1. [color= #009900;][[/color]DllImport[color= #009900;]([/color][color= #0000ff;]"user32.dll"[/color][color= #009900;])[/color][color= #009900;]][/color]
  2. [color= #990000;]static[/color] extern IntPtr WindowFromPoint[color= #009900;]([/color]POINT Point[color= #009900;])[/color][color= #339933;];[/color]
  3.  
  4.  

بعدها نقوم بعملية اللصق بارسال رسالة للنظام باستخدام الدالة SendMessage مع التابع WM_PASTE

وبهذا نختصر العمليتين 2 و 3

بالتوفيق للجميع

تم تعديل بواسطه DreamNet
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

المشكل الأول الذي يواجهني حاليا هو التعامل مع الأحداث في الفئة المنشئة للRemoting

فقد فكرت في اضافة حدث مخصص يراقب تغيير دقة الشاشة وقمت بانشائه بالطريقة التالية:

عرفت مفوض للحدث

انسخ الكود
  1. public delegate [color= #993333;]void[/color] ScreenEventHandler[color= #009900;]([/color]Size CurrRes[color= #009900;])[/color];
  2.  

ثم قمت داخل الكلاس بتعريف الحدث

انسخ الكود
  1. public event ScreenEventHandler OnSchanged;
  2. public [color= #993333;]void[/color] Remoting_OnSchanged[color= #009900;]([/color]Size CurRes[color= #009900;])[/color]
  3. [color= #009900;]{[/color]
  4. OnSchanged[color= #009900;]([/color]CurRes[color= #009900;])[/color];
  5. [color= #009900;]}[/color]
  6.  

ثم قمت بمراقبة التغيير في دالة تحريك الماوس

انسخ الكود
  1. public [color= #993333;]void[/color] MoveMouse[color= #009900;]([/color][color= #993333;]int[/color] x, [color= #993333;]int[/color] y[color= #009900;])[/color]
  2. [color= #009900;]{[/color]
  3. [color= #b1b100;]if[/color] [color= #009900;]([/color][color= #009900;]([/color]CurrentResolution.[color= #202020;]Width[/color] [color= #339933;]!=[/color] GetDesktopBitmapSize[color= #009900;]([/color][color= #009900;])[/color].[color= #202020;]Width[/color][color= #009900;])[/color][color= #339933;]&&[/color]
  4. [color= #009900;]([/color]CurrentResolution.[color= #202020;]Height[/color] [color= #339933;]!=[/color] GetDesktopBitmapSize[color= #009900;]([/color][color= #009900;])[/color].[color= #202020;]Height[/color][color= #009900;])[/color][color= #009900;])[/color]
  5. [color= #009900;]{[/color]
  6. CurrentResolution [color= #339933;]=[/color] GetDesktopBitmapSize[color= #009900;]([/color][color= #009900;])[/color];
  7. this.[color= #202020;]Remoting_OnSchanged[/color][color= #009900;]([/color]CurrentResolution[color= #009900;])[/color];
  8. [color= #009900;]}[/color]
  9. SetCursorPos[color= #009900;]([/color]x, y[color= #009900;])[/color];
  10. [color= #009900;]}[/color]
  11.  

ثم قمت بانشاء الحدث عند الClient بالطريقة العادية

انسخ الكود
  1. obj.[color= #202020;]OnSchanged[/color] [color= #339933;]+=[/color] new ScreenEventHandler[color= #009900;]([/color]EventScreen[color= #009900;])[/color] ;
  2.  

طبعا EventScreen هو اجراء يمرر نفس التوابع للحدث الأساسي

لكن يحدث خطأ :( في السطر الأخير

post-23361-1221581049_thumb.jpg

عند اغلاق ويندوز الخادم فان برنامج العميل يعلق

لم استطع عمل شئ بالنسبة لنقل الملفات خصوصا اني فشلت في انشاء الأحداث

فقط قمت باضافة رسم المؤشر للفأرة مع الصورة الملتقطة

بالتوفيق ان شاء الله

تم تعديل بواسطه DreamNet
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الخطأ غير واضح اخي دريم

جرب اغلاق الـCustomErrors بإضافة السطر التالي

RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off;

إذا استمرت المشكلة ارجو رفع المشروع لتأكد من سبب الخطأ

اعتذر عن التأخير في متابعة المشروع,

اذكر في الأمور المتبقية:

يبقى لدينا بعد عمل هذه التعديلات :

1- عملية نقل الملفات ونريد تنفيذ هذه العملية على ثلاثة مراحل:

الأول: تنفيذ عملية الـDragDorp على الـForm بحيث أن يتم ارجاع موقع الملف لدى الـClient عند سحبه على الـForm

الثاني: عمل Remoting Method يتم من خلالها تحديد الـActive Folder الذي هو على الـServer بحيث يوضع فيه الملف المراد نقله

الثالث: عمل Remoting Method تأخذ موقع الملف على الـClient واسمه ومكان وضعه على الـServer

2- تحويل واجهة الـServer إلى Windows Service

3- عملية الـAuthentication بين الـClient والـServer ويمكن كما ذكرت سابقا ربط هذه العملية بالـUser Acount في الـWindows.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم اود الاشتراك معكم في هذا المشروع و انا ان شاء الله متحمس له كثيرا

خبرة لا بأس بها في لغة السي شارب

لدي اساس في كيف تعمل الشبكة في البرمجة و كذلك بعض التحكم

فارجو من الاستاذ فادي ان يقبل في المجموعة هذه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بســم الله الـرحمــن الرحيــم

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

اتمني ان تقبلوني المشترك الرابع إن شاء الله

في هذا الموضوع المهم

ياشباب انا عندي فكرة عن برمجة الشبكات بلغة جافا فهل يوجد فرق بين البرمحة بلغة الجافا والسي شارب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

لن تتصورو فرحتي عندما وجدت الموضوع, فلقد بحثت عن طريقة عمل برنامج محاظرات و التحكم عن بعد عبر الأنترنت منذ أكثر من 5 أشهر دون التوصل لأي نتيجة تذكر

لن أتخيل يوما أني قد أجد موضوعا مشابها في موقع عربي

ياريت نكمل الموضوع وأنا رهن الإشارة وياريت لو ترفعو آخر نسخة للبرنامج نكمل عليها وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بسم الله الرحمن الرحيم

انا اريد الانضمام

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

واجيد البرمجة بلغة

vb.net

:happy:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بســم الله الـرحمــن الرحيــم

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

أريد الآن منكم أن تقسموا أنفسكم إلى فريقين:

الأول: سيشترك معنا في التحليل وتجربة المشروع وإعطاء الـFeedback.

الثاني: سيشترك معنا في البرمجة والتنفيذ الفعلي.

بانتظار مشاركاتكم

هل يمكن لي ان انضم مع الفريق الثاني

سبق لي برمجة برنامج مثل MSN يستعمل نفس السرفر الدي يستعمله MSN

انا مبتدا في برمجة TCP/IP لكن ساحاول البحث و المساعدة قدر استطاعتي

و شكرا

ابرمج بالسي شارب

و شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

انا مبرمج مبتدأ واريد ان اتعلم برمجة الشبكات

ارجوا المساعدة يا شباب

اسمي

محمد جرار

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم موضوع رائع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

فقط أردت توضيح فكرتي في مقارنة أجزاء من الصورة طبعا امكانية استعمال المؤشرات قد تسرع العملية لكني كنت أفكر في حصر عملية المقارنة قدر المستطاع (كل كلامي طبعا نظري لم أجربه بعد)

الفكرة هي في تقسيم الصورة إلى عدة صور وعملية المقارنة لا تكون دورية يعني تتم فقط عند:

- تغير تحرك الماوس وعندها لا يتم المقارنة إلا في مساحة معينة موجود فيها مؤشر الماوس أي الصور التي تقع فقط في تلك المساحة

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

لا أعرف ربما نظريا ستفيد هذه الطريقة :wink: :wink:

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم...

لما لم يتم إستعمال RDP وتم إستعمال TCP

جزاكم الله خيرا,,,,

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

باذن الله انا معكم مع خاصية التحكم remote desktop

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

وعليكم السلام واهلا وسهلا بكم,

السلام عليكم...

لما لم يتم إستعمال RDP وتم إستعمال TCP

جزاكم الله خيرا,,,,

بشكل عام RDP بروتوكول جاهز للويندوز ريموت ديسكتوب لكن الهدف في هذا المشروع هو انشاء نظام كامل سيرفر وكلينت لهدف التعلم وهو لا يحتاج لتفعيل خاصية الريموت كما في البروتوكول المذكور

واهلا وسهلا بك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اعرف كل شيء عن كيفية بناء أنظمة Remote Desktop مع خاصية التحكم:

لمن يريد معرفة كيفية بناء مثل هذه البرامج بالسي شارب. إذا حصلت على تواجد 4 أعضاء سيتم كتابة درس لذلك لكن بشرطة التعهد بالتفاعل بمعنى أنه يجب على كل عضو المناقشة بالموضوع واقتراح بدائل ويمكنه السؤال عن أي موضوع حوله:

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

إذا كان مستوى العضو جيد أي انه تعامل مع برمجة الشبكات سابقا فيجب عليه قراءة درس - مقدمة في برمجة تقنية الـRemotting Programming

بشكل مبدئي ستكون النقاشات الدائرة حول هذه الأمور:

- مقدمة في الفكرة المبدئية للمشروع

- شرح كيفية التعامل مع الـWin32 API لتعامل مع الماوس والكيبورد بالسي شارب وشرح الدوال الخاصة بها من خلال المكتبة user32.dll

- استخدام الـRemoting في عملية الـStreaming ومبدأ الـHost & Client لبناء أنظمة التحكم عن بعد

فلمن يريد الإشتراك كتابة أسمه وتعهده بالتفاعل (سيتم البدأ حال تواجد 4 أعضاء على الأقل)

والله الموفق

يشرفنا الانظمام لكم .. وكنت ابحث عن هذا الموضوع بشغف واستفدت من الدكتور فادي الكثير .. والان مشروع التخرج تبعي بنفس هذا الموضوع اتمنى استفيد منكم وافيد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

أرجو أن يكتب كل مشترك : هل سبق له أن تعامل مع برمجة الشبكات وما هي اللغة التي يعمل عليها (مع ذكر اسم اخر مشروع قام ببنائه له ارتباط ببرمجة الشبكات) وذلك لتحديد مستوى المشتركين وبناء عليه سيكون مستوى النقاش

اول مرة اتعامل مع برمجة الشبكات من مدة 3 اشهر .. اعمل في لغة فجول دوت نت 2010 .. اعمل الآن على مشروع تحكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أهلا وسهلا بك أخي العزيز DreamNet بنضمامك معنا :) بقي لدينا مقعد واحد فارغ فلمن سيكون :)

انا هنا واريد الانظمام اليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اعرف كل شيء عن كيفية بناء أنظمة Remote Desktop مع خاصية التحكم:

لمن يريد معرفة كيفية بناء مثل هذه البرامج بالسي شارب. إذا حصلت على تواجد 4 أعضاء سيتم كتابة درس لذلك لكن بشرطة التعهد بالتفاعل بمعنى أنه يجب على كل عضو المناقشة بالموضوع واقتراح بدائل ويمكنه السؤال عن أي موضوع حوله:

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

إذا كان مستوى العضو جيد أي انه تعامل مع برمجة الشبكات سابقا فيجب عليه قراءة درس - مقدمة في برمجة تقنية الـRemotting Programming

بشكل مبدئي ستكون النقاشات الدائرة حول هذه الأمور:

- مقدمة في الفكرة المبدئية للمشروع

- شرح كيفية التعامل مع الـWin32 API لتعامل مع الماوس والكيبورد بالسي شارب وشرح الدوال الخاصة بها من خلال المكتبة user32.dll

- استخدام الـRemoting في عملية الـStreaming ومبدأ الـHost & Client لبناء أنظمة التحكم عن بعد

فلمن يريد الإشتراك كتابة أسمه وتعهده بالتفاعل (سيتم البدأ حال تواجد 4 أعضاء على الأقل)

والله الموفق

ههههههههه كان هذا 2008 وانا قاعد انا موجود .. معليش اصل انا جديد في المنتديات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .