أوتوات

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث
أوتوات
AutoIt
Autoit-exe.png
المؤلف جوناثان بينيت
المطور جوناثان بينيت والعديد من المطورين
الإصدار الأولي 1999
آخر إصدار v3.3.6.1 / 16 ابريل 2010
الإصدار التجريبي 3.3.7.3 / 27 مايو 2011
مكتوب بلغة C++
نظام تشغيل ويندوز
الحجم حوالي 8 م.ب
متوفر باللغة الإنجليزية
حالة التطوير نشط
النوعية بيئة لغة برمجة
الترخيص EULA - مجاني
موقع وب www.AutoItscript.com

تعديل

أوتوات (بالإنجليزية: AutoIt) (تنطق بالإنجليزية aw-tow-it) هي لغة برمجة نصية مجانية تشبه بيسك(Basic) صممت لأتمتة نوافذ الويندوز واستخدامات عامة أخرى, تدمج اللغة بين محاكاة لوحة المفاتيح, وحركات المؤشر, ونقراته, والتحكم بالنوافذ لتؤدي مهام الأتمتة بطرق غير ممكنة بلغات أخرى مثل VBScript و SendKeys. أوتوات أيضا لا تعتمد على غيرها فيما عدا نظام التشغيل.

في البداية كانت أوتوات بسيطة الوظائف, ولكنها تطورت بشكل كبير خصوصا في الإصدار الثالث V3 حيث أضيفت لها خلال هذا الإصدار الكثير من الخوارميات(الدوال), وتطورت فيها خاصية واجهات المستخدم الرسومية (GUI), وتم تحسين محررها وإضافة أدوات كثيرة إليه. وهي الآن تملك بيئة تطوير متكاملة (IDE) معتمدة محررها (SciTE) المعتمد على Scintilla.

بعد كتابة الأوامر النصية(Script) يتم تحويله إلى صيغة تنفيذية تعمل على ويندوز ويمكن ضغطها باستخدام يو بي اكس (UPX) ليصغر حجمها ويمكن إضافة إليها العديد من الوظائف عن طريق مكتبات أوتوات تسمى UDF وهي اختصار لـUser Defined Functions.

نبذة تاريخية[عدل]

أكتوبر 1998[عدل]

كان جوناثن(Jonathan Bennett) صانع أوتوات يعمل لصالح شركة بخصوص تثبيت برامج بشكل صامت, فبحث عن طريقة لضغط الأزرار, وحينها استخدم Microsoft ScriptIt الذي كان يسمح بضغط الأزرار بطريقة صامتة.

Microsoft ScriptIt عمل بشكل جيد, ولكن واجهته مشاكل حيث كان غير متوافق مع بعض أنظمة التشغيل, وسبب مشكلة مع بعض البرامج.

ثم بعد فترة في نفس السنة بدأ استخدام لغة C لمحاكاة الضغط.

يناير 1999[عدل]

تم إطلاق أوتوات الإصدار الأول v1.0 وكانت صيغته تشبه Microsoft ScriptIt, وتضمن خوارزميات للتحكم بالنوافذ, ومحاكاة لوحة المفاتيح مثل (Send, Run, RunWait, WinWait, WinWaitClose, WinWaitActive, WinHide, WinActivate, WinClose, WinRestore, Sleep، SetKeyDelay), وتمكن جوناثن من تخطي مشاكل Microsoft ScriptIt حيث كان أوتوات) 1.0 أصغر منه, ويمكن التعامل مع النوافذ الخاملة(غير النشطة), ويمكن عمل خطة عمل, ويعمل بشكل صحيح في حالة تغير فترات الانتظار, وكان أكثر توافقا مع الأنظمة. وكانت له عدة مشاكل أيضا.

يناير - ابريل 1999[عدل]

تم اصدار عدة اصدارات أخرى وصلت إلى 1.8 مع ميزات مهمة جديدة.

أغسطس 1999[عدل]

تم إطلاق أوتوات 2, والذي كان أول اصدار يتضمن AutoItX.

سبتمبر 1999[عدل]

تم إطلاق أوتوات 2.1, والذي كان أول اصدار يمكن تحويل النص البرمجي(script) إلى ملف تنفيذي يعمل على ويندوز(Windows).

سبتمبر - مايو 1999[عدل]

