أوتوات

أكتوبر 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 أخيرا.

رخصته

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

استخداماته

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

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

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

التركيب النحوي

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

دوال المستخدم

يمكن للمستخدم عمل دوال خاصة به عن طريق Func وينتهي بـ EndFunc
مثال :
UserMsg("النص","العنوان")Func UserMsg($Text,$Title)
$Text = '.:: ' & $Text & '::.'
MsgBox (64,$Title,$Text)
Return 1EndFunc

المتغيرات

ليس من المهم تعريف المتغير قبل استخدامه, يكون تعريف المتغير بأحد الكلمات الثلاث : Local و Global و Dim.
ويسبق المتغير بعلامة الدولار $ للدالة على أنه متغير. ولا يجب تحديد نوع المتغير عند تعريفه
مثال :
Dim $Var1 = 125Global $Var2 = 'Wikipedia'
$Var3 = 0xf0ed5a

المصفوفات

لا بد من تعريف المصفوفات بأحد الكلمات السابقة Local و Global و Dim.
وتعين الأبعاد باستخدام الأقواس [ ].
مثال :
Global $Array1[4] = [1,'String',True,0xf5d54a] ;مصفوفة من بعد واحد عدد العناصر 4Global $Array2[4][3] ;مصفوفة من بعدين عدد العناصر 12 عنصر

الماكرو Macro

وهي متغيرات يتم تعريفها تلقائيا, وهي للقراءة فقط. تبدأ بعلامة at @ للدلالة على أنها ماكرو.
مثال :
@ScriptDir ;مسار ملف النص البرمجي@OSArch ;نوع النظام من حيث المعالج@AppDataCommonDir ;مسار مجلد في النظام@DesktopWidth ;عرض شاشة العرض بالبكسل

العمليات

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

الملاحظات أو التعليقات

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

الواجهة الرسومية GUI

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

المكتبات UDF

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

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
EndIfWEndFunc _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