تعلم معي كيف تتعامل مع البرامج الخارجيّة
#4
بسم الله الرحمان الرحيم
نكمل بعض الشئ بإذن الله تعلى...

نصمم شكل البرنامج اولا... سيكون بشكل التالي…
نضع المكونات التالية
كود :
Button1 Button2 Edit1 Label1
ونغيّر العنواين الى شئ مناسب

الصورة توضح...
[صورة: 84097619.png]


الأن اخواني حان وقت العمل مع الكود
نبدئ على بركة الله...

اولا يجب ان نعرّف بعض المتغيّرات التي هي ستكون المسؤلة عن الهاندل للمفكرة...
لكن كم واحدة هي؟
نعم,, اولا نحتاج الى متغيّر يأتي بهندل تبع الأب الكبير لبرنامج المفكرة...
وبعدها نحتاج الى متغير يقوم بجلب الهاندل للميمو التي هي الإبن للأب الكبير...
هل نحتاج شئ آخر؟
لا... ليس الآن... ولكن لو افترضنا انه لدينا 5 من الأبناء...
اذا سنحتاج 1 متغيّر للأب و 5 للأبناء... واضح؟

طيب...
اذا نعرف2 من المتغيرات .,, انا استخدمت هذين ...
والمتغيّرات بلتأكيد سيكونون من النوع تي هاندل...
مثال...
var
كود :
forr, edi : THandle;

هذا اولا...
ثانيا...
نحتاج الى متغير يكون المسؤل عن النص الذي سيتم جلبه او ارساله...
وهو يكون من النوع سترينج طبعا...
هكذا
كود :
Tex: string;

والنتيجة هي التالي لحد الآن...
كود :
procedure TForm1.Button1Click(Sender: TObject); var forr, edi : THandle; Tex: string;

نعم.. بين ال
كود :
Begin
و
كود :
End
نكتب التالي ولكن قبل ان تكتب دعني اشرح بعض الشئ...
نستخدم كلمة او الأمر
كود :
FindWindow
لنحدد الأب الكبير للبرنامج... وبعدها نضع النتيجة في المتغير الأول
كود :
forr
نعم كما ذكرت سابقا... نستخدم البرنامج الذي تم ذكره في الأعلى...
ونضغط على المربع ونسحبه على المفكرة والنتيجة في ال
كود :
Classe
ستكون التالي...
كود :
Notepad

هذه مهمة الآن... نكتب التالي في الدلفي...
كود :
forr := FindWindow('Notepad',nil);
وهذا هو اول سطر بعد ال
كود :
Begin
ماذا يعني هذا الكود؟...
نعم ال
كود :
FindWindow
هو فونكشن يأتي بلهاندل...
ولكن هاندل لماذا؟
نعم هاندل للأب الكبير الذي اسمه
كود :
Notepad
وبعد ان يأتي بهذا الهاندل يضعه في المتغير...
بعدها يجب ان نستخدم الأمر...
كود :
FindWindowEx
ولذي يقوم بجلب الهاندل ولكن للأبناء...
يعني هو خصصيصا للأبناء..
تكتب التالي...
كود :
edi := FindWindowEx(forr,0,'Edit',nil);
وهنا كما ترون.. نحدد الأب الكبير اولا... ثم نحدد بعدها الأبن
والذي هو يعنوان
كود :
Edit
يعني الميمو في المفكرة.. الكلاس لها اسمه ايديت...
واضح لحد الآن؟ نعم... وكما تم شرح في السابق .. يجلب الهاندل ويضع في المتغير الثاني والذي هو
كود :
Edi
بعدها نضع السطر التالي..
كود :
SetLength(Tex,Max_Path);
ونلاحظ اخواني الكرام ان التيكس... هو نفسه المتغير الذي عرفناه... وهو من نوع سترينج...
بعدها نضع التالي...
كود :
SendMessage(edi,WM_GETTEXT,Max_Path,LongInt(@Tex[1]));
وهنا نرسل أمر بلسيند ماسج... ونقول له... في الهاند لل
كود :
Edi
نجلب الكتابة منه... يعني نجلب التيكست من هذا المكون الذي لديه الهاندل مخزّن في المتغير
كود :
Edi
وبعدها... يعني بعد ما نجلب الكتابة نضعه في المتغير النصّي الذي عرّفناه بلأسم
كود :
Tex
واضح ؟
نعم هذا ما اعرفه لحد الآن والله المستعان
ان كان احد الخبراء يعلم المزيد عن هذا السطر فلا بيخل علينا بارك الله فيه...
نعم وفي الآخير... نضع السطر التالي...
كود :
edit1.Text:=Tex;
وهو معروف لماذا...
يعني نحدد اليديت بوكس تيكست ليظهر التيكست المجلوب...

يعني في الآخر...
يكون شكل الكود بلكامل على هذا الحال..

كود :
procedure TForm1.Button1Click(Sender: TObject); var forr, edi : THandle; Tex: string; begin forr := FindWindow('Notepad',nil); edi := FindWindowEx(forr,0,'Edit',nil); SetLength(Tex,Max_Path); SendMessage(edi,WM_GETTEXT,Max_Path,LongInt(@Tex[1])); edit1.Text:=Tex; end;

هذا كل شئ لحد الآن...
بارك الله لكم
آخيرا اود ان اقول لكم ان اردتم ان ترسلو كتابة الى المفكرة...
بإمكاننا ان نستخدم نفس الكود ولكن نغير حرف واحد...
وهو الحرف ؟؟؟؟؟؟؟؟؟؟

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

نعم هو حرف واحد

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

بارك الله لكم وجزاكم خيرا
ولا نسوني من صالح دعائكم...
والسلام عليكم ورحمة الله وبكاته

.../...انتها الدرس... ولكن بقي ان تجيبوا على السؤآل + مهمة تأتيكم لاحقا ..../....
الرد


الردود في هذا الموضوع
تعلم معي كيف تتعامل مع البرامج الخارجيّة - بواسطة AL-MOB4RM3G - 22-03-2009, 11:40 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 5 ) ضيف كريم