الدرس السادس في دورة تعلم لغة autoit

بسم الله الرحمان الرحيم, الملك القدوس العزيز الحكيم.
والصلاة والسلام على أشرف الأنبياء والمرسلين, سيدنا وحبيبنا محمد ابن عبد الله صلى الله عليه وسلم.
أما بعد فأيها الإخوى والأخوات الكرام بتحية الإسلام أحييكم, وتحية الإسلام السلام فالسلام عليكم ورحمةًا من الله تعالى وبركاته.
أيها الأحباب تكملة للدورة التي قد بدأناها في تعليم لغة البرمجة autoit
والتي قد تأخرت عنكم بها كثيرا, ولاكن كانت عندي ظروف منعتني من التكملة أرجو أن تعذروني.
اليوم وتكملة لهذه السلسلة التي أرجو من الله أن تكن مرجعا لنا ولكم أيها الأحباب, سنواصل تعرفنا على أهم ما تحتويه هذه اللغة.
ففي الدرس الخامس كنا قد تعرفنا على ملفات الإستدعاء وأقسامها
وكيف نستفيد منها.
يمكنكم طبعا العودة إلى الدرس الخامس وذالك
بالضغط هنا
والآن سأبدء معكم أيها الأحباب في استعراض أهم الدوال المدموجة مع اللغة بشكل تلقائي
وبدايةًا نبدء مع دالة موجودة في كل لغات البرمجة, ويستخدمها كل مصمم البرامج والأدوات بدون إستثناء.
ألا وهي رسائل المحاورة
message box
ففي هذا الدرس سنتطرق لمعرفة رسائل المحاورة, وطرق إستخدامها المختلفة.

ملاحظة هامة

إنا برنامج autoit تم تحديثه لنسخة جديدة
هو والمحرر الخاص به
لتحميل الإصدارات الجديدة يرجا الذهاب إلى
مقدمة في لغة autoit


والآنلنبدء على بركة الله

ما هي رسائل المحاورة

لعلك عزيزي المتابع جربت برامج كثيرة واستخدمت العديد من الأداوات
وجربت حذف ملفات من الجهاز وغيرها من الأعمال
وأكيد في مرة من المرات رأيت رسائل تحذيرية بالخطء, أو رسائل تفيد بنجاح العملية, ورسائل تسألك عن أمر معين … وغيرها من الرسائل.
هذه ما تسمى برسائل المحاورة
حيث رسائل المحاورة تتكون
من عنوان للنافذة ونص لعرضه وأزرار مختلفة فمثلا
زر OK
أو زر OK و cancel
أو زر yes و no
إلى آخره
وبالضغط على أي زر يقم بمهمة محددة.


وهذا ما سنتعرف عليه اليوم في درسنا هذا

كيف يمكنني إنشاء رسائل المحاورة في لغة autoit? وما هي المتطلبات؟

عزيزي الدالة المسؤولة عن إظهار رسائل المحاورة في لغة autoit هي
MSGBox
وشكل الدالة يكن كالتالي |:
MSGBox(tags, ‘title’, ‘text’, timeout, window)
وتتطلب هذه الدالة استدعاء ملف من المكتبة لالاستفادة من المتغيرات
طبعا يمكن الاستغناء عنه واستخدام الأرقام
لاكن في هذا الدرس سنتطرق للإثنين
ولاستدعاء الملف يكفي وضع السطر التالي في أعلى ملف السكربت
#include

إعدادات الدالة

flags إن flags هي خيارات (اعلامات) الدالة التي تبين نوع الرسالة والأزرار التي نريد عرضها والكثير
title عنوان الرسالة
text عنوان الرسالة
timeout [optional] إن خاصية timeOut هي لتحديد وقت إغلاق الرسالة إذا لم يقم المستخدم بالضغط على أي زر, إفتراضية تكن على 0 ما يعني بدون وقت محدد.
hwnd [optional] رمز النافذة التي تريد ربطها معا الرسالة, وسنتعرف لاحقا كيف يمكنني الحصول على رمز النافذة في درس التحكم في النوافذ.

