وصول الدرس الحادي عشر من دورة تعلم لغة autoit

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

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

مقدمة

أولا علينا أن نفهم ما المقصود بدوال التحكم في تشغيل الملفات الصوتية
هي مجموعة من الدوال الموجودة في لغة autoit بشكل تلقائي وهي تسمح لنا بتشغيل ملفاتنا الصوتية المختلفة وتسمح لنا بإدارة التشغيل كالإيقاف المؤقت وكذالك الاستأناف والتقديم أو الترجيع وكذالك الإيقاف ومعرفة الوقت الكلي ومعرفة الموضع الحالي وغير ذالك
وهي تعتمد بشكل كلي على مكتبة النظام الخاصة بتشغيل الصوتيات
أي لو فقدت هذه المكتبة فجميع الدوال لا تعمل, لاكن جميع أنظمة التشغيل الأصلية تحتوي على هذه المكتبة, أحيانا لا تكن موجودة في الأنظمة المخففة كمثلا windows talking القديمة.
متطلبات العمل
نحن في هذا الدرس نحتاج إلى ملف استدعاء يسمى Sound.au3
وكما نعلم أن لإستدعاء ملف فنستخدم الأمر #include
يعني يصبح كالتالي
#include
وكذالك اليوم سوف نستعين بالكثير من الدوال لذا علينا أولا أن نتعرف على الدوال المستخدمة.

ما هي الدوال المستخدمة في هذا الدرس

كما قلت في البداية أني سوف أتطرق إلى الكثير من الدوال لذا علينا إخواني أن نركز قليلا في الدوال لكي لا يختلط علينا الأمر.

_SoundOpen

التعريف بالدالة

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

شكل الدالة

الدالة تحتوي على إعداد واحد وهو مسار الملف حيث هي على الشكل التالي
_soundOpen(“مسار الملف”)
ومسار الملف هو المسار الكامل لأي ملف صوتي مدعوم حيث الملفات المدعومة هي
ogg / MP3 / MP2 / Wav

نتيجة الدالة

النتيجة هي رمز الفتح الذي سنستخدمه في الدوال الأخرى إذا تم الفتح بنجاح
رمز @error يكن 0 إذا تم فتح الملف
أو يكن 1 إذا كان هناك خطء في إستدعاء المكتبة أو 2 إذا كان الملف غير موجود

ملاحظات

يجب إستخدام هذه الدالة في متغير لكي يمكن استخدام المتغير في الدوال التي ترتبط بنتيجة هذه الدالة
كمثلا
global$SoundOpen = _SoundOpen(“c:\test.mp3”)

مثال على الدالة


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من الفتح
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;غلق الملف الذي تم فتحه
_SoundClose($aSound)
;الخروج من البرنامج
exit

_soundPlay

التعريف بالدالة

تستخدم هذه الدالة لتشغيل ملف صوتي وهي ترتبط بشكل غير مباشر مع الدالة السابقة _soundOpen
حيث يمكن استخدامها بدون استخدام الدالة السابقة لاكن يستحسن استخدامها لكي يكن عملنا مرتبط ومتكامل

شكل الدالة

الدالة بسيطة جدا جدا حيث هي تعتمد على إعدادان فقط لا ثالث لهما
والدالة على الشكل التالي
_SoundPlay(“مسار الملف / رمز دالة الفتح”, “إنتظار اكتمال المهمة”)
حيث الإعداد الأول إما أن يكن مسار الملف في حال أردت إستخدام الدالة بدون الإستعانة بالدالة الأولة
أو أن يكن الرمز الخاص بالدالة الأولة وهو قيمة المتغير الذي قمنا باستدعاء الدالة به
أما الإعداد الثاني وهو خيحتمل خياران
1 إذا أردت أن يتوقف تنفيذ السكربت إلى أن تنتهي العملية أي يكتمل تشغيل الملف
أو إما أن يكن 0 في حال أردت أن يواصل تنفيذ الأوامر الأخرى التي تكن بعده
وهو افتراضيا على 0
أي فحال لم تريد أن يتوقف تنفيذ الأوامر فتكتفي بالإعداد الأول

نتيجة الدالة

الدالة تعيد لك الرقم 1 في حال تم استخدام الدالة بالشكل المطلوب وتم تأدية العمل بنجاح
أو 0 إذا كان هناك خطء
ورمز الخطأ @error يكن كالتالي
0 في حال تم العمل بنجاح
1 في حال كان هناك خطء في تشغيل الملف
2 خطء في الإعداد الثاني
3 خطء في دالة _soundOpen

ملاحظات

هذه الدالة لها دالة أخرى مشابهة لها تماما وهي لا تحتاج أي ملف include واسم الدالة
soundPlay
بدون علامة السطر
وإعداداتها نفس إعدادات الدالة إلا أنها لا تقبل soundOpen ويحدث فيها الكثير من الأخطاء

مثال على الدالة


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من فتح الملف
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;تشغيل الملف مع الإنتظار
_SoundPlay($aSound, 1)
إعادة تشغيل الملف بدون الإنتظار
_SoundPlay($aSound)
;إغلاق الملف المفتوح
_SoundClose($aSound)
;الخروج من البرنامج
exit
/xmp>

_soundPause

تعريف بالدالة

هذه الدالة تستخدم لإيقاف الملف الصوتي إيقاف مؤقت
حيث يمكن إستأنافه

شكل الدالة

شكل الدالة يكن كالتالي
_soundPause(“رمز الدالة الأولى”)

هذه الدوال التي ستأتي كلها مرتبطة بشكل مباشر مع دالة _SoundOpen
لهذا علينا بأن لا نستغني عن هذه الدالة

نتيجة الدالة

الدالة تعود لنا بالرقم 1 في حال نجحت العملية
أو بالرقم 0 عند حدوث خطء
رمز الخطأ @error يكن
0 في حال تمت العملية بنجاح
1 في حال هناك خطء في الإيقاف المؤقت
أو 2 في حال هناك خطء في دالة _SoundOpen

ملاحظات

يمكن عكس الدالة أي إستأناف التشغيل باستبدال
_SoundPause
بدالة
_Soundresume
والتي لها نفس إعداداتها ونفس النتائج
لذا لا داعي أن نذكرها في قسم مستقل

مثال على الدالة


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من فتح الملف
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;تشغيل الملف بدون الإنتظار
_SoundPlay($aSound)
;الإنتظار لمدة ثانية
Sleep(1000)
;إيقاف الملف مؤقتا
_SoundPause($aSound)
;الإنتظار لمدة ثانية
Sleep(1000)
;إستأناف الملف
_SoundResume($aSound)
;حلَقة للتأكد من تشغيل الملف كاملا
While 1
	Sleep(100)
	If _SoundPos($aSound, 2) >= _SoundLength($aSound, 2) Then ExitLoop
WEnd
;غلق الملف الذي تم فتحه
_SoundClose($aSound)
;الخروج من البرنامج
exit

_SoundStop

تعريف بالدالة

إن هذه الدالة تستخدم للإيقاف النهائي لملف صوتي جاري تشغيله

شكل الدالة

إن هذه الدالة شكلها هو نفسه شكل الدالة السابقة
_soundStop(“نتيجة الدالة الأولى”)

نتيجة الدالة

الدالة تعود لنا بالرقم 1 في حال نجحت العملية
أو بالرقم 0 عند حدوث خطء
رمز الخطأ @error يكن
0 في حال تمت العملية بنجاح
1 في حال هناك خطء في الإيقاف
أو 2 في حال هناك خطء في دالة _SoundOpen

مثال على الدالة


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من فتح الملف
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;تشغيل الملف مع الإنتظار
_SoundPlay($aSound, 1)
;غلق الملف الذي تم فتحه
_SoundClose($aSound)
;الخروج من البرنامج
exit

_SoundLength

التعريف بالدالة

تستخدم هذه الدالة للتعرف على الوقت الكلي لملف صوتي

شكل الدالة

الدالة كذالك بسيطة جدا
حيث شكلها كما يلي
_SoundLength(“رمز دالة _SoundOpen”, النوع =1)
رمز دالة _SoundOpen لقد تعودنا عليه خلاص
أما النوع
فيمكن أن يكن 1 وهو أن تكن النتيجة كشكل الساعة المعروف أي ساعات:دقائق:ثوان
أو أن يكن بجزء الثانية وهو أن يعطيك الوقت عبارة عن عدد أجزاء الثواني وكل 1000 يمثل ثانية

نتيجة الدالة

الدالة تعود لنا بوقت الملف حسب النوع المختار في حال نجحت العملية
أو بالرقم 0 عند حدوث خطء
رمز الخطأ @error يكن
0 في حال تمت العملية بنجاح
1 في حال هناك خطء في النوع
أو 3 في حال هناك خطء في دالة _SoundOpen

ملاحظة

يستحسن استدعاء الدالة في متغير حتى يختصر عليك الوقت إن أردت أن تستخدم القيمة لاحقا

مثال على الدالة


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من فتح الملف
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;تشغيل الملف بدون الإنتظار
_SoundPlay($aSound, 0)
;معرفة الوقت الكلي
MsgBox($MB_SYSTEMMODAL, "الوقت الكلي للملف", "الوقت الكلي للملف بصيغة :" & @CRLF & "hh:mm:ss - " & _SoundLength($aSound, 1) & @CRLF & "بالجزء من الثانية - " & _SoundLength($aSound, 2))
;غلق الملف الذي تم فتحه
_SoundClose($aSound)
;الخروج من البرنامج
exit


_SoundPos

التعريف بالدالة

تستخدم هذه الدالة للتعرف على الموضع الحالي لملف صوتي

شكل الدالة

الدالة كذالك بسيطة جدا
حيث شكلها كما يلي
_SoundPos(“رمز دالة _SoundOpen”, النوع =1)
رمز دالة _SoundOpen لقد تعودنا عليه خلاص
أما النوع
فيمكن أن يكن 1 وهو أن تكن النتيجة كشكل الساعة المعروف أي ساعات:دقائق:ثوان
أو أن يكن بجزء الثانية وهو أن يعطيك الوقت عبارة عن عدد أجزاء الثواني وكل 1000 يمثل ثانية

نتيجة الدالة

الدالة تعود لنا موضع الملف حسب النوع المختار في حال نجحت العملية
أو بالرقم 0 عند حدوث خطء
رمز الخطأ @error يكن
0 في حال تمت العملية بنجاح
1 في حال هناك خطء في النوع
أو 3 في حال هناك خطء في دالة _SoundOpen

ملاحظة

يستحسن استدعاء الدالة في متغير حتى يختصر عليك الوقت إن أردت أن تستخدم القيمة لاحقا

