المشاركات : 9
المواضيع 6
الإنتساب : Apr 2015
السمعة :
0
الشكر: 6
تم شكره 33 مرات في 2 مشاركات
30-06-15, 02:54 AM
(آخر تعديل لهذه المشاركة : 30-06-15, 02:55 AM {2} بواسطة nowaytorun.)
انا بحاول انقل data بين vb.net و برنامج تانى انا عاوز اتحكم فيه , الحمد لله انا عرفت اعمل كده عند طريق sendkeys بس فى مشكلة ان لازم نافذة البرنامج اللى انا بحاول اتحكم فيها لازم تكون "on top" . انا دورت على النت علشان احل المشكلة دى( انا عاوز ابعت و استقبل المعلومات حتى لو نافذة البرنامج صغرتها ل شريط المهام) .
فوجد انا فى اوامر اسمها (API) ==< زى امر find window و handle بس مفهمتهمش كويس.
فياريت تساعدونى و تشرحوا الموضوع ده
المشاركات : 1,486
المواضيع 101
الإنتساب : Sep 2012
السمعة :
127
الشكر: 71
تم شكره 6155 مرات في 1035 مشاركات
30-06-15, 08:53 AM
(آخر تعديل لهذه المشاركة : 30-06-15, 08:55 AM {2} بواسطة silverlight.)
Handle الخاص ب الفورم عبارة عن IntPtr و هو عبارة عن رقم قيمته تتغير في كل مرة تقوم فيها بتشغيل برنامجك بمعني انك في كل مرة ستقوم فيها بتشغيل الفورم الرئيسي في مشروعك قيمة هذا IntPtr الخاصة بهذا الفورم ستتغير أي أنها ليست قيمة ثابتة و في واقع الأمر أنا يحلو لي ان ادعوه مفتاح خاص لكل فورم علي حده أو رقم مسلسل يقوم نظام التشغيل بإعطاؤه للفورم بحيث لا تجد له مثيلا وذلك حتي يستطيع نظام التشغيل مراقبة البرامج المفتوحة طبقا لهذا Handle
ويمكن اقرب مثال لذلك أيضا انت عندما تحاول ان تعطي ارقام مسلسلة لأي شئ فأنت غالبا لا تريد تكرار الارقام المسلسلة و بالتالي العناصر التي تنتمي لكل رقم مسلسل لديك تكون مرتبطة بهذا الرقم المسلسل و من هنا تأتي اهمية هذا الرقم في انه رقم متفرد لن تجد له مثيل في اي فورم مفتوح علي شاشة الكمبيوتر مثلا زمان و في بدايات الكمبيوتر و قبل الدوت نت كل شئ تقريبا كان له Handle او IntPtr مثل الفونت Font و الصورة Image/Bitmap و اشياء اخري
فيما يختص بمشروعك و بالنسبة لأي فورم موجود به فمن السهل استرجاع قيمة Handle الخاصة بكل فورم علي حدة او مثلا يمكنك ان تسحدم My.Application.OpenForms و هي قيمتها عبارة عن FormCollection و منها سوف يمكنك استرجاع قمية Handle لحميع الفورم الموجودة في مشروعك
, وطبعا و بما ان مايكروسوفت تكتب الكود الخاص ب كلاسات الدوت نت بأسلوب يخدم أهدافها هي في القام الأول و هذا خقها طبعا بالتالي قامت بتوزيع دوال API القديمة في أكثر من مكان علشان احنا نتعب شوية لكي نصل للنتائج الني نريدها
عموما انت تحتاج الي استخدام الكلاس Processs لكي تسترجع Handle الخاص بأي نافذة مفتوجة و التي لا تنتمي الي نوافذ برنامجك