تم إطلاق عدة اصدارات, وازدادت وظائف أوتوات بشكل هائل.

مايو 2001[عدل]

كانت الشيفرة المصدرية(Source Code) لأوتوات في فوضى تامة, تم كتابة الشيفرة المصدرية بالكامل من جديد في C++.

يناير 2002[عدل]

أوتوات 2.62, تتضمن Exe2Aut (تفكيك الصيغة التنفيذية إلى الشيفرة المصدرية), وتمت إضافة AutoItDLL.

ديسمبر 2002[عدل]

أوتوات 2.64 كان آخر اصدار من أوتوات 2.

بنابر 2003[عدل]

تطورأوتوات في فترة 2001-2003 تطورا بسيطا جدا, لاحظ جوناثن (Jonathan Bennett) أن الشيفرة المصدرية باتت في فوضى عارمة كالسابق, كانت صيغة كتابة أوتوات 2 سيئة جدا.

بدأ جوناثن يطور بيئة أوتوات 3, وقرر تغيير صيغة كتابة أوتوات.

مارس 2003[عدل]

إطلاق أول نسخة منشورة من أوتوات 3 بيتا.

فبراير 2004[عدل]

بعد أكثر من 100 اصدار بيتا من البرنامج, تم اصدار أوتوات 3.0.100 أخيرا.

مطورون[عدل]

المطورون الأساسيون النشطون هم:

  • جوناثن بينيت (Jonathan Bennett) - يعرف بـ Jon
  • جايسن بوجز (Jason Boggs) - يعرف بـ Valik
  • جاين بول (Jean-Paul Mesnage) يعرف بـ jpm
  • ديفيد نوتال (David Nuttall) يعرف بـ Nutster

ويوجد غيرهم ساهموا في أوتوات.

مميزات[عدل]

  • مجاني بالكامل.
  • صغير الحجم نسبيا فحجمه بالكامل مع المحرر الاعتيادي تقريبا 8 م.ب [1]
  • ذات صيغة برمجة سهلة الفهم, من عائلة لغات البيسك(Basic).
  • يوجد الكثير من الإضافات لها
  • منتدى دعم نشط على الإنترنت (إنجليزي)
  • تدعم بروتكولات TCP, وUDP.
  • تدعم كائنات COM (en)‏وهي اختصار لـ(Component Object Model) دعماَ جيداَ.
  • تتعامل مع مكتبات الربط الديناميكي (Win32 DLL).
  • المجمع يشمل دمج ملفات مع البرنامج لتستخرج عند تشغيلها.
  • إنشاء الواجهات الرسومية (GUI) بكثير من عناصر التحكم الخاصة بها.
  • إنشاء الرسائل وصناديق الإدخال.
  • التعامل مع بعض أنواع الصوتيات كالتشغيل, والتوقيف بدون إضافات.
  • التحكم بالنوافذ, والعمليات في الذاكرة.
  • محاكاة كاملة لجميع أفعال المستخدم تحريك الفأرة, والكتابة, وغيرها.
  • نتيجة التجميع ملف تنفيذي يعمل بذاته على نظام ويندوز(Windows).
  • يدعم ترميز يونيكود (Unicode) من الإصدار 3.2.4.0.
  • يدعم نظام 64 بت (64 bit) من الإصدار 3.2.10.0.
  • دعم كامل للتعابير النمطية (Regular expression).
  • متوافق مع الأنظمة Windows 2000 / XP / 2003 / Vista / 2008 / Windows 7 / 2008 R2.[2]
  • يعمل مع User Account Control الخاصة بويندوز فيستا (Windows Vista).

رخصته[عدل]

يرخص أوتوات تحت رخصة ترخيص المستخدم النهائي End-user license agreement تختصر إلى (EULA)وهو مجاني بكامل أدواته وموارده, والأغلبية الساحقة من مكتباته.

استخداماته[عدل]

يستخدم أوتوات بشكل واسع في أتمتة الأعمال, وفي أدوات الصيانة.

وقد استخدم بعد تطورها في الإصدار الثالث لإنتاج برامج كبيرة بالنسبة لما ينتج في النسخ السابقة.

حدوده[عدل]

وقد سبب هذا مشكلة كبيرة حوالي 17 أكتوبر 2006 حيث كانت معظم برامج مكافحة الفيروسات تكشف على أنها فيروسات مما سبب أزمة ثقة كبيرة بالبرنامج وقد عانت بعض المنتديات العربية المختصة بالصيانة بسبب هذه المشكلة حيث كان كثير من الأدوات مبرمجة بالأوتوات, وسببت مشكلة كبيرة, مما استدعى الفريق لمراسلة شركات الحماية وتدارك المسألة.[3]

أوتوات والبرمجة كائنية التوجه(OOP)[عدل]

لا يمكن لأوتوات العمل مع البرمجة كائنية التوجه (Object-Orientation Programming), ولكن ظهرت مكتبة تدعى AutoItObject يمكن العمل من خلالها.[4]

مرفقاته[عدل]

صورة توضيحية لمحرر الأوتوات SciTE4Autoit

تملك أوتوات عدة أدوات ومحررات, منها:

  • محرر SciTE4Autoit : وهو المحرر الرسمي لأوتوات, وهو تخصيص للمحرر SciTE ليتناسب بشكل كامل مع أوتوات.
  • محرر jEdit 4 AutoIt : وهو نسخة معدلة من المحرر jEdit لتتناسب مع أوتوات [5]
  • برنامج AutoIt Debugger : منقح لأوتوات.[6]
  • عدة أدوات قياسية, منها :

التركيب النحوي[عدل]

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

أنواع البيانات[عدل]

في أوتوات عدة أنواع من البيانات هي :

  1. النصوص String
  2. الأرقام Numbers
  3. قيم منطقية (en)‏ Booleans
  4. المؤشر Pointer وتسمى مقابض النوافذ بـ HWnd
  5. قيم ثنائية Binary

الدوال[عدل]

الصيغة العامة للدوال هي :

Function(First Parameter, Second Parameter, [ Third Parameter, [ Fourth Parameter]])
حيث تشير الأقواس المتوسطة [ ] إلى مدخلات غير ضرورية.

وتسمى الدوال بمسميات سهلة, عادة ما تبدأ باسم الشيء المتخصص فيه, أمثلة على الدوال.

FileCopy ("source", "dest" [, flag])
FileDelete ("path")
DllCall ("dll", "return type", "function" [, type1, param1 [, type n, param n]])
ProcessClose ("process")
RegRead ("keyname", "valuename")
StringLen ("string")

دوال المستخدم[عدل]

يمكن للمستخدم عمل دوال خاصة به عن طريق Func وينتهي بـ EndFunc

مثال :

UserMsg("النص","العنوان")
 
Func UserMsg($Text,$Title)
	$Text = '.:: ' & $Text & '::.'
	MsgBox (64,$Title,$Text)
	Return 1
EndFunc

المتغيرات[عدل]

ليس من المهم تعريف المتغير قبل استخدامه, يكون تعريف المتغير بأحد الكلمات الثلاث : Local و Global و Dim. ويسبق المتغير بعلامة الدولار $ للدالة على أنه متغير. ولا يجب تحديد نوع المتغير عند تعريفه

مثال :

Dim $Var1 = 125
Global $Var2 = 'Wikipedia'
$Var3 = 0xf0ed5a

المصفوفات[عدل]

لا بد من تعريف المصفوفات بأحد الكلمات السابقة Local و Global و Dim. وتعين الأبعاد باستخدام الأقواس [ ].

مثال :

Global $Array1[4] = [1,'String',True,0xf5d54a] ;مصفوفة من بعد واحد عدد العناصر 4
Global $Array2[4][3] ;مصفوفة من بعدين عدد العناصر 12 عنصر

الماكرو Macro[عدل]

وهي متغيرات يتم تعريفها تلقائيا, وهي للقراءة فقط. تبدأ بعلامة at @ للدلالة على أنها ماكرو.

مثال :

@ScriptDir ;مسار ملف النص البرمجي
@OSArch ;نوع النظام من حيث المعالج
@AppDataCommonDir ;مسار مجلد في النظام
@DesktopWidth ;عرض شاشة العرض بالبكسل

العمليات[عدل]

يحتوى أوتوات العمليات الحسابية والمنطقية, فمثلا العمليات الحسابية الجمع والطرح والضرب والقسمة وغيرها، وعمليات المقارنة مثل أكبر, وأصغر, وأكبر أو أصغر, والعمليات المنطقية مثل (و) و(أو) و(نفي)

الشرط[عدل]

يمكن الشرط (en)‏ عن طريق ثلاث عمليات :

  • If بأنواعها.
  • Switch
  • Select

الحلقات[عدل]

هناك الحلقات الافتراضية وهي :

  • حلقة For...Next
  • حلقة While...WEnd
  • حلقة Do...Until
  • حلقة For...In...Next

الملاحظات أو التعليقات[عدل]

هناك يمكن عمل ملاحظة لسطر واحد عن طريق الفاصلة المنقوطة ;، ويمكن عمل ملاحظات لأسطر عديدة عبر وضعها بين #cs و#ce

مثال :

$V = 1 ;ملاحظة لسطر واحد
#cs
ملاحظة
$V = 1 
ملاحظة
ملاحظة
#ce

الواجهة الرسومية GUI[عدل]

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

المكتبات UDF[عدل]

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

يمكن تضمين المكتبات عن طريق #Include.

حدود الأوامر[عدل]

هناك حدود للأوامر بالإضافة إلى حدود ويندوز الافتراضية. وهي :

  • يمكن عمل 64 بعد للمصفوفة كحد أقصى
  • و 16 مليون عنصر كحد أقصى

أمثلة[عدل]

Hellow World![عدل]

; إظهار Hellow World! في صندوق رسالة.
MsgBox(0, "Title", "Hellow World!")
Exit

جلب المتوسط الحسابي[عدل]

يحتوي الشيفرة التالي : دالة من المستخدم ونافذة وشرط.

;Finds the average of numbers specified by a user.
;The numbers must be delimited by commas.
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <Array.au3>
 
#region---------------GUI----------------------- 
$form = GUICreate("Average Finder", 300, 100)
$label = GUICtrlCreateLabel("Enter the numbers to be averaged separated by commas", 19, 0)
$textbox = GUICtrlCreateInput("", 20, 20, 220)
$label1 = GUICtrlCreateLabel("=", 245, 20, 30, 20)
$ansLabel = GUICtrlCreateLabel("", 255, 20, 50, 20)
$button = GUICtrlCreateButton("Find Average", 100, 40)
GUISetState(@SW_SHOW)
#endregion---------------END GUI-----------------------
 
While 1
	$msg = GUIGetMsg()
	If $msg = $GUI_EVENT_CLOSE Then Exit
	If $msg = $button Then
		If _findAvg(GUICtrlRead($textbox)) = "malform1" Then
			GUICtrlSetData($ansLabel,"Error")
		Else
			GUICtrlSetData($ansLabel, _findAvg(GUICtrlRead($textbox)))
		EndIf
	EndIf
WEnd
 
Func _findAvg($nums)
	Local $sData
	Local $ans
	;Clean up input format----------------->
	$chk = StringRight($nums, 5)
	If $chk = "," Then $nums = StringTrimRight($nums, 1)
	If StringInStr($nums, ",") < 1 Then
		Return ("malform1")
	EndIf
	;---------------------------------->
	$sData = StringSplit($nums, ",")
	$ans = 0
	For $i = 1 To $sData[0]
		$ans += $sData[$i]
	Next
	$ans = $ans / $sData[0]
	Return ($ans)
EndFunc ;==>_findAvg

المراجع[عدل]

  • معظم محتويات الصفحة من ملف مساعدة البرنامج للإصدار v3.3.6.1
  1. ^ صفحة تحميل البرنامج الرسمية http://www.AutoItscript.com/site/AutoIt/downloads/
  2. ^ الصفحة الرئيسية الرسمية http://www.AutoItscript.com/site/AutoIt/
  3. ^ انظر الموضوع في المنتدى http://www.AutoItscript.com/forum/topic/34658-are-my-AutoIt-exes-really-infected/
  4. ^ صفحة المكتبة الرئيسية (إنجليزية)
  5. ^ انظر الصفحة http://jedit4AutoIt.thorsten-willert.de/
  6. ^ انظر الصفحة الرسيمية لـ AutoIt Debugger على الرابط http://www.thefoolonthehill.net/drupal/AutoIt%20Debugger
  7. ^ انظر الصفحة الرسمية لـ Koda على http://koda.darkhost.ru/page.php?id=index