مثال على الدالة


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من فتح الملف
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;تشغيل الملف بدون الإنتظار
_SoundPlay($aSound, 0)

;الإنتظار لمدة ثانيتين
sleep(2000)
MsgBox($MB_SYSTEMMODAL, "الموضع الحالي للملف", "الموضع الحالي للملف بصيغة :" & @CRLF & "hh:mm:ss - " & _SoundPos($aSound, 1) & @CRLF & "بالجزء من الثانية - " & _SoundPos($aSound, 2))
;غلق الملف الذي تم فتحه
_SoundClose($aSound)
;الخروج من البرنامج
exit

_SoundSeek

تعريف بالدالة

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

شكل الدالة

هذه الدالة فيها بعض الإعدادات حيث سنتعرف عليها
_SoundSeek(“رمز دالة _SoundOpen”, ساعات, دقائق, ثوان)
حيث الرمز إنتهينا منها هي معروفة لدينا
أما الساعات فهي نستخدمها لو أردنا التنقل لساعة معينة في الملف
دقائق للانتقال لدقيقة معينة في الملف
ثوان للإنتقال إلى ثانية معينة في الملف

نتيجة الدالة

النتيجة تكن كما يلي
1 في حال نجاح العملية
0 في حال فشل العملية
والرمز @error يكن كالتالي
0 نجاح العملية
1 فشل العملية
3 خطء في _SoundOpen

ملاحظات

الدقائق لا يجب أن تتجاوز 59 والثوان كذالك
فلو تجاوزت الثوان 59 فعند بلوغها ال60 تصبح 1 دقيقة يعني تنقل إلى خانة الدقائق والباقي منها على الثوان وأكمل حسب ذالك
ونفس الشيء للدقائق لو وصلت 59 دقيقة فال60 تصبح 1 ساعة وما تبقى منها على الدقائق والثوان وأكمل على ذالك

مثال على الدالة


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من فتح الملف
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;تشغيل الملف بدون الإنتظار
_SoundPlay($aSound, 0)

;الإنتظار لمدة ثانيتين
sleep(2000)
;التقديم إلى الثانية الرابعة في الملف
_SoundSeek($aSound, 0, 0, 4)
;معرفة الموضع الحالي
MsgBox($MB_SYSTEMMODAL, "الموضع الحالي للملف", "الموضع الحالي للملف بصيغة :" & @CRLF & "hh:mm:ss - " & _SoundPos($aSound, 1) & @CRLF & "بالجزء من الثانية - " & _SoundPos($aSound, 2))
;تكميل تشغيل الملف
_SoundPlay($aSound, 0)
;حلقة للتأكد من التشغيل الكلي للملف
While 1
	Sleep(100)
	If _SoundPos($aSound, 2) >= _SoundLength($aSound, 2) Then ExitLoop
WEnd

;غلق الملف الذي تم فتحه
_SoundClose($aSound)
;الخروج من البرنامج
exit


_SoundStatus

تستخدم هذه الدالة لمعرفة حالة الملف الصوتي

شكل الدالة

الدالة بسيطة جدا حيث لها إعداد واحد وهو رمز دالة _SoundOpen
شكلها كما يلي
_SoundStatus(“رمز _SoundOpen”)

نتيجة الدالة

حالة الملف عند نجاح العملية
0 في حال فشلت العملية
@error يكن كالتالي
0 عند نجاح العملية
3 عند حدوث خطء في _SOundOpen

قائمة الحالات

الدالة تعود بحالات الملف التالية
“playing”: عندما يكن الملف قيد التشغيل
“paused”: عندما يكن الملف في حالة إيقاف مؤقت
“stopped”: عندما يكن الملف في حالة إيقاف
“not ready”: عندما يكن الملف غير مفتوح أصلا

مثال عن الدالة


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من فتح الملف
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;تشغيل الملف بدون الإنتظار
_SoundPlay($aSound, 0)
;معرفة حالة الملف
MsgBox($MB_SYSTEMMODAL, "حالة الملف عند التشغيل", _SoundStatus($aSound))
;الإنتظار لمدة ثانيتين
sleep(2000)
;إيقاف الملف مؤقتا
_SoundPause($aSound)
;معرفة حالة الملف
MsgBox($MB_SYSTEMMODAL, "حالة الملف عند الإيقاف المؤقت", _SoundStatus($aSound))
;إيقاف الملف
_SoundStop($aSound)
;معرفة حالة الملف
MsgBox($MB_SYSTEMMODAL, "حالة الملف عند الإيقاف", _SoundStatus($aSound))

;غلق الملف الذي تم فتحه
_SoundClose($aSound)
;الخروج من البرنامج
exit


_SoundClose

التعريف بالدالة

تستخدم هذه الدالة لغلق ملف صوتي
أو لكي تنهي عمل دالة _SOundOpen
ويجب استخدامها قبل الخروج من البرنامج الخاص بك في حال استخدمت دالة _SoundOpen

شكل الدالة

_SoundClose (“رمز دالة _SoundOpen”)

مثال


;إستدعاء الملفات اللازمة
#include <MsgBoxConstants.au3>
#include <Sound.au3>
;فتح الملف
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
;أمر شرطي للتأكد من فتح الملف
If @error = 2 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "لم يتم العثور على الملف")
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "نجاح", "تم فتح الملف بنجاح")
EndIf
;تشغيل الملف مع الإنتظار
_SoundPlay($aSound, 1)
;غلق الملف الذي تم فتحه
_SoundClose($aSound)
;الخروج من البرنامج
exit


ملاحظة مهمة بخصوص الدورة

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

خاتمة

أعزائي هذا ما استطعت أن أقدمه في هذا الدرس
فأرجو أن تعذروني على أي تقصير.
كما أرجو أن لا تؤاخذوني إذا كان الدرس طويل فهو مرتبط ولا يمكنني أن أقسمه لجزئين
كما أرجوكم لا تنسوني من دعائكم الصالح
وفضلا قمو بنشر الدورة حتى تعم الفائدة
أكرر لأقول
أنا بريء أمام الله عز وجل من كل من يستغل هذه الدروس في إيذاء الناس أو فعل ما يغضبه سبحانه وتعالى
إنما أنا أقدمها من باب المعرفة
ولكي نكن مستقلين جميعا في تعاملنا مع الحاسوب
كما لتطبيق أفكارنا على أرض الواقع
تقبلو تحياتي
وقبل أن أختم أحب أن أقدم لكم
رابط
الدرس الحادي عشر
الذي سيكن متوفر قريبا على الرابط السابق
أكرر وأرجوكم
لا تنسوني من دعائكم
والله أنا بالحاجة إليه
كما أرجو زيارة موقعنا وطرح أي إستفسار في منتدى لغة autoit
إليكم رابط الموقع
https://mx-blind.com/
ملاحظات :
لأي سؤال في الدورة إذا كان متعلق بأي درس من الدروس فيرجى طرح السؤال في تعليق في المنشور المتعلق بالدرس في المنتديات
وإلا بإمكانكم طرح السؤال في موضوع مستقل داخل منتدى اللغة

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

إليكم الدرس العاشر من الدورة الخاصة بلغة autoit

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

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

مقدمة

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


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

الدوال التي سنعمل على شرحها في الدرس

في هذا الدرس سوف نعمل على ثلاثة دوال فقط, على أن نتعرف على الدوال الأخرى تدريجيا مع الشروحات التالية.
والدوال التي سنتعرف عليها اليوم هي كالتالي

  • WinActive
    لمعرفة إذا كانت النافذة هي التي على الواجهة أو لا
  • WinActivate
    لجعل النافذة في الواجهة
  • WinExists
    لمعرفة إذا كانت النافذة موجودة أو لا
  • WinClose
    لغلق نافذة
  • WinSetState
    لتغيير حالة النافذة

وهناك العديد من الدوال الأخرى الموجودة في هذه اللغة
إذا أردتم أن نذكرها في الدرس التالي
فيرجى إخباري بذالك, وإلا فيمكنكم البحث عنها في ملف المساعدة الخاص باللغة.
والآن أيها الأحباب دعونا ندخل في الشرح

التفصيل

دعونا نتطرق إلى الدوال كما تعودنا أيها الأحباب

دالة WinActivate

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

شكل الدالة

WinActivate(“عنوان”, “نص النافذة”)
حيث العنوان هو عنوان النافذة التي تريد تفعيلها
والنص هو نص إضافي يمكن التخلي عنه, حيث هو يستخدم لو كنت تملك أكثر من نافذة بنفس الإسم
فمثلا, لتفعيل برنامج المفكرة نكتب

WinActivate(“Untitled – Notepad”)
كما يمكننا هنا إستخدام الكلاس أو ال رمز (handle)
حيث لو كنا نملك الرمز handle الفريد لكل نافذة هذا يغنينى عن إستخدام الإسم
والرمز handle يشبه ال pid الذي كنا قد تعرفنا عليه في الدرسين السابقين.
لاكن هذا مخصص للنوافذ وعناصر النوافذ, وهذا سوف نتعرف عليه بتعمق عند وصولنا إلى إنشاء النوافذ وعناصرها.
حيث أن الكلاس هو كذالك رمز يمكننا أن نتحكم في النافذة من خلاله
والكلاس ثابت حيث عند إنشاء النافذة يختار لها المصمم كلاس تعمل عليه
فمثلا المفكرة نقم بتفعيل نافذته باستخدام الكلاس كما يلي
WinActivate(“[CLASS:Notepad]”)
أتمنا أن يكن الأمر واضح
والآن

نتائج الدالة

عند النجاح تكن النتيجة هي الرمز الفريد handle الخاص بالنافذة
وعند الخطء لأي سبب من الأسباب, كعدم وجود النافذة يكن الرقم 0

ملاحظة :

في حال كان عدة نوافذ بنفس الإسم والخصائص فسوف تتفعل النافذة الأحدث منهم

طبعا سوف نحاول عمل مثال شامل للعمل في نهاية الدرس
والآن سوف ننتقل بكم إلى الدالة التالية

دالة WinActive

تستخدم هذه الدالة لمعرفة إذا كانت النافذة هي التي في الواجهة أو لا

شكل الدالة

شكل الدالة نفسه شكل الدالة السابقة يعني كي نتجنب التكرار سوف أضع المثال مباشرة
WinActive(“Untitled – Notepad”)
أو
WinActive(“[CLASS:Notepad]”)

ينطبق عليها نفس ما ينطبق على الدالة السابقة
إنما العمل يختلف
حيث هذه الدالة تمكننا من معرفة إذا كانت النافذة هي التي في الواجهة أو لا
ويمكن طبعا أن نستخدمها في أوامر شرطية كمثلا
if WinActive(“[CLASS:Notepad]”) then
msgBox(0, “نتيجة”, النافذة موجودة”)
else
msgBox(0, “نتيجة”, النافذة غير موجودة”)
endIf
هذا هو المثال البسيط على طريقة إستخدام هذه الدالة
والآن ننتقل إلى نتائج هذه الدالة

