أهلا بك زائرنا الكريم يرجى منك التسجيل لدينا حتى تكتمل عضويتك وتكون واحدا من أسرتنا وهذا من دواعي سرورنا

المدير العام
مستر يونس
أهلا بك زائرنا الكريم يرجى منك التسجيل لدينا حتى تكتمل عضويتك وتكون واحدا من أسرتنا وهذا من دواعي سرورنا

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



 
الرئيسيةالبوابةأحدث الصورالتسجيلدخول

 

 تعلم التحكم في برنامج آخر من داخل برنامجك

اذهب الى الأسفل 
كاتب الموضوعرسالة
mr.mojahid
Admin
mr.mojahid


عدد المساهمات : 214
تاريخ التسجيل : 20/03/2011
العمر : 33

تعلم التحكم في برنامج آخر من داخل برنامجك Empty
مُساهمةموضوع: تعلم التحكم في برنامج آخر من داخل برنامجك   تعلم التحكم في برنامج آخر من داخل برنامجك Emptyالأربعاء أبريل 20, 2011 2:56 pm

السلام عليكم




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


اذن على بركة الله

قبل مانبدأ سنحتاج الى معرفة بعض الأمور ألا وهي المقبض

فما هو المقبض ياترى ؟

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

فيما سيساعدنا المقبض؟

سيساعدنا على التحكم في النوافذ الأخرى من برنامجنا عبر دوال Api

كيف نستطيع الحصول على مقبض نافذة ؟ [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]

ببساطة نستطيع ذلك بواسطة دوال Api

أولا باستخدام دالة GetActiveWindow

تقوم هذه الدالة بتحديد مقبض النافذة النشطة
و هذا مثال للاستخدام

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



رموز PHP:




Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As Integer








في حدث زر الحصول على المقبض ضع الكود التالي


رموز PHP:






MsgBox
(GetActiveWindow)








يعيب هذه الدالة أنها تقوم بالحصول على عنوان النافذة النشطة فقط

ثانيا : دالة FindWindow

تقوم هذه الدالة بالحصول على عنوان مقبض نافذة و هذا عن طريق تمرير عنزان النافذة الى أحد برماتراتها

و هذا مثال للاستخدام

صرح عن هذه الدالة


رموز PHP:






Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer









حيث lpClassName هو الكلاس و lpWindowName عنوان النافذة
ضع في الزر أو الفورم لواد الكود التالي


رموز PHP:






MsgBox
(FindWindow(Nothing, "Form1"))








سنقوم بالحصول على مقبض النافذة التي عنوانها Form1

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

ثالثا : دالة GetForegroundWindow

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


و هذا مثال للاستخدام

صرح عن هذه الدالة


رموز PHP:




Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Integer








في الفورم لواد ضع الكود التالي


رموز PHP:




MsgBox(GetForegroundWindow)









كما يمكنك الحصول على مقبض نافذة برنامجك من دون استعمال دوال Api

ضع الكود التالي في الفورم لواد



رموز PHP:




MsgBox(Me.Handle)








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


الآن أنشئ مشروع جديد واسمه HandleTest
أضف للمشروع تايمر و أداة TextBox
اجعل خاصية Interval للتايمر تساوي 1
اجعل خاصية Enabled تساوي True
اجعل خاصية TopMost للفورم تساوي True
سنستعمل الدالة GetForegroundWindow لانها الأفضل للحصول على مقبض الشاشة
في حدث التايمر Tick
ضع الكود التالي


رموز PHP:




TextBox1.Text = GetForegroundWindow








الآن جرب تشغيل البرنامج و قم باختيار أي نافذة و ستلاحظ ظهور عنوان المقبض الخاص بها في التكست بوكس

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


الآن سنقوم بالتجريب احد دوال Api
صرح عن هذه الدالة FlashWindow


رموز PHP:






Declare Function FlashWindow Lib "user32" Alias "FlashWindow" (ByVal hwnd As Long, ByVal bInvert As Long) As Long








تقوم هذه الدالة باضاءة النافذة
في حدث التايمر ضع الكود التالي

رموز PHP:






TextBox1
.Text = GetForegroundWindow

Dim Hwnd
As String = TextBox1.Text

FlashWindow
(Hwnd, 1)








الآن شغل أي البرنامج و ستلاحظ توهج النافذة التي تختارها

=========================================
الآن قم بالتصريح عن هذه الدالة SetWindowText


رموز PHP:




Declare Auto Function SetWindowText Lib "user32" (ByVal hWnd As IntPtr, ByVal Text As String) As Boolean








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

في حدث التايمر ضع الكود التالي


رموز PHP:




TextBox1.Text = GetForegroundWindow

Dim Hwnd
As String = TextBox1.Text


SetWindowText
(Hwnd, "Vb4arab")








البراماتر الأول و هو المقبض و الثاني واضح وهو العنوان الجديد [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]

جرب الآن تشغيل البرنامج و اختر أي نافذة و ستلاحظ تغير في عنوانها

=====================================

المهم الموضوع ليس لعرض و شرح دوال Api
فقط أردت ان أقوم بتقديم بعض الأمثلة لا غير

ملاحظة : ليست كل دوال Api نستطيع استخدمها للتحكم في برنامج آخر عن طريق المقبض
يجب ان تحتوي الدالة على البراماتر الخاص بالمقبض و عادة يكون هذا البراماتر هو الأول و تجد اسمه hwnd



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


و بهذا نصل الى نهاية الدرس [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]

أتمنى أن يعجبكم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://monstarbomazour.yoo7.com
 
تعلم التحكم في برنامج آخر من داخل برنامجك
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» برنامج Fraps 3.3.3 لإخد صور من داخل الالعاب بحجم 2 ميجا
» تعلم كيفية عمل برنامج محادثة
» خدع و أسرار برنامج ال Notepad
» الدرس الثاني في تعلم اللغة الفرنسية
» الدرس الثالت في تعلم اللغة الفرنسية

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
 :: منتدى البرامج والمعلوميات :: منتدى التكنلوجيا والمعلوميات-
انتقل الى: