وصول الدرس الحادي عشر من دورة تعلم لغة 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 سوف نكمل اليوم مع الدرس الخامس
حيث سنتعرف على أمر مهم جدا
ألا وهم ملفات الإستدعاء
قبل أن نبدء في درس اليوم
دعوني أضع لكم رابط للذهاب إلى
الدرس الرابع
يرجا قراأته قبل أن تقرء هذا الدرس لأن الدروس الأولى مهمة جدا
والآن لنبدء

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

ملفات الإستدعاء هي تلك الملفات الدخيلة على البرنامج
والتي قد تساعدنا في تنظيم سكربت البرنامج
وتعتبر مسهلة جدا للعمل
حيث يمكن لملفات الإستدعاء
أن تحمل دوال عامة
يمكن إستخدامها في البرنامج
كما يمكن أن تحمل متغيرات عامة تستخدم في البرنامج
حيث يرمز لها بالإنجليزية ب
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

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

خاتمة :

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

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