نتائج الدالة

نتيجتها نفس نتيجة الدالة السابقة
حيث عندما تكن النافذة في الواجهة النتيجة تكن رمز handle للنافذة, وإلا فالنتيجة تكن رقم 0

هذا هو عمل هذه الدالة البسيطة.

دالة WinClose

حيث تستخدم هذه الدالة لغلق نافذة مفتوحة
وهي سهلة جدا

شكل الدالة

شكل الدالة نفس الشكلين السابقين يعني يمكنك قراءة شكل الدالة الأولى وتطبيقه على كل الدوال التي سنذكرها اليوم إن شاء الله وإذا كان هناك أي إختلاف فأكيد سوف نذكره.
هذا مثال
Winclose(“Untitled – Notepad”)
أو
Winclose(“[CLASS:Notepad]”)

نتائج الدالة

عند النجاح قيمة النتيجة تكن الرقم 1 وعند الخطء تكن القيمة 0
وها قد إنتهينا من الدالة هذه
والآن ننتقل إلى دالة أخرى

دالة WinExists

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

شكل الدالة

إن شكل هذه الدالة هو نفسه شكل الدوال السابقة أي المثال كالتالي
Winexists(“Untitled – Notepad”)
أو
Winexists(“[CLASS:Notepad]”)
طبعا هذه الدالة تستخدم عادي في الأوامر الشرطية فمثلا
if Winexists(“[CLASS:Notepad]”) then
msgBox(0, “نتيجة”, النافذة موجودة”)
else
msgBox(0, “نتيجة”, النافذة غير موجودة”)
endIf
هذا هو المثال البسيط على طريقة إستخدام هذه الدالة

نتائج الدالة

في حال كانت النافذة موجودة فالنتيجة تكن قيمتها الرقم 1
وإلا تكن القيمة 0

ملاحظة

في حال كانت النافذة مخفية هي تتعامل معها, يعني تتعرف عليها عادي وكأنها موجودة

دالة WinSetState

تستخدم هذه الدالة لتغيير حالة النافذة
حيث يمكننا التحكم فيها كما نريد
من إخفاء وإظهار وتصغير ….. إلخ
وهذه الدالة بسيطة جدا
فقط تحتاج نوع من التركيز

ملاحظة :
هناك دالة تستخدم لأخذ حالة النافذة, هذه سوف نتعرف عليها لاحقة لأنها تحتوي على بعض الإستعمالات التي لم نتطرق إليها بعد, لذا قررت أن أأخرها
على العموم لمن أراد أن يجرب التعامل معها فإسم الدالة
WinGetState

شكل الدالة

هذه الدالة تختلف على الدوال السابقة إختلاف بسيط, حيث إنها تحتوي على إعداد إضافي, وهو حالة النافذة التي نريد تحويلها إليها.
وشكل الدالة يكن كالتالي
WinSetState(“العنوان”, “النص”, “”الحالة”))
طبعا العنوان والنص هما تكلمنا عليهما في الأعلى فلا داعي للتكرار, أما الحالة فسوف نتطرق إليها الآن إن شاء الله تعالى
وسوف أضع الحالات المتوفرة في جدول لكي يسهل التعامل إن شاء الله تعالى.

الحالة رمزها ملاحظة إن وجدت
إخفاء النافذة @SW_HIDE
إظهار النافذة @SW_show
تصغير النافذة @SW_MINIMIZE
تكبير النافذة @SW_MAXIMIZE
ترجيع النافذة للحالة الإفتراضية @SW_RESTORE
تعطيل النافذة @SW_DISABLE
تفعيل النافذة @SW_ENABLE

وهنا مثال للتوضيح
WinSetState(“Untitled – Notepad”, “”, @sw_show)
WinSetState(“[class:notepad]”, “”, @sw_hide)
والآن ننتقل إلى نتائج هذه الدالة

نتائج الدالة

هذه الدالة تكن قيمة نتيجتها بعد المهمة كالتالي
في حال نجحت المهمة فالنتيجة تكن قيمتها الرقم 1, وإلا فالنتيجة تكن الرقم 0

ملاحظات

إخواني إن هذه المجموعة من الدوال ليست الوحيدة المتوفرة في اللغة ولاكن هي الأهم
فهناك دوال أخرى رائعة, وسوف أذكر لكم بعضها هنا بدون تفصيل

دالة WinSetTitle

تستخدم هذه الدالة لتغيير إسم النافذة
وشكلها هو كالتالي
WinSetTitle (“العنوان”, “النص”, “الإسم الجديد”)
قيمة نتيجتها تكن الرقم 1 في النجاح و الرقم 0 في حال الخطء

دالة WinWait

حيث تستخدم هذه الدالة لإيقاف عمل الأداة أو البرنامج الذي قمنا بتصميمه إلى غاية أن تتواجد نافذة ما
هي مفيدة في حال كنا نتعامل مع النوافذ
وشكلها يكن كالتالي
WinWait(“العنوان”, “النص”, أقصى “وقت”)
حيث أقصى وقت يستخدم لتحديد وقت في حال لم تتواجد النافذة خلال الوقت المحدد يقم بشكل تلقائي بمتابعة تطبيق الأوامر التالية
والوقت يكتب بالألف جزء من الثانية
حيث لكتابة ثانية واحدة يجب كتابة 1000 ولكتابة 10 ثوان فيجب كتابة 10000 … إلخ

دالة WinWaitClose

حيث تستخدم هذه الدالة لإيقاف عمل الأداة أو البرنامج الذي قمنا بتصميمه إلى أن يتم إغلاق النافذة
شكلها كالتالي
WinWaitClose (“العنوان”, “النص”, أقصى “وقت”)
وينطبق عليها ما ذكرناه في الدالة السابقة

دالة WinWaitNotActive

هذه الدالة تستخدم لإيقاف عمل البرنامج أو الأداة التي قمنا بتصميمها إلى غاية إختفاء النافذة من الواجهة
شكلها نفس شكل الدالة السابقة وينطبق عليها ما ينطبق على الدالة السابقة حيث هي كالتالي
WinWaitNotActive”العنوان”, “النص”, أقصى “وقت”

دالة WinKill)

حيث هذه الدالة هي شبيهة بدالة Winclose
إنما هذه تجبر النافذة على الإغلاق حتى لو لم ترضى, على عكس الدالة السابقة, وهذه عملتلي مشكلة الآن والله.
حيث عندما كنت أكتب الدرس العاشر قمت بتجربتها ولغبائي قمت بتجربتها على المفكرة, فأجبرته على الإغلاق وضاع عملي بالكامل هههههههه.

المهم شكلها يكن كالتالي
WinKill(“العنوان”, “النص”)
وينطبق عليها كل ما رأيناه في الدالة توأمها هههه

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


; أولا نقم بإستدعاء الملف الذي يحتوي على المتغيرات الخاصة برسائل المحاورة
#include <MsgBoxConstants.au3>

; نبدأ الآن بالعمل
; ملاحظة :
; إن هذه التعليقات لا تؤثر في عمل الكود, بل هي عادية
; سوف نعمل على المفكرة, لهذا أرجو حفظ كل أعمالكم عليها قبل تجربة المثال
; أولا دعونا نتعرف على إذا كانت المفكرة تعمل وإلا فسوف نقم بفتحها
if ProcessExists("notepad.exe") then
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجريب", "المفكرة تعمل بالفعل وسوف نقم بالتجارب على النسخة التي تعمل, لهذا يرجى حفظ كل أعمالكم عليها.")
else
run("notepad.exe")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجريب", "تم تشغيل برنامج المفكرة.")
endIf
; دعونا ننتظر إلى أن تفتح نافذة المفكرة
WinWait("[class:notepad]", "", 3000)
; والآن دعونا نحول النافذة إلى الواجهة, وقبل هذا يجب أن نعرف إذا كانت النافذة في الواجهة أو لا
if WinActive("[class:notepad]", "") then
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجريب", "إن النافذة في الواجهة بالفعل.")
else
WinActivate("[class:notepad]", "")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجريب", "تم وضع النافذة في الواجهة")
endIf
; والآن نعطيه أمر الإنتظار لبضع ثوان حتى يمكننا أن نلاحظ
sleep(3000)
; الآن نقم بإخفاء النافذة
WinSetState("[class:notepad]", "", @sw_hide)
; ننتظر لمدة معينة ثم نقم بإظهار النافذة
sleep(3000)
WinSetState("[class:notepad]", "", @sw_show)
; والآن نقم بوضع النافذة في الواجهة مرة أخرى
WinActivate("[class:notepad]", "")
; ثم نقم بغلق النافذة
Winclose("[class:notepad]", "")
; الآن نتأكد إذا كانت النافذة موجودة أو لا
if WinExists("[class:notepad]", "") then
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجريب", "النافذة موجودة")
else
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجريب", "النافذة غير موجودة")
endIf

أتمنا أن يكن المثال مبسط
ولأي سؤال أنا في الخدمة

خاتمة

أعزائي هذا ما استطعت أن أقدمه في هذا الدرس
فأرجو أن تعذروني على أي تقصير.
كما أرجو أن لا تؤاخذوني إذا كان الدرس طويل فهو مرتبط ولا يمكنني أن أقسمه لجزئين
كما أرجوكم لا تنسوني من دعائكم الصالح
وفضلا قمو بنشر الدورة حتى تعم الفائدة
أكرر لأقول
أنا بريء أمام الله عز وجل من كل من يستغل هذه الدروس في إيذاء الناس أو فعل ما يغضبه سبحانه وتعالى
إنما أنا أقدمها من باب المعرفة
ولكي نكن مستقلين جميعا في تعاملنا مع الحاسوب
كما لتطبيق أفكارنا على أرض الواقع
تقبلو تحياتي
وقبل أن أختم أحب أن أقدم لكم
رابط
الدرس الحادي عشر
الذي سيكن متوفر قريبا على الرابط السابق
أكرر وأرجوكم
لا تنسوني من دعائكم
والله أنا بالحاجة إليه
كما أرجو زيارة موقعنا وطرح أي إستفسار في منتدى لغة autoit
إليكم رابط الموقع
http://mx-blind.com/
ملاحظة :
لأي سؤال في الدورة إذا كان متعلق بأي درس من الدروس فيرجى طرح السؤال في تعليق في المنشور المتعلق بالدرس في المنتديات
وإلا بإمكانكم طرح السؤال في موضوع مستقل داخل منتدى اللغة

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