والآن بعد أن تعرفنا على إعدادات الدالة سنتعرف مع بعض على خيارات الدالة وهي flags

flags

الأزرار

الإسم الثابت الرقم الطبيعي للعملية الزر الذي سنحصل عليه رمز آخر يمكن استخدامه
$MB_OK 0 زر OK 0x0
$MB_OKCANCEL 1 زر OK وزر Cancel 0x1
$MB_ABORTRETRYIGNORE 2 زر Abort, وزر Retry, وزر Ignore 0x2
$MB_YESNOCANCEL 3 Yes, No, Cancel 0x3
$MB_YESNO 4 Yes, No 0x4
$MB_RETRYCANCEL 5 Retry, Cancel 0x5
$MB_CANCELTRYCONTINUE 6 Cancel, Try Again, Continue 0x6
$MB_HELP 16384 إضافة زر مساعدة إلى الرسالة. عند الضغط عليه أو الضغط على f1 سيتم إرسال رسالة نظامية للبرنامج, طبعا يمكن التحكم فيها. 0x4000

أيقونات الرسالة

الاسم الثابت رقم العملية الأيقونة الناتجة الرمز البديل
0 لا أيقونة 0x0
$MB_ICONERROR 16 رسالة الخطء 0x10
$MB_ICONQUESTION 32 أيقونة علامة الإستفهام 0x20
$MB_ICONWARNING 48 أيقونة التعجب 0x30
$MB_ICONINFORMATION 64 أيقونة المعلومات 0x40

الأزرار الإفتراضية

الاسم الثابت رقم العملية الزر الإفتراضي الناتج الرمز البديل
$MB_DEFBUTTON1 0 الزر الأول هو الإفتراضي 0x0
$MB_DEFBUTTON2 256 الزر الثاني هو الإفتراضي 0x100
$MB_DEFBUTTON3 512 الزر الثالث هو الإفتراضي 0x200
$MB_DEFBUTTON4 768 الزر الرابع هو الإفتراضي 0x300

نوع الرسالة

الإسم الثابت رقم العملية العملية نوع الرسالة الناتج رمز بديل يمكن استخدامه
$MB_APPLMODAL 0 نوع التطبيق 0x0
$MB_SYSTEMMODAL 4096 نوع النظام (تحتوي على أيقونة) 0x1000
$MB_TASKMODAL 8192 نوع المهام 0x2000

ملاحظات

  1. يمكن استخدام أكثر من اعلام واحد في نفس الرسالة
    مثلا
    لنقل نريد إنشاء رسالة بزر OK وأيقونة معلومة ونوع الرسالة نظامية
    طبعا هذا ممكن
    وذالك بأن نفصل بين الاعلام والآخر بعلامة +
    مثلا لنطبق ما قلناه
    $MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL
  2. طبعا كما تعودنا يجب الفصل بين كل إعداد وآخر بعلامة الفاصلة
  3. عزيزي للتعريف بخيارات الدالة (الاعلام)
    يمكن إستخدام إما الرقم وإما الإسم الثابت وإما الرمز البديل
  4. إذا استخدمت الإسم الثابت فيجب استدعاء الملف المذكور أعلاه

كيف يمكنني ربط أزرار الدالة بمهام?

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

الزر الذي تم ضغطه النتيجة التي تعاد بالاسم الثابت النتيجة التي تعاد بالرقم
OK $IDOK 1
CANCEL $IDCANCEL 2
ABORT $IDABORT 3
RETRY $IDRETRY 4
IGNORE $IDIGNORE 5
YES $IDYES 6
NO $IDNO 7
TRY AGAIN $IDTRYAGAIN 10
CONTINUE $IDCONTINUE 11

في حال تم إنقظاء مدة الوقت إن قمت بتحديدها ولم يضغط المستخدم على أي زر
فالنتيجة تكن -1

الربط بين النتيجة والمهام

عزيزي للربط بين الزر الذي ضغط والمهمة التي تريدها
هناك أكثر من طريقة وأنا سأستعرض معك أهم الطرق

طبعا عزيزي كنا قد تعرفنا على الحقل
switch وكيفية الاستفادة منه في الدروس السابقة
وكذا أمر التحديد
select
وأمر الشرط
if
وكما قلت لكم الدروس مترابطة مع بعضها

للقيام بهذه العملية ستفعل ما يلي
أولا انشاء الرسالة بإعداداتك التي تريدها
ثم قم بربطها مع متغير
فمثلا
local $msg = MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, ‘تجربة’, ‘مرحبا عزيزي هذه تجربة’, 0, ”)
إذا فعلنا هذا قيمة المتغير ستكن هي النتيجة التي عادت لنا من الدالة
ولربطها بأي مهمة باستخدام حقل التبديل
فنفعل كالتالي
switch $msg
case الناتج
ثم الأمر الذي نريده أن ينفذ
case الناتج الآخر
الأمر الذي نريده أن ينفذ

endSwitch
فبهذه الطريقة نكن قد ربطنا الرسالة بمهام
أما لربطها بحقل التحديد
select
فنفعل ما يلي
select
case $msg = الناتج
ثم الأمر الذي نريده أن ينفذ
case $msg = الناتج الآخر
الأمر الذي نريد…
endSelect
أما للربط بأوامر الشرط
فنفعل ما يلي
if $msg = الناتج then
ثم الأمر الذي نريده أن ينفذ
elseIf $msg = الناتج الآخر then
الأمر الذي نريد

EndIf
وهذه أهم الطرق التي تمكننا من الربط بين الرسالة والمهام

الأمثلة

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

المثال الأول

في هذا المثال
سننشئ رسالة فيها معلومة وزر OK

#include <MsgBoxConstants.au3>
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجربة", "مرحبا عزيزي هذه تجربة", 0, "")

المثال الثاني

في هذا المثال سننشء رسالة محاورة فيها زرين
yes و no
وبأيقونة السؤال
ثم نربطها مع مثال:

#include <MsgBoxConstants.au3>
local $MSG = MSGBox($MB_YESNO+$MB_ICONQUESTION+$MB_SYSTEMMODAL, "إظهار الرسالة", "مرحبا عزيزي, هل تحب إظهار الرسالة", 0, "")
switch $msg
case 6
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "نتيجة", "لقد إخترت ظهور الرسالة", 0, "")
case 7
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "نتيجة", "لقد إخترت عدم ظهور الرسالة", 0, "")
endSwitch

المثال الثالث

هو نفس المثال السابق
لاكن مع استعمال حقل التحديد

#include <MsgBoxConstants.au3>
local $MSGBox = MSGBox($MB_YESNO+$MB_ICONQUESTION+$MB_SYSTEMMODAL, "إظهار الرسالة", "مرحبا عزيزي, هل تحب إظهار الرسالة", 0, "")
select
case $MSGBox = 6
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "نتيجة", "لقد إخترت ظهور الرسالة", 0, "")
case $MSGBox = 7
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "نتيجة", "لقد إخترت عدم ظهور الرسالة", 0, "")
endSelect

المثال الرابع

هو نفس المثالين السابقين
لاكن مع استعمال حقل الشرط

#include <MsgBoxConstants.au3>
local $MSGBox = MSGBox($MB_YESNO+$MB_ICONQUESTION+$MB_SYSTEMMODAL, "إظهار الرسالة", "مرحبا عزيزي, هل تحب إظهار الرسالة", 0, "")
if $MSGBox = 6 then
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "نتيجة", "لقد إخترت ظهور الرسالة", 0, "")
elseIf $MSGBox = 7 then
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "نتيجة", "لقد إخترت عدم ظهور الرسالة", 0, "")
endIf

خاتمة

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

ناصر بعزيز

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *