وصول الدرس الحادي عشر من دورة تعلم لغة 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 ملف يحتوي على بعض الدوال التي تساعدنا في التحرك في النصوص

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

أحسن برنامج لحرق الأصطوانات على USB : iso to usb

السلام عليكم ورحمة الله تعالى وبركاته
متابعينا الكرام أقدم لكم اليوم برنامج خفيف وجميل وسهل
مهمته هي حرق أسطوانات الويندوز على الفلاشة
وهو متوافق بنسبة
100%
بعد تحميل هذا البرنامج لا تحتاج للبحث عن برامج حرق الأسطوانات على الفلاشة يوآسبي أبدا
فهو يغنيك عن استخدام البرامج الأخرى
فعند فتحك للبرنامج تحرك إلى زر browse… لاختيار نسخة iso التي تريد حرقها على الفلاشة
بعدها تحرك إلى أن تجد صندوق خيارات فيه كل أجهزة usb الموصولة في الجهاز إختر ما تريد
وإذا لم يضهر بشكل أوتوماتيكي إضغط على زر
refresh…
بعدها تحرك إلى غاية
File System
وهو صندوق خيارات
تحرك فيه إلى غاية NTFS
بعدها تحرك تاب مرة واحدة يقول لك
Volume Label (max 11 chars)
وهو مربع كتابة
يمكنك كتابة إسم الفلاشة الجديد ولاكن بشرط أقصى عدد للحروف هو 11
بعدها تحرك إلى غاية
burn
إضغط عليها يعطيك رسالة تحذيرية فيها ok و cancel
إختر ok
بعدها يمكن أن يعطيك رسالة أخرى فيها yes و no
إختر no
بعد هذا يبدء في الحرق مباشرة
إنتضر حتى يعطيك رسالة ok
مفادها أنه تم الحرق بنجاح
ملاحظة
لا تهتم إذا أعطاك رسالة أن البرنامج لا يستجيب
فهذا أمر عادي جدا بعد أن ينتهي من الحرق سوف يعلنك بهذا
والآن مع تحميل البرنامج
إضغط هنا للتحميل من الموقع الرسمي
أو هنا رابط بديل
البرنامج مجاني لا يحتاج تفعيل ولا كراك
هذا رابط الموقع الرسمي لمن أراد زيارته
تقبلو تحياتي الحارة
ولا تنسوني من خالص دعائكم

برنامج REAPER العملاق في الهندسة الصوتية

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

المهم سوف أكتفي بطريقة تنصيب البرنامج والملحقات وتفعيله

حاولت أن أجمع كل ما يتعلق بالبرنامج ;
البرنامج بآخر أصدار ;

المجلد اللذي سوف أضعه يحتوي على التالي :

نسختان من البرنامج REAPER واحدة لأنظمة x86 وأخرى لأنظمة x64
الباتش
ملف الليسانس
ملف لجعل البرنامج متوافق مع البرامج الناطقة

المهم نبدأ بتثبيت الملف المسمى reaper 32bit.exe أو reaper 64bit.exe حسب نواة النظام نثبته تثبيةً عاديا ;

عند الضغط finish بعد التثبيت لا نقوم بالموافقة على الرسالة "تشغيل البرنامج الآن"

نثبت بعد ذلك الملف osara.exe وهو المسؤول على جعل البرنامج متوافق مع البرامج الناطقة تثبيةً عاديا

بعد ذلك نقوم بتفعيل البرنامج ,

نقوم بفتحه من صطح المكتب
تقابلنا نافذة بها زر لاستراد ملف التفعيل وهو باسم reaper-license.rk
نبحث عنه في المجلد المرفق

ثم نضغط زر thank you

ولتحميل البرنامج والمرفقات :
إضغط هنا