عودة إلى دورة تعليم لغة autoit وإليكم الدرس التاسع

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

مقدمة

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

والآن دعونا نتعرف على دوال التحكم في العمليات,

دوال التحكم في العمليات

عزيزي سوف نتعرف على دالتين اليوم كمدخل
ألا وهما

  • ProcessClose
    لإيقاف عملية ما
  • ProcessExists
    للتحقق إذا كانت العملية موجودة أو لا

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

دالة ProcessClose

تستخدم هذه الدالة لإنهاء عملية ما
وإستخدامها بسيط جدا وسوف نشرحها بالتفصيل إن شاء الله تعالى

شكل الدالة

تستخدم الدالة على الشكل التالي
ProcessClose(“إسم العملية أو رمز pid”)
يعني تحتوي على إعداد واحد وهو رمز pid أو إسم العملية متبوع بالإمتداد يعني كمثال

ProcessClose(“Notepad.exe”)
أو
ProcessClose(“1597”)
طبعا هذا كمثال, لا تجرب المثال الثاني لأنه يمكن أن يصادف عملية نظامية في جهازك.
أما المثال الأول فبإمكانك التجربة
بما أن شكل الدالة سهل جدا فلا داعي للتفصيل فيه كما إعتدنا.
فل نمر الآن مباشرة إلى النتائج التي تعطينا إياها هذه الدالة

نتائج الدالة

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

  • رقم 1 في حال نجاح العملية
  • رقم صفر في حال لم تتمكن الدالة من إنهاء العملية لأي سبب من الأسباب

طبعا أيها الغوالي يمكنكم معرفة رمز الخطء من خلال @error الذي تعلمناه في الدرس السابق
وكي لا أطيل عليكم كثيرا لا داعي لذكر جميع رموز الخطء الناتجة عن هذه العملية للتفصيل أكثر يمكنكم القراءة عنها إما في موقع autoit الرسمي كما يمكنكم طلبها إن شئتم وسوف أقدمها لكم.

والآن سوف نمر للدالة الثانية ومن ثم أعرفكم على دالة أخرى حلوة يمكننا الإستفادة منها كي نقم بعمل مثال بسيط في نهاية الشرح

دالة ProcessExists

حيث تستخدم هذه الدالة للتحقق إذا ما كانت العملية نشطة أو لا
وبدون إطالة نمر لشكل الدالة

شكل الدالة

شكل الدالة يكن نفس شكل الدالة السابقة حيث
ProcessExists(“إسم العملية أو رمز pid”)
ورمز pid هو الرمز الفريد للعملية كما تحدثنا عنه أعلاه
طبعا إسم العملية مرفق بالإمتداد

ملاحظة :

إن هذه الدالة يمكننا إستخدامها في أمر شرطي كمثلا نقل
if ProcessExists(“notepad.exe”) then
msgBox(0, “تجربة”, “العملية نشطة”)
else
msgBox(0, “تجربة”, “العملية غير موجودة”)
endIf
وسوف نوضح ذالك في المثال

نتيجة الدالة

إن هذه الدالة تعطينة قيمتين بعد الإنتهاء وهما كالتالي

  • رمز pid للعملية في حال كانت العملية موجودة
  • رقم 0 في حال لم تكن العملية موجودة

الدالة الإضافية التي أردت أن أشرحها كذالك اليوم هي دالة sleep
أي دالة الإنتظار بين القيام بعملية وأخرى

فهي بنا للتعرف على هذه الدالة

دالة sleep

إن هذه الدالة بسيطة جدا
حيث إستخدامها يعطي مهلى نحن نحددها بين عملية وأخرى
كمثلا نريد تشغيل عملية ثم بعد 15 ثانية نقم بإغلاقها أو أخذ أي معلومة عنها
نمر بسرعة إلى شكل الدالة

شكل الدالة

شكل الدالة يكن كالتالي
sleep(“رقم أجزاء الثانية”)
حيث تستجيب هذه الدالة للأجزاء بالألف من الثانية
يعني لكي نعطي مهلة 1 ثانية علينا كتابة 1000
ولنعطي مهلة 10 ثوان فعلينا كتابة 10000
إلى آخره
هذا فقط ما تحتويه هذه الدالة البسيطة.

بعد أن أنهينا من شرح كل الدوال المخصصة لهذا اليوم سوف نعطي مثال شامل إن شاء الله

مثال

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


#include <MsgBoxConstants.au3>
;نقم أولا بفحص إذا كانت العملية تعمل أو لا
if ProcessExists("notepad.exe") then
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجريب", "العملية موجودة بالفعل")
exit
; حيث يعطينا رسالة إذا كانت موجودة تفيد بأنها موجودة ويطلع من منفذ الأوامر
else
; وإلا فيقم بتشغيل البرنامج
local $run = runWait("notepad.exe")
;ثم ينتظر ثانية
sleep(1000)
ثم يعطينا رسالة تفيد بتشغيل العملية
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تجريب", "تم فتح البرنامج")
;بعد ذالك يقم بإنهاء العملية, أي يقم بغلق برنامج المفكرة
processClose("notepad.exe")
;ثم يطلع من منفذ الأوامر
exit
endIf

خاتمة

أعزائي هذا ما استطعت أن أقدمه في هذا الدرس
فأرجو أن تعذروني على أي تقصير.
كما أرجو أن لا تؤاخذوني إذا كان الدرس طويل فهو مرتبط ولا يمكنني أن أقسمه لجزئين
كما أرجوكم لا تنسوني من دعائكم الصالح
وفضلا قمو بنشر الدورة حتى تعم الفائدة
أكرر لأقول
أنا بريء أمام الله عز وجل من كل من يستغل هذه الدروس في إيذاء الناس أو فعل ما يغضبه سبحانه وتعالى
إنما أنا أقدمها من باب المعرفة
ولكي نكن مستقلين جميعا في تعاملنا مع الحاسوب
كما لتطبيق أفكارنا على أرض الواقع
تقبلو تحياتي
وقبل أن أختم أحب أن أقدم لكم
رابط
الدرس التاسع
الذي سيكن متوفر قريبا على الرابط السابق
أكرر وأرجوكم
لا تنسوني من دعائكم
والله أنا بالحاجة إليه
كما أرجو زيارة موقعنا وطرح أي إستفسار في منتدى لغة autoit
إليكم رابط الموقع
http://mx-blind.com/
ملاحظة :
لأي سؤال في الدورة إذا كان متعلق بأي درس من الدروس فيرجى طرح السؤال في تعليق في المنشور المتعلق بالدرس في المنتديات
وإلا بإمكانكم طرح السؤال في موضوع مستقل داخل منتدى اللغة

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

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

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

ما المقصود بدوال تشغيل العمليات

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

أمر مهم يجب أن نتعرف عليه قبل البداية

وهو كيف نتعرف على الخطء في هذه اللغة لأننا نحتاج إليه كثيرا في دوروسنا
فدعونا نتعرف عن معنا الأخطاء وكيف نتعرف عليها

تعريف

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

كيف أحصل على رقم الخطء

عزيزي كي تحصل على رمز الخطء في هذه اللغة يكفي استخدام الأمر
@error
طبعا إذا لم يكن هناك خطء فلا يعمل هذا الأمر
وهذا يمكن استخدامه في رسالة كي نعرض رقم الخطء 
مثلا
msgBox(0, "رقم الخطء هو", @error)
كما يمكن استخدامه في أمر شرطي
مثلا
if @error then

msgBox(0, "هناك خطء", "رمز الخطء هو " & @error)
طبعا علامة 
&
التي استخدمناها هي فاصل بين النص والأمر
وسوف نتعرف عليها لاحقا
كما يمكننا إستخدام رمز الخطء في أمر شرطي وذالك كما يلي
مثال
if @error = 1then
msgBox(0, "هناك خطء", "لم نتمكن من العثور على الملف")
elseIf @error = 2 then
")msgBox(0, "هناك خطء", "لم نتمكن من تشغيل الملف")
else
")msgBox(0, "هناك خطء", "خطء آخر")
endIf
كما يمكننا إستخدامه في مواضع عديدة
وسوف يكثر استخدام هذا الأمر في ما سَيلي

والآن دعونا نعد لدرسنا

ما هي الطرق المتاحة لتشغيل العمليات

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

  • Run
  • RunWait
  • ShellExecute
  • ShellExecuteWait

سنتطرق إلى كل ما يخص هذه الدوال
وسوف نتعرف على إستخداماتها وخصائصها
قبل هذا دعونا نرى الفرق بينها

ما الفرق بين هذه الدوال

إنا دالة
run
وَدالة
runWait
متشابهتان
كما أن دالة
ShellExecute
ودالة
ShellExecuteWait
متشابهتان
حيث الدالتين الأوليتين
يعني
run
وكذا runWait
هما دالتين داخليتين في اللغة يستخدمو لتشغيل البرامج
أما دالة
run
فهي تستخدم لتشغيل أي عملية ثم يكمل البرنامج عمله
يعني تنفيذ الأوامر الأخرى
أما دالة
runWait
فهي تشغل العملية ثم تنتظر إلى غاية إنتهائها وبعد ذالك يكمل البرنامج مسيرته في تنفيذ الأوامر الأخرى
أما الدوال
ShellExecute
ودالة
ShellExecuteWait
فهما تستخدمان لتشغيل العمليات
لاكن هما داخليتين في النظام
حيث عملهم هو نفسه عمل
خاصية
run
الموجودة في النظام
أو
start
الموجودة في لغة CMD
وطبعا كما الأولة فإن
ShellExecute
فتستخدم لتشغيل أي عملية
ثم يكمل البرنامج مسيرت تنفيذ الأوامر
أمى
ShellExecuteWait
فتشغل عملية ثم يتوقف البرنامج عن تنفيذ الأوامر الأخرى إلى أن تنتهي العملية
يعني
شبه
start /wait
الخاصة بلغة CMD
طبعا سنتطرق لهما دالتين دالتين لأن كل نوع يحمل نفس الخصائص
وقد عرفنا الفرق بينهما
أما الآن فسنبدء مع

run و runWait

متطلبات الدالتين
لا تحتاجا أي ملف إستدعاء
فالدالتين مدموجتين في اللغة

شكل الدالتين

إن لدالتين شكل واحد
فإذا تحدثنا عن واحدة منهما فإنا نتحدث عن الأخرى
لذا نكتفي بالتحدث على واحدة
وكل شيء ينطبق على الأخرى
وإن كان فرق فسأذكره
شكل الدالة يكن كالتالي
Run(“program”, “workingdir”, show_flag, opt_flag)

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

program المسار الكامل للبرنامج (EXE, BAT, COM, or PIF)
workingdir [optional]مجلد العمل. في حال تركها فارغه (“”) يستخدم مجلد العمل الحالي. هذا ليس المسار الخاص بلبرنامج.
show_flag [optional] علامات الإظهار الخاص بالنافذة:
    @SW_HIDE = نافذة مخفية (أو رمز Default)
    @SW_MINIMIZE = نافذة مصغرة
    @SW_MAXIMIZE = نافذة مكبرة
opt_flag [optional]يتحكم في الخيارات المختلفة المتعلقة بكيفية تفاعل العملية الأصل والتابعة.
    $STDIN_CHILD (0x1) = Provide a handle to the child’s STDIN stream
    $STDOUT_CHILD (0x2) = Provide a handle to the child’s STDOUT stream
    $STDERR_CHILD (0x4) = Provide a handle to the child’s STDERR stream
    $STDERR_MERGED (0x8) = Provides the same handle for STDOUT and STDERR. Implies both $STDOUT_CHILD and $STDERR_CHILD.
    $STDIO_INHERIT_PARENT (0x10) = Provide the child with the parent’s STDIO streams. This flag can not be combined with any other STDIO flag. This flag is only useful when the parent is compiled as a Console application.
    $RUN_CREATE_NEW_CONSOLE (0x10000) = The child console process should be created with it’s own window instead of using the parent’s window. This flag is only useful when the parent is compiled as a Console application.

يتم تعريف الثوابت في AutoItConstants.au3.

نتائج الدالة

إذا نجح تشغيل العملية
فالدالة تعطينا رمز pid الخاص بالعملية
حيث يمكن غلقها أو التحكم فيها
هذا بخصوص
run
أما الناتج في دالة
runWait
هو رمز الخروج من البرنامج

وفي حال لم تنجح العملية فالناتج
يكن
0
ورمز الخطء يكن
0

ملاحظة

1. إذا كان المسار يحتوي على مسافات ومزدوجات فعليك أن تحصره
داخل
علامات التنصيص المنفردة (”)

2. يمكنك تشغيل أي عملية بأوامر سطرية عادي
3. إذا أردت تشغيل أوامر CMD مثلا فالطريقة تكن كالتالي :
Run(@ComSpec & ” /c الأمر”, “”, @SW_HIDE)
ونفس الطريقة تصلح مع كل البرامج التي تحتوي على أوامر سطرية

أما الآن فلنتوجه إلى الدالتين االأخرتين

ShellExecute و ShellExecuteWait

هذه الدالة لا تتطلب أي ملفات إستدعاء

شكل الدالة

شكل الدالة يكن كالتالي
ShellExecute (“filename”, “parameters”, “workingdir”, “verb”, showflag)
الإعدادات الإفتراضية هي
الخانة الأولا فقط أي
filename

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

filename إسم ومسار الملف الذي تريد تشغيله (EXE, .txt, .lnk, etc).
parameters [optional] أي أوامر سطرية خاصة بالبرنامج. فارغة (“”) يعني لا إعدادات.
workingdir [optional] مجلد العمل. فارغة (“”) يعني استخدام مجلد العمل الحالي.
verb [optional] الفعل الذي يطبق,
    $SHEX_OPEN (“open”) = فتح الملف المحدد. الملف يمكن أن يكن ملف تنفيذي, مستند, أو مجلد
    $SHEX_EDIT (“edit”) = تشغيل محرر وفتح مستند لتحريره. إن كان “filename” ليس مستند, الدالة لا تعمل
    $SHEX_PRINT (“print”) = طباعة الملف المحدد. إن كان “filename” ليس مستند, الدالة لن تعمل
    $SHEX_PROPERTIES (“properties”) = فتح خصائص الملف أو المجلد
إقرء الملاحظة للمزيد من المعلومات عن خصائص الفعل

الثوابت توجد في “AutoItConstants.au3”.

showflag [optional] إعدادات الإظهار الخاصة بالإظهار
    @SW_HIDE = نافذة مخفية
    @SW_MINIMIZE = نافذة مصغرة
    @SW_MAXIMIZE = نافذة مكبرة

نتائج الدالة

إذا نجح تشغيل العملية
فالدالة تعطينا رمز pid الخاص بالعملية حيث يمكن غلقها أو التحكم فيها.
إن وجد وإلا فالناتج يكن
-1
هذا بخصوص الدالة
ShellExecute
أما الدالة
ShellExecuteWait
فالناتج يكن رمز إنتهاء البرنامج
وفي حال لم تنجح العملية فالناتج
يكن
0
ورمز الخطء يكن
0

ملاحظات

إذا لم تقم بتخصيص فعل فإن الفعل الإفتراضي سيستخدم.
الفعل الإفتراضي هو الفعل المخزن في الرجيستري.
إن كان لا يوجد فعل إفتراضي في الرجيستري فالفعل “open” سيستخدم.
إن لم تتمكن الدالة من تطبيق الفعل “open” فالفعل الأول الموجود في الرجيستري سيستخدم.
يمكنك تشغيل رابط من خلال هذه الدالة
وذالك
بكتابته مكان مسار الملف

أمثلة

عزيزي هنا سأقم بتقديم أمثلة على كل حالة
طبعا المثال الذي أعطيه لدالة يتطبق على الدالة التي تشابهها
ملاحظة :
سأستخدم في هذا الدرس المتغيرات النظامية التي تعرفنا عليها في
الدرس الثالث
لنبدء على بركة الله

أمثلة عن الدالة run

تشغيل برنامج NVDA

#include <MsgBoxConstants.au3>
local $run = run(@programFilesDir & "\NVDA\NVDA.exe")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "رمز pid", $run, 0, "")


إنشاء نسخة محمولة من برنامج NVDA في المسار c:\NVDA

#include <MsgBoxConstants.au3>
local $run = run(@programFilesDir & "\NVDA\NVDA.exe --create-portable --portable-path c:\NVDA")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "رمز pid", $run, 0, "")


إنشاء نسخة محمولة من برنامج NVDA في المسار c:\NVDA وإظهار رسالة بعد الإنتهاء

#include <MsgBoxConstants.au3>
local $run = runWait(@programFilesDir & "\NVDA\NVDA.exe --create-portable --portable-path c:\NVDA")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تم غنشاء النسخة", "تم إنشاء النسخة المحمولة في المسار c:\NVDA", 0, "")

أمثلة عن الدالة ShellExecute

سوف أقم بوضع نفس الأمثلة السابقة على الدالة
ShellExecute
تشغيل برنامج NVDA

#include <MsgBoxConstants.au3>
local $run = ShellExecute(@programFilesDir & "\NVDA\NVDA.exe")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "رمز pid", $run, 0, "")


إنشاء نسخة محمولة من برنامج NVDA في المسار c:\NVDA

#include <MsgBoxConstants.au3>
local $run = ShellExecute(@programFilesDir & "\NVDA\NVDA.exe", "--create-portable --portable-path c:\NVDA")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "رمز pid", $run, 0, "")


إنشاء نسخة محمولة من برنامج NVDA في المسار c:\NVDA وإظهار رسالة بعد الإنتهاء

#include <MsgBoxConstants.au3>
local $run = ShellExecuteWait(@programFilesDir & "\NVDA\NVDA.exe", "--create-portable --portable-path c:\NVDA")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "تم غنشاء النسخة", "تم إنشاء النسخة المحمولة في المسار c:\NVDA", 0, "")

خاتمة

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

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

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

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

ما هي مربعات الحوار input box

أخي العزيز لعلك في رحلتك مع البرامج صدفت برنامج يطلب منك تفعيل مثلا أو إدخال بيان محدد
وهذا في شاشة تحتوي على مربع للكتابة وزر موافق وإلغاء
هذه الشاشة هي شاشة مربع الحوار
input box

ما هي متطلبات هذه الدالة

عزيزي هذه الدالة لا تتطلب أي ملف إستدعاء

كيف يمكنني إنشاء هذه الدالة

عزيزي القارئ
لإنشاء مربع الحوار تحتاج لاستخدام دالة تسمى
INPUTBox
وشكل الدالة يكن كالتالي
InputBox ( “title”, “prompt” [, “default” [, “password char” [, width = -1 [, height = -1 [, left = Default [, top = Default [, timeout = 0 [, hwnd]]]]]]]]
شرح إعدادات الدالة

title عنوان النافذة
prompt الرسالة التي تريد إظهارها للمستخدم
default النص الذي تريد أن يكن مكتوب إفتراضيا, بإمكانك ترك عَلَمَتي تنصيص فارغتين إذا لم ترد أن يكن أي شيء مكتوب.
password char هذه الخانة تستخدم إذا أردت أن يكن مربع الحوار خاص بكلمة سر, حيث تكتب بين عَلَمَتي تنصيص الحرف الذي تريده أن يظهر للمستخدم عندما يقم بكتابة أي شيء, يعني على نفس شكل كلمة السر. طبعا يمكنك ترك عَلَمَتي تنصيص فارغتين إذا لم ترد جعل هذا المربع خاص بكلمة سر.
width عرض النافذة, إذا أردت أن تتركها على الإفتراضي أكتب القيمة ناقص 1 (-1)
height طول النافذة, إذا أردت أن تتركها على الإفتراضي أكتب القيمة ناقص 1 (-1)
left تحريك النافذة إلى اليمين, إذا أردت أن تتركها على الإفتراضي أكتب القيمة (default)
top ارتفاع النافذة, إذا أردت أن تتركها على الإفتراضي أكتب القيمة (default)
timeout وقت إختفاء النافذة بالثواني, حيث لو مرت هذه المدة ولم يكتب المستخدم شيء فسيتم إخفاء النافذة تلقائيا, القيمة الإفتراضية هي 0
hwnd رمز النافذة, إن أردت ربط نافذة مربع الحوار مع نافذة موجودة بالفعل.

الخانات التي لا يمكن تجاوزها في هذه الدالة هي
العنوان
النص
أما الباقي فاختياري
ملاحظة :
لا يمكنك القيام بضبط اعداد وتجاهل الاعداد الذي يسبقه
إذا لم ترد تغييره فيمكنك استبداله بقيمته الافتراضية.
طبعا المثال على الدالة سيكن أسفله

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

عزيزي هذه الدالة يجب انشائها وربطها مع متغير إن أردت أن تحصل على الناتج.
فعلى سبيل المثال
local $input = inputBox(“name”, “يرجى كتابة إسمك”)
هنا أنا تجاهلت كل الإعدادات سوى العنوان والرسالة
وإذا أردت أن أحصل على الناتج فهو قيمة المتغير
$input
فمثلا لعرض الناتج في رسالة حوارية نقم بكتابة
local $input = inputBox(“name”, “يرجى كتابة إسمك”)
msgBox(0, “الإسم”, $input)
هنا سيتم عرض الناتج لك في رسالة عزيزي
طبعا إذا لم يكتب المستخدم شيء, أو قام بالضغط على إلغاء, أو انتهت فترة الإنتظار المحددة فالناتج يكن لا شيء.

أمثلة

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

المثال الأول

في هذا المثال سأقم بمطالبة المستخدم بكتابة إسمه
ثم أعرض الإسم في رسالة للمستخدم

#include <MsgBoxConstants.au3>
local $input = inputBox("name", "يرجى كتابة إسمك", "", "", -1, -1, default, default, 0, "")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "الناتج", $input, 0, "")

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

هنا عزيزي سأقم بعرض مربع لكتابة اسم المستخدم
ثم آخر لكتابة كلمة السر
بعد كل مربع أضهر الناتج في رسالة

#include <MsgBoxConstants.au3>
local $UserName = inputBox("إسم المستخدم", "يرجى كتابة إسم المستخدم", "", "", -1, -1, default, default, 0, "")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "الناتج", $userName, 0, "")
local $Password = inputBox("كلمة السر", "يرجى كتابة كلمة السر", "", "*", -1, -1, default, default, 0, "")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "الناتج", $password, 0, "")

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

في هذا المثال سأقم بعرض المربع لمدة 10 ثواني
ثم يعطي الناتج

#include <MsgBoxConstants.au3>
local $input = inputBox("تجربة", "يرجى كتابة شيء", "", "", -1, -1, default, default, 10, "")
MSGBox($MB_OK+$MB_ICONINFORMATION+$MB_SYSTEMMODAL, "الناتج", $input, 0, "")

خاتمة

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

الدرس السادس في دورة تعلم لغة 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

خاتمة

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

الدرس الخامس في دورة تعليم Autoit

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

ما هم ملفات الإستدعاء؟

ملفات الإستدعاء هي تلك الملفات الدخيلة على البرنامج
والتي قد تساعدنا في تنظيم سكربت البرنامج
وتعتبر مسهلة جدا للعمل
حيث يمكن لملفات الإستدعاء
أن تحمل دوال عامة
يمكن إستخدامها في البرنامج
كما يمكن أن تحمل متغيرات عامة تستخدم في البرنامج
حيث يرمز لها بالإنجليزية ب
includ files
وملفات الإستدعاء في هذه اللغة قسمان
منها ما هو مدموج مع البرنامج
ومنها ما نحمله من الأنترنت أو نقم نحن بكتابته.
وملفات الإستدعاء تكن دائما بإمتداد
سكربتات الأوتو
أي
.au3
سيخطر في رأسك سؤال الآن عزيزي
وهو هل يمكننا الإستغناء عن ملفات الإستدعاء
فأقول لك ملفات الإستدعاء يمكن الإستغناء عنها في حال كانت من تصميمك
حيث يمكن دمج كل الدوال في ملف واحد
أما المدمجة مع اللغة
فيمكن ولاكن من الصعب جدا
ويتطلب خبرة في اللغة.
ومن الأفضل
أن نستخدم ملفات الإستدعاء لأنها تساعدنا في تنظيم السكربت الخاص بنا
كما تسهل علينا إيجاد الأخطاء البرمجية التي نرتكبها.

كيف يمكنني إستدعاء ملف؟

لإستدعاء ملف يجب أولا أن تحدد مسار الملف الذي تريد أن تستدعيه
إذا كان خاص أو تم تحميله من الأنترنت
وإذا كان موضوع بجانب السكربت الأصلي أو كان هذا الملف من بين ملفات المكتبة المدمجة مع اللغة
فيكفي أن تكن تعرف إسمه فقط
نأتي الآن لكيفية الإستدعاء
لاستدعاء ملف في لغة الأوتو
نستخدم الأمر
#include
ثم مسافة ثم رمز أصغر من
< ثم مسار الملف أو إسمه مع الإمتداد ثم علامة أكبر من >

مثلا
#include
هذا لإستدعاء ملف مخصص
أو
#include
لإستدعاء ملف من المكتبة

بعض ملفات الإستدعاء المهمة الموجودة في المكتبة

عزيزي في مكتبة الأوتو المدمجة هناك نوعان من ملفات الإستدعاء
هناك الملفات التي تحوي متغيرات عامة
تعمل في مواضع مخصصة
وهناك من تحتوي على دوال ومهام كبيرة
وفي هذا القسم سنتعرف على أهم الملفات التي لا يمكن الإستغناء عنها
وقبل أن نبدء في إستعراض الملفات دعوني أقدم لكم المسار الموجودة فيه هذه الملفات
نجدها في مجلد Autoit الموجود في program files
ثم مجلد بإسم include
هناك نجد كل ملفات الاستدعاء الموجودة في مكتبة الأوتو
وكلها بصيغة au3
ملاحظة :
لو قمت عزيزي بنقل أي ملف أنكلود إلى هذا المجلد فسوف يعتبر من المكتبة
ولست مذطر على كتابة المسار بالكامل لاستدعاء الملف
حيث يكفي كتابة إسمه
ولو قمت بحذف ملف أنكلود واحد
يمكن أن يسبب لك عطب في تنفيذ المهام
لأن كل الملفات الموجودة هنا مهمة جدا جدا
لذا يرجا الإنتباه وعدم العبث في هذه الملفات
____
نبدء الآن في الإستعراض

الملفات الخاصة بالمتغيرات العامة

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

الملف الفائدة منه
AutoItConstants.au3 فيه أهم المتغيرات العامة الخاصة باللغة
ButtonConstants.au3 ملف يحتوي على المتغيرات العامة الخاصة بالأزرار
ComboConstants.au3 ملف يحتوي على المتغيرات الخاصة بصناديق الإختيار
DateTimeConstants.au3 ملف يحتوي على المتغيرات الخاصة بالوقت والتاريخ
DirConstants.au3 ملف يحتوي على المتغيرات الخاصة بالمجلدات
EditConstants.au3 ملف يحتوي على المتغيرات الخاصة بمربعات التحرير
FileConstants.au3 ملف يحتوي على المتغيرات الخاصة بالملفات
GUIConstants.au3 ملف يحتوي على المتغيرات الخاصة بواجهات المستخدم الرسومية
ListBoxConstants.au3 ملف يحتوي على المتغيرات الخاصة بالقوائم
ListViewConstants.au3 ملف يحتوي على المتغيرات الخاصة بقوائم العرض
MathConstants.au3 ملف يحتوي على المتغيرات الخاصة بالعمليات الحسابية
MenuConstants.au3 ملف يحتوي على المتغيرات الخاصة بالقوائم
MsgBoxConstants.au3 ملف يحتوي على المتغيرات الخاصة برسائل المحاورة
ProcessConstants.au3 ملف يحتوي على المتغيرات الخاصة بالتحكم في العمليات النشطة
ProgressConstants.au3 ملف يحتوي على المتغيرات الخاصة بشريط التقدم
SliderConstants.au3 ملف يحتوي على المتغيرات الخاصة بشاريط السحب
TabConstants.au3 ملف يحتوي على المتغيرات الخاصة بالصحائف
TreeViewConstants.au3 ملف يحتوي على المتغيرات الخاصة بالعرض الشجري
IPAddressConstants.au3 ملف يحتوي على بعض المتغيرات الخاصة بعناوين IP
StringConstants.au3 ملف يحتوي على بعض المتغيرات التي تساعدنا في التحكم في النصوص
WindowsConstants.au3 ملف يحتوي على بعض المتغيرات الخاصة بالنظام والنوافذ

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

ملفات الإستدعاء الخاصة بالدوال المساعدة

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

الملف الفائدة منه
Clipboard.au3 ملف يحتوي على الدوال الخاصة بالتحكم في الحافظة
Date.au3 ملف يحتوي على بعض الدوال التي تعرفنا بالوقت والتاريخ بطرق مختلفة
File.au3 ملف يحتوي على بعض الدوال التي تساعدنا في إدارة الملفات
GUIConstantsEx.au3 باستدعاء هذا الملف هو يغنينا عن إستدعاء العديد من الملفات لأنه هو يقم بإستدعائها.
icon .au3 ملف يحتوي على بعض الدوال التي تساعد في عرض الصور والأيقونات
Math.au3 ملف يحتوي على بعض الدوال التي تساعد في العمليات الحسابية
Process.au3 ملف يحتوي على بعض الدوال التي تمكننا من التحكم في العمليات
Sound.au3 ملف يحتوي على بعض الدوال التي تساعدنا في تشغيل الملفات الصوتية
Misc.au3 ملف يحتوي على بعض الدوال التي تساعد في القيام بعمليات مختلفة سنتعرف عليها لاحقا
GuiButton.au3 ملف يحتوي على دوال للتحكم في الأزرار
GuiComboBox.au3 ملف يحتوي على بعض الدوال لإدارة صناديق الإختيار
GuiEdit.au3 ملف يحتوي على بعض الدوال التي تساعدنا في إدارة مربعات التحرير
GuiIPAddress.au3 ملف يحتوي على بعض الدوال التي تساعدنا في التحكم في عنوان IP
GuiListBox.au3 ملف يحتوي على بعض الدوال التي تساعدنا على التحكم في القوائم
GuiListView.au3 ملف يحتوي على بعض الدوال التي تساعدنا في التحكم في قوائم العرض
GuiMenu.au3 ملف يحتوي على بعض الدوال التي تساعدنا في التحكم في القوائم
GuiSlider.au3 ملف يحتوي على بعض الدوال التي تمكننا من التحكم في شريط السحب
GuiTab.au3 ملف يحتوي على بعض الدوال التي تساعدنا في التحكم في الصحائف
GuiTreeView.au3 ملف يحتوي على بعض الدوال التي تساعدنا على التحكم في العرض الشجري
String.au3 ملف يحتوي على بعض الدوال التي تساعدنا في التحرك في النصوص

لقد إنتها درسنا اليوم
الذي يعتبر من الدروس المهمة جدا في هذه اللغة
حيث إبتداءا من الدرس القادم سنبدء في التعامل مع هذه الدوال والمتغيرات
وطبعا باستدعاء هذه الملفات التي تعرفنا عليها الآن
طبعا وكالعادة يمكنكم زيارة الدرس السادس قريبا من خلال
هذا الرابط
تقبلو تحياتي ولا تنسوني من خالص دعائكم

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

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

أما الآن فدعونا نبدء مع الدرس الرابع

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

تذكير بشكل الدالة المعرفة

في تعرفنا على الدالة
تعلمنا أن الدالة نوعين
وهما الدالة المعرفة والدالة المخصصة
واليوم ما نحتاجه هو الدالة المعرفة
وهي دوال قد صممت لتسهيل علينا الكثير من الأكواد
المعقدة منها والطويلة
وإختصارا للوقت, وحتى لا ننشغل بكتابة أكواد كثيرة كل ما أردنا عمل أمر معين
فجاأت هنا هذه الدوال العامة
التي تقم بتنفيذ لنا ما نريد ومتى ما نريد
وشكل الدالة يكن كالتالي
name(param1, param2, param3,…)
حيث
name : يمثل إسم الدالة
القوسين : يمثلا حقل إعدادات الدالة
وما وضع بين القوسين : يمثل إعدادات الدالة المتغيرة
التي سنرى أمثلة عديدة عنها في هذا الدرس إن شاء الله تعالى.

إدارة الملفات والمجلدات

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

إدارة الملفات

عزيزي لإدارة الملفات هناك دوال مخصصة لذالك
كدالة نسخ الملفات
fileCopy
ودالة نقل الملفات
fileMove
ودالة حذف الملفات
FileDelete
وهذا ما سا نتعرف عليه اليوم
وكل الدوال المذكورة تحتوي على
3 إعدادات
الأولى مشتركة
وهي مسار الملف
والثانية تختلف حسب الدالة
المهم سنبدء في شرحهم دالة دالة حتى يتضح الأمر

1. دالة نسخ الملفات fileCopy

شكل الدالة يكن كالتالي
fileCopy(المسار1, المسار2, الإشارة)
شرح
المسار 1 هو مسار الملف الذي تريد نسخه
المسار2
هو المسار الذي تريد نسخ الملف إليه
الإشارة
وهي
أن نشير إلى الدالة بتنفيذ بماذا ستفعل إذا واجهتها بعض المعيقات
كإيجاد إسم ملف يحمل إسم الملف الذي تريد نسخه
أو المسار غير موجود إلخ
والإشارة إما أن تكن بمتغيرات خاصة
أو بالأرقام
وأنا أفضل الأرقام حاليا
نظرا لعدم توسعنا الكافي في المتغيرات
والأرقام أسهل
وهنا بين أيدينا ثلاث إشارات مهمة
وهي :
0 أي نشير له أن إذا وجد ملف بنفس الإسم لا يستبدله
1أي نشير له أن إذا وجد ملف بنفس الإسم يقم باستبدله
8 أن نشر له بأن إذا لم يجد مسار النسخ يقم بإنشائه
لاكن هنا السؤال الذي يطرح نفسه هو :
لو أردت مثلا أن أشير له بأن يستبدل الملف وينشء المجلد في نفس الوقت فماذا أفعل
هل أكتب مثلا 18؟
هنا أيها القارء الكريم
علينا بأن نفصل بين الإشارات بعلامة +
حيث تصبح مثلا
1 + 8
أي إستبدل وإنشء المجلد إن لم يكن موجود
أو
0 + 8
أي لا تستبدل وإنشء المجلد إن لم يكن موجود
والآن مثال توضيحي
لنفترض أننا نملك ملف في القرص c وإسمه autoit.txt
ونريد نسخه إلى المسار التالي
d:\my files\
فنكتب
الكود كما يلي
fileCopy(“c:\Autoit.txt”, “d:\my files”, 1)
أي ينسخه بنفس الإسم مع إستبداله إن وجد
هنا يشترط أن يكن المسار صحيح
fileCopy(“c:\Autoit.txt”, “d:\my files\autoit2.txt”, 1 + 8)
وبهذا المثال
يقم بنسخ الملف بإسم مختلف
مع إستبدال الملف إن وجد وإنشاء المجلد إن لم يكن موجود
طبعا بإمكانك نسخ أكثر من ملف
مثلا لو أردت نسخ كل الملفات التي بإمتداد txt من مجلد إلى مجلد آخر
فأستبدل إسم الملف وإمتداده في المسار الأول ب
*.txt
فتصبح كالتالي مثلا
fileCopy(“c:\example\*.txt”, “d:\my files\”, 1 + 8)
أو إذا أردت نسخ كل الملفات مثلا فأستبدل إسم المسار وإمتداده ب
*.*
حيث يصبح مثلا
fileCopy(“c:\example\*.*”, “d:\my files\”, 1 + 8)
إلخ

2. دالة نقل الملفات fileMove

إن دالة نقل الملفات هي مشابهة تماما لدالة نسخ الملفات
حيث تتميز بكل خصائصها
فقط نستبدل كلمة
copy
بكلمة
Move

فتصبح الدالة كالتالي
fileMove
ومثال فقط على الدالة
fileMove(“c:\example\*.txt”, “d:\my files\”, 1 + 8)
طبعا الإشارات هي نفسها والإعدادات هي نفسها

3. دالة حذف الملفات fileDelete

هذه الدالة تحتوي على إعداد واحد فقط
حيث يكن شكل الدالة كما يلي
fileDelete(“مسار الملف”)
ومسار الملف هو مسار وإسم وإمتداد الملف الذي نريد حذفه
حيث تكن مثلا
fileDelete(“c:\autoit.txt”)
لحذف ملف واحد
أو
fileDelete(“c:\example\*.txt”)
لحذف كل الملفات النصية
أو
fileDelete(“c:\example\*.*”)
لحذف كل الملفات مهما كان إمتدادها

إدارة المجلدات

لغة autoit عزيزي وكأي لغة برمجة تتيح لك التحكم في المجلدات وإدارتها
ولعمل هذا هناك دوال مخصصة
حيث سنتعرف اليوم على :
دالة إنشاء المجلدات
dirCreate
ودالة نسخ المجلدات
DirCopy
ودالة نقل المجلدات
DirMove
ودالة حذف المجلدات
DirRemove

1. دالة إنشاء المجلدات dirCreate

هذه الدالة سهلة جدا وتحتوي على إعداد واحد فقط

وهو مسار المجلد الذي نريد إنشائه
حيث شكلها يكن كالتالي
DirCreate(“المسار”)
ومثال عليها
DirCreate(“c:\example”)

2. دالة نسخ المجلدات DirCopy

هذه الدالة تمكننا من نسخ محتوى مجلد ما إلى مجلد آخر
حيث يكن شكلها كالتالي
DirCopy(“مسار المجلد”, “مسار المجلد الذي نريد النسخ إليه”, الإشارة)
مسار المجلد هو المسار الذي يحتوي على المحتوى المراد نسخه
والمسار الثاني هو مسار المجلد الذي نريد نسخ المحتوى إليه
أما الإشارة
فهنا إشارتين فقط
0 في حال وجد نفس الملفات لا يقم بإستبدالها
1 في حال وجد نفس الملفات يقم بإستبدالها
مثلا
DirCopy(“c:\example”, “d:\programation\autoit\example”, 1)
أي يقم بنسخ المجلد
وإستبدال المحتوى إن كان موجود
أو
DirCopy(“c:\example”, “d:\programation\autoit\example”, 0)
أي لا يقم بإستبدال المحتوى إن كان موجود مسبقا.

دالة نقل مجلد DirMove

هذه الدالة تشبه تماما دالة نسخ مجلد
يكفي فقط إستبدال كلمة
copy
بكلمة
move
فتصبح
DirMove
مثال على الدالة
DirMove(“c:\example”, “d:\programation\autoit\example”, 1)
أي أمرته بنقل المجلد إلى مجلد آخر مع إستبدال المحتوى إن كان موجود مسبقا.

4. دالة حذف مجلد

هذه الدالة تحتوي على إعدادين فقط وهما
مسار المجلد والإشارة
حيث هي على الشكل التالي
DirRemove(“مسار1”, إشارة)
المسار يعني مسار المجلد الذي نريد حذفه
أما الإشارة
فهنا عندنا إشارتين
الأولى
0 وتشير إلى حذف المجلد في حال كان فارغا
والثانية هي :
1 وتشير إلى حذف المجلد على أي حال
مثال توضيحي
DirRemove(“c:\example”, 1)
يعني أخبرته بحذف المجلد على أي حال
DirRemove(“c:\example”, 0)
وهنا أمرته بحذف المجلد شرط أن يكن فارغا

ملاحظات

1. يجب كتابة المسارات بين علاماتي تنصيص
حتى وإن لم يكن المسار يحتوي على مسافات
2. لو لم نقم بوضع الإشارة فهو يستخدم إشارة 0 بشكل تلقائي
يعني مثلا
في نسخ الملفات يستخدم الإشارة عدم إستبدال الملفات بشكل تلقائي
لذا إن كنت تريد أن تشر له بعدم الإستبدال
فبإمكانك الإستغناء عن الإشارة
فتصبح الدالة مثلا كالتالي
fileCopy(“c:\autoit.txt”, “d:\my files”)
ونفس الشيء مع الدوال الأخرى.
3. يجب تقديم المسارات الصحيحة حتى تنجح العملية بنجاح.
4. إذا إستخدمت أمر حذف كل الملفات أو كل المجلدات
وكان هناك ملفات مخفية فلن يقم بحذفها
لذا يجب عليك إظهارها وإزالة الحماية عنها أولا
وهذه اللغة تحتوي على أوامر للقيام بهذه العملية وسنتعرف عليها فيما بعد

ملاحظات عامة

1. عليك بقراءة الدروس السابقة وتدوينها وفهمها جيدا
حتى تسهل لك الدروس التالية
وأنا في الخدمة بإمكانك أن تكتب سؤالك إما في تعليق وإما في صفحة أسئلة الأعضاء.
2. دائما المسارات والنصوص في هذه االلغة تكن بين علامات تنصيص.
3. دائما يجب أن نفصل بين إعدادات الدالة بعلامة الفاصلة

خاتمة

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

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

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

دعونا نتعرف أولا على ما المقصود بالمتغيرات النظامية

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


طبعا عزيزي إلى الآن نحن لا نحتاج إليها لأننا في البداية
لاكن عزيزي إبتداءا من الدرس الرابع سنبدء في إستخدام كل ما تعلمناه تطبيقيا
فعليك عزيزي بالتركيز وأخذ الدروس السابقة على محمل الجد
لأننا سنحتاج إلى كل ما تعلمناه وحتى نتجنب التكرار في الدروس السابقة

ما الفرق بين المتغير النظامي والمتغير العادي؟ وكيف يمكننا إستدعاء المتغير النظامي؟

كما تعرفنا في الدروس السابقة أن المتغيرات في هذه اللغة هي 4 أنواع
ونرمز لها بالرمز $
حيث هو الرمز الذي يعرف المتغير في هذه اللغة.
أما عن المتغيرات النظامية فالأمر مختلف تماما
حيث يوجد نوع واحد من المتغيرات النظامية
وهو يرمز له بعلامة الآت
@
ثم إسم المتغير
حيث هي متغيرات معرفة في اللغة لا يمكننا إنشاء أو تغيير قيمتها
مثال :
لمعرفة إسم المستخدم نقم بإستدعاء المتغير النظامي التالي
@userName
لاحظ هنا عزيزي أننا قمنا بالتعريف أولا بالمتغير النظامي وذالك بإستخدام الرمز المخصص له وهو علامة الآت
@
ثم إسم المتغير الذي قيمته هي إسم المستخدم
وهو
UserName
ويتم إستدعاء كل المتغيرات النظامية بنفس الطريقة

أهم المتغيرات النظامية

1. أهم المتغيرات النظامية التي تعطينا معلومات عن الجهاز أو النظام

المتغير النظامي فائدته
@username معرفة إسم المستخدم الحالي
@computerName معرفة إسم الحاسوب
@CPUArch معرفة إذا كان المعالج الخاص بالحاسوب x64 أو x86
@IPAddress1 لمعرفة رقم المعرف IP
@OSLang معرفة لغة الويندوز المثبت
@OSVersion لمعرفة إصدار الويندوز مثلا “win7”
@OSBuild لمعرفة الإصدار التركيبي للويندوز
@OSArch لمعرفة نوت الويندوز الحالي x64 أو x86

2. أهم المتغيرات التي تعطينا معلومات عن التريخ والوقت

المتغير النظامي فائدته
@hour لمعرفة الساعة الحالية من اليوم, وهو يعمل بنظام 24 ساعة حيث يبدء من 00 إلى 23
@min لمعرفة الدقيقة الحالية من الساعة, حيث يبدء من 00 إلى 59
@@sec لمعرفة الثانية الحالية من الدقيقة, حيث يبدء من 00 إلى 59
@mDay رقم اليوم من الشهر, حيث يبدء من 01 إلى 30 أو 31 حسب الشهر الحالي
@mon لمعرفة الشهر الحالي, حيث يبدء من 00 إلى 12
@wday رقم اليوم في الأسبوع, حيث يبدء من 1 إلى 7 أي من السبت إلى الجمعة
@YDay لمعرفة اليوم الحالي من السنة, حيث يبدء من 001 إلى 365 أو 366, حسب السنة
@year لمعرفة السنة الحالية, مثلا 2018

3. أهم المتغيرات التي تعرفنا على المسارات النظامية المختلفة

المتغير النظامي فائدته
@AppDataCommonDir مسار مجلد program data
@AppDataDir مسار مجلد appdata
@CommonFilesDir مسار مجلد Common Files
@DesktopCommonDir مسار سطح المكتب العام
@DesktopDir مسار سطح المكتب للمستخدم الحالي
@DocumentsCommonDir مسار المستندات العام
@MyDocumentsDir مسار مجلد مستنداتي
@FavoritesCommonDir مسار المفضلة العام
@FavoritesDir مسار المفضلة الخاصة بالمستخدم الحالي
@HomeDrive مسار القرس النظامي
@LocalAppDataDir مسار مجلد local
@ProgramFilesDir مسار مجلد program files في نظام 32, أو program files (x86) في نظام 64
@ProgramsCommonDir مسار مجلد البرامج التي تجدها في قائمة إبدء, (المسار العام)
@ProgramsDir مسار مجلد البرامج الموجود في قائمة إبدء (المسار الخاص بالمستخدم الحالي فقط)
@StartMenuCommonDir مجلد قائمة إبدء العام
@StartMenuDir مجلد قائمة إبدء الخاص بالمستخدم الحالي فقط
@StartupCommonDir مجلد بدء التشغيل العام
@StartupDir مجلد بدء التشغيل الخاص باللمستخدم الحالي فقط
@SystemDir مسار مجلد system32
@TempDir مسار مجلد الملفات المؤقتة
@UserProfileDir مسار مجلد المستخدم الحالي
@WindowsDir مسار مجلد windows

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

خاتمة :

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

ملاحظة :
الدرس الرابع سوف يكن متوفر قريبا على هذا الرابط
رابط الدرس الرابع
ومسك الختام السلام
فالسلام عليكم ورحمة الله تعالى وبركاته

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

السلام عليكم ورحمة الله تعالى وبركاته
أهلا وسهلا بكم في الدرس الثاني من تعلم لغة autoit
قد كنا في
الدرس الأول
قد تعرفنا على الدوال والمتغيرات
وقلت لكم أن في الدرس الثاني سنتعرف مع بعض على أساسيات أخرى في قواعد هذه اللغة
اليوم سنتعرف على أمران آخران
هما الأوامر الشرطية If
وال حلقة التكرارية loop
أولا نبدء مع

الأوامر الشرطية

تستخدم الجملة الشرطية IF عند حاجتنا لاتخاذ قرارات مختلفة حسب شرط معين .
مثال : 
إذا كانت درجة الطالب أكبر من أو يساوي 60 فهو ناجح ، وإذا كانت أقل من 60 فهو راسب 
وللأمر الشرطي عدة صيغ
دعونا نتعرف عليها اليوم

صيغة  IF – THEN

IF    الشرط المطلوب اختباره THEN الأمر الذي سيتم تنفيذه اذا كان الشرط صحيح

مثال :

IF $var >=60 then return “ناجح”

صيغة  IF – THEN – ENDIF

IF    الشرط المطلوب اختباره THEN 
الأوامر أو الجمل التي سيتم تنفيذها اذا كان الشرط صحيح
ENDIF

مثال :


IF $var >=60 then 
return “ناجح”
ENDIF

صيغة  IF – THEN – ELSE

IF    الشرط المطلوب اختباره THEN
مجموعة الجمل لتي سيتم تنفيذها اذا كان الشرط صحيح
ELSE
مجموعة الجمل التي سيتم تنفيذها إذا كان الشرط خاطء
ENDIF

مثال :


IF $var >= 60 then
return “ناجح”
ELSE
return “غير مجتاز”
ENDIF

صيغة  IF – THEN – ELSEIF

IF    الشرط الأول المطلوب اختباره THEN
مجموعة الجمل لتي سيتم تنفيذها اذا كان الشرط الأول صحيح
ELSEIF   الشرط الثاني لمطلوب اختباره THEN
مجموعة الجمل التي سيتم تنفيذها إذا كان الشرط الثاني صحيح
ELSE
مجموعة الجمل التي سيتم تنفيذها إذا كانت كل الشروط خاطئة
ENDIF

مثال :


IF $var >=90 then 

return “ممتاز”

ELSEIF $var>=80 then 
return “جيدجدا”
ELSEIF $var >=70 then 
return “جيد”
ELSEIF $var >=60 then 
return “مقبول”
ELSE
return “غير مجتاز  ”
ENDIF

الجملة الشرطية switch CASE :

تستخدم هذه الجملة إذا كان هناك عدة احتمالات للشرط ، فهي تقوم بنفس عمل جملة IF ولكن بطريقة أسهل .——————————————————————————–
الصيغة العامة لها :

switch الأمر الذي تريد إختباره وتقييمه
CASE الاحتمال الأول 
يتم تنفيذ مجموعة الجمل 1

CASE الاحتمال الثاني 
يتم تنفيذ مجموعة الجمل 2
CASE ELSE  
الجمل التي سيتم تنفيذها في حالة عدم تحقق أي شرط من الشروط السابقة

endSwitch

مثال على switch CASE


switch $var
CASE 90 TO 100
return “ممتاز ”
CASE 80 TO 89
return “جيد جدا”
CASE 70 TO 79
return ” جيد ”
CASE 60 TO 69
return “مقبول ”
case else 
return “غير مجتاز ”
endSwitch

الأمر الشرطي select case

يستخدم هذا الخيار في حال تريد أن تقم بعرض خيارات على المستخدم وتريد معرفة الخيار الذي اختاره وتضع له أوامر ينفذها
يكن تركيب الكود كالآتي
select
case الإحتمال الأول
الأمر
case الإحتمال الثاني
الأمر
case else
الأمر في حال لم يتنفذ أي خيار من الذي حددته
endSelect
مثال

إظهار رسالة نعم ولا للمستخدم


$msg = MSGBox(4, “هل تريد حذف الملف”, إضغط على نعم إن كنت تريد المتابعة أو لا إذا كنت تريد إلغاء الأمر”)
select
case $msg = 6
msgBox(0, “الخيار”, “لقد تم الضغط على نعم”)
case $msg = 7
msgBox(0, “الخيار”, “لقد تم الضغط على لا”)
endSelect

الحلقات التكرارية Loop

تعريفها
فائدة الحلقة التكرارية هي أنها إذا كان شئ يتكرر أكثر من مرة فلا داعي لكتابته العديد من المرات تستخدم الحلقة التكرارية و تضع فيها العدد أي عدد مرات التكرار
و الحلقة تفي بالغرض هذا كل شئ
هناك عدة أنواع في لغة autoit
سنستعرضها في ما يلي

Do Until Loops

لإنشاء هذه الحلقة يجب أن نكن نملك متغير حتى يكن العد عليه
أو أن يكن متغير أو أمر جاهز
وصيغته تكن
do
الأوامر التي تريدها أن تتنفذ في الحلقة
until الشرط الذي تريده أن يتحقق
مثال


Local $i = 0
Do
MsgBox(0, “قيمة المتغير $i هي :”, $i)
$i = $i + 1
Until $i = 10

هنا أنشأنا متغير إسمه $i
وأخبرنا الحقل التكراري أنه يعرض لنا قيمة المتغير $i وتزويد رقم 1 كل مرة
إلى غاية تحقق القيمة 10 في المتغير $i

While Loops

هذا الحقل هو متميز
حيث يبقى يعمل حتى القيمة المحددة
وإن لم تتحقق فيبقى يعمل
مثال :


$counter = 0
While $counter <= 5 MsgBox(0, "قيمة المتغير $counter هي:", $counter) $counter = $counter + 1 WEnd

For Loops

هذا الحقل نستخدمه في العد
وبدون إعلان متغير سابق
حيث يمكننا مثلا العد من 5 إلى 10 أو من 10 إلى 5 وبكل سهولة
مثال
For $counter = 5 to 10
MsgBox(0, “القيمة هي : “, $counter)
Next
حيث بكلمة next ننهي إطار الحلقة التكرارية
لا تقلق عزيزي إذا صعب عليك هذا الأمر
فنحن الآن نقم بالإستعراض فقط
ومعرفة القاعدة
وأكيد سنتوسع فكلما عرفناه في الدروس السابقة
هي هذه القواعد الأساسية في لغة autoit وفي كل لغات البرمجة
في الدرس القادم سنتعرف على بعض الماكروات المهمة macros
سيكون الدرس الثالث متوفر قريبا من خلال
هذا الرابط
تحياتي ولا تنسوني من دعائكم الصالح