مقدمات و اصصلاحات این زبان
در AutoIt تنها یک نوع داده وجود دارد که یک Variant نامیده می شود. یک نوع می تواند داده های عددی یا رشته ای را داشته باشد و تصمیم می گیرد که چگونه داده ها را با توجه به شرایطی که در آن استفاده می شود، استفاده کند. به عنوان مثال، اگر شما دو اصطلاح را امتحان کنید و آنها را دو برابر کنید، اگر شما سعی کنید و پیوند (join) دو نوع آنها به عنوان رشته ها مورد استفاده قرار دهید
مقدار باینری
نوع دودویی می تواند مقدار هر بایت را ذخیره کند. آنها در هگزا دسیمال  در هنگام ذخیره شدن در یک متغیر رشته تبدیل می شوند.

$dBin = Binary("abc")
$sString = String($dBin) ; "0x616263"

اشاره گر
نوع اشاره گر یک آدرس حافظه را که 32 بیت یا 64 بیت است، بسته به اینکه آیا 32 بیت یا 64 بیتی از AutoIt استفاده می شود، ذخیره می کند. هنگامی که در یک متغیر رشته ذخیره می شود، آنها به نمایندگی هگزادسیم تبدیل می شوند. دستگیره پنجره (HWnd) به عنوان بازگشت از WinGetHandle () یک نوع نشانگر است.

Boolean
بولین ها مقادیر منطقی هستند. فقط دو ارزش بولی وجود دارد: درست و نادرست.


$bBoolean1 = True
$bBoolean2 = False
$bBoolean3 = $bBoolean1 And $bBoolean2

یک متغیر فقط مکانی است برای ذخیره داده ها در حافظه به طوری که بتوان آن را به سرعت در دسترس قرار داد. به عنوان یک صندوق پستی در حافظه فکر کنید که می توانید اطلاعات را در آن قرار دهید یا اطلاعات را بیابید. برای مثال شما می توانید یک متغیر برای ذخیره تعداد پاسخ کاربر به یک سوال یا نتیجه به معادله ریاضی ایجاد کنید.
هر متغیر دارای نام است (مجددا شبیه یک صندوق پستی) و باید با کاراکتر $ شروع شود و ممکن است فقط حروف، اعداد و حروف زیر را نشان دهد. در اینجا برخی از نام های مثال:

  $Var1

    $vVariable

    $my_Variable
اعلام متغیرها
Local $vVariable 


یا شما می توانید چندین متغیر را در یک بار اعلام کنید:

Global $vVariable1, $vVariable2
شما همچنین می توانید یک متغیر را بدون آنکه اول آن را اعلام کنید، اختصاص دهید، اما بسیاری از اعلان ها  صریح هستند
اعلام ثابت
ثابت ها با استفاده از کلمه کلیدی Const اعلام و ایجاد می شوند و باید با مقدار اولیه شروع شوند:

Const $iConst1 = 
1, 
$iConst2 = 12 

همچنین با استفاده از کلید واژه Enum، می توان ثابت ها را ثابت کرد و راه اندازی کرد.

Enum $eConst1 = 1, $eConst2, $eConst3 ; 1, 2, 3
Enum Step 2 $eIncr0, $eIncr2, $eIncr4 ; 0, 2, 4
Enum Step *2 $eMult1, $eMult2, $eMult4 ; 1, 2, 4 

محدوده
دامنه متغیر تحت کنترل زمانی و چگونگی اعلام متغیر است. اگر یک متغیر را در ابتدای اسکریپت خود اعلام می کنید و در خارج از هر توابع آن در دامنه جهانی موجود است و می توانید آن را از هر نقطه از اسکریپت خواند یا آن را تغییر دهید.
اگر یک متغیر را درون یک تابع توضیح دهید، آن را در محدوده محلی قرار می دهد و تنها می تواند در همان تابع استفاده شود. متغیرهایی که در داخل توابع ایجاد شده اند وقتی که تابع به پایان می رسد، به طور خودکار نابود می شوند.
به طور پیش فرض زمانی که متغیرها با استفاده از Dim یا Declared در یک تابع اعلام می شوند، دامنه محلی دارند مگر اینکه یک متغیر جهانی با یک نام وجود داشته باشد (در این صورت متغیر جهانی استفاده مجدد). این می تواند با استفاده از کلمات کلیدی محلی و جهانی برای اعلام متغیرها و محدوده مورد نظر شما را تغییر دهد.
آرایه ها و نقشه ها
AutoIt دارای 2 نوع متغیر جمع آوری داده ها است: آرایه ها و نقشه ها.
آرایه ها برای دسترسی تصادفی بسیار سریعتر هستند و می توانند ابعاد چندگانه داشته باشند - اندازه ابعاد در مقدار اولیه اعلام شده ثابت می شود (اگر چه می توان با استفاده از ReDim آن را تغییر داد). آرایه ها با استفاده از مقادیر عدد صحیح اشاره شده به منظور عناصر نشان داده می شوند و از عنصر [0] شروع می شوند - عناصر می توانند با استفاده از عدد صحیح استخراج شوند و یا توسط یک حلقه ساده برای ... تکرار شوند.
نقشه ها برای دسترسی به پرونده / فرهنگ لغت بهتر است و یک بعد واحد دارند. آنها با استفاده از کلیدهای صحیح یا رشته ای (عدد صحیح به ترتیب عناصر اشاره نمی شود) نشان داده می شوند و به صورت پویا تغییر می کنند به عنوان مقادیر اضافه یا حذف می شوند. ارزش تنها با استفاده از کلید اصلی قابل دسترسی است - این کلید ها می توانند با استفاده از تابع TableKeys تکرار شوند.
هر دو آرایه و نقشه از نحو مشابهی استفاده می کنند، بنابراین لازم است اطمینان حاصل شود که متغیر از نوع داده درست است - این تعریف از طریق خط اول برای متغیر است:
با استفاده از خالی [] یک نقشه را اعلام می کنیم

Arrays and MapsLocal $mVar[] ; A Map 


پر کردن [] با ابعاد اندازه آرایه را اعلام می کند

Local $aVar[3] ; An Array 

اعلان مقدار عنصر هنگام اعلام باعث می کند که متغیر یک آرایه باشد - این سه خط عملکرد معادل هستند:

Local $vVar[3] = [1, 2, 3] ; An Array
Local $vVar[] = [1, 2, 3] ; An Array
Local $vVar = [1, 2, 3] ; An Array 

یک آرایه یک متغیر حاوی یک سری عناصر داده است. هر عنصر در این متغیر می تواند توسط یک عدد شاخص که مربوط به موقعیت عنصر در آرایه است دسترسی پیدا کند - در AutoIt اولین عنصر آرایه همیشه عنصر [0] است. عناصر آرایه در یک نظم مشخص ذخیره می شوند و می توانند مرتب شوند
مثال:
شما می خواهید یک لیست از نام ها را ذخیره کنید: "Jasper"، "Beethoven"، "Pinky" و "Fidget". شما می توانید از چهار متغیر جداگانه برای انجام این کار استفاده کنید، اما استفاده از آرایه کارآمد تر است:

Local $aArray[4]
$aArray[0] = "Jasper"
$aArray[1] = "Beethoven"
$aArray[2] = "Pinky"
$aArray[3] = "Fidget" 

برای دسترسی به یک مقدار خاص در آرایه، از شماره شاخص استفاده کنید:

$sString = $aArray[2] ; $sString contains "Pinky" 

شماره شاخص نیز می تواند با یک متغیر یا یک عبارت دیگر جایگزین شود، بنابراین شما می توانید راه های پیچیده ای برای اختصاص یا دسترسی به عناصر در آرایه ایجاد کنید.


عناصر کل آرایه را می توان با استفاده از For ... حلقه بعدی تکرار کرد:

For $i = 0 To UBound($aArray) - 1
    ConsoleWrite(aArray[$i] & @CRLF)
Next 

آرایه ها همچنین می توانند چند بعدی باشند، زمانی که از سری های متعدد از عدد شاخص استفاده می کنید. فکر می کنم از ردیف ها و ستون ها در یک شبکه:

$aArray[0][0] = "Upper-Left"
$aArray[1][0] = "Lower-Left"
$aArray[0][1] = "Upper-Right"
$aArray[1][1] = "Lower-Right" 

یک نقشه یک متغیر حاوی یک سری عناصر داده است که هر کدام شامل یک جفت کلید / ارزش می باشد. یک عنصر تنها با یک کلید قابل دسترسی است که می تواند یک رشته یا یک عدد صحیح باشد. با این حال یک کلید عدد صحیح با موقعیت عنصر در نقشه ارتباط ندارد - اینها در هیچ نظم مشخص نیستند و نمی توانند مرتب شوند. کلید های رشته، تقریبا منحصر به فرد در AutoIt، حساس به حروف هستند - "MyKey" همان "mykey" نیست.
یک مثال:
شما می خواهید تعدادی متغیر را در یک مجموعه ذخیره کنید تا بتوانید آنها را به یک تابع به عنوان یک پارامتر انتقال دهید. با استفاده از یک نقشه، شما می توانید از کلید های رشته ای برای ایجاد یک مرجع به راحتی قابل درک به مقدار موجود در آن - مانند کنترل های کنترل از یک سری از کنترل های که توسط نام آنها نشان داده شده است. توجه داشته باشید که عناصر را می توان با یا [] یا نماد نقطه خطاب کرد:

Local $mControls[]
$mControls["Input"] = GUICtrlCreateInput(....)
$mControls.Combo = GUICtrlCreateCombo(...)
$mControls["Button"] = GUICtrlCreateButton(...) 

AutoIt دارای تعدادی از ماکروها است که متغیرهای خاص خواندن فقط توسط AutoIt استفاده می شوند. ماکروها با علامت @ به جای $ معمولی شروع می شوند، بنابراین آسان هستند که از یکدیگر جدا شوند. همانطور که با متغیرهای عادی می توانید از ماکرو در عبارات استفاده کنید اما نمیتوانید به آنها ارزش بدهید.
ماکروها از قبل تعریف شده به طور کلی برای دسترسی آسان به اطلاعات سیستم مانند محل دایرکتوری ویندوز و یا نام کاربر وارد شده استفاده می شود.
لیست همه ماکروهای این زبان



مسیرAppDataCommonDir مسیر داده برنامه
AppDataDir مسیر به داده برنامه رومینگ کاربر فعلی کاربر
@ AutoItExe مسیر کامل و نام فایل اجرایی AutoIt در حال اجرا است. برای اسکریپت های کامپایل شده مسیر اسکریپت کامپایل شده است؛ برای فایل های .a3x و .au3 مسیر مترجم در حال اجرا فایل است.
AutoItPID شناسه فرآیند (PID) اسکریپت فعلی.
@ AutoItVersion نسخه نسخه AutoIt مانند 3.3.10.2
@ AutoItX64 اگر 1 اسکریپت زیر نسخه بومی x64 از AutoIt اجرا شود، 1 بازگشت می کند.
COM_EventObj رویداد COM در حال اجرا است. فقط در یک رویداد COM معتبر است
CommonFilesDir مسیر به پوشه فایل های مشترک
Compiled Returns 1 اگر اسکریپت اجرایی کامپایل شده یا یک فایل .a3x باشد؛ یک فایل .au3 0 را باز می گرداند.
ComputerName نام شبکه کامپیوتری.
ComSpec ارزش٪ COMSPEC٪، مترجم مفصل COMmand مشخص شده؛
اولیه برای خط فرمان استفاده می کند، برای مثال اجرای (ComSpec & "/ k help | more")
CPUArch هنگامی که CPU یک پردازنده 32 بیتی و "X64" است هنگامی که پردازنده 64 بیتی است، "X86" را بازگرداند.
CR بازگشت باربری، Chr (13)؛ گاهی اوقات برای شکستن خط استفاده می شود.
CRLFCR &LF؛ معمولا برای شکستن خط استفاده می شود.
DesktopCommonDir مسیر دسکتاپ
DesktopDepth عمق صفحه نمایش اولیه در بیت در هر پیکسل.
DesktopDir مسیر دسکتاپ کاربر فعلی
DesktopHeight ارتفاع صفحه اصلی در پیکسل. (وضوح عمودی)
DesktopRefresh میزان تجدید صفحه اصلی در هرتز.
DesktopWidth عرض صفحه نمایش اولیه در پیکسل. (رزولوشن افقی)
DocumentsCommonDir مسیر به اسناد
error وضعیت پرچم خطا. تابع SetError () را ببینید.
exitCode خروج از کد به عنوان بیانیه خروجی تعیین شده است.
exitMethod روش خروج تابع OnAutoItExitRegister () را ببینید.
extended بازگشت تابع تمدید شده - مورد استفاده در توابع خاص مانند StringReplace ().
FavoritesCommonDir مسیر به علاقه مندی ها
FavoritesDir مسیر به مورد علاقه کاربر فعلی است
GUI_CtrlHandle آخرین دکمه کنترل GUI را کلیک کنید. فقط در یک رویداد معتبر است عملکرد. تابع GUICtrlSetOnEvent () را ببینید.
GUI_CtrlId آخرین شناسه کنترل GUI را کلیک کنید. فقط در یک رویداد معتبر است عملکرد. تابع GUICtrlSetOnEvent () را ببینید.
GUI_DragFile نام فیلمی که فایل رها شده است. فقط در رویداد قطره معتبر است تابع GUISetOnEvent () را ببینید.
GUI_DragId کشیدن شناسه کنترل رابط کاربری GUI. فقط در رویداد قطره معتبر است تابع GUISetOnEvent () را ببینید.
@ GUI_DropId Drop GUI شناسه کنترل. فقط در رویداد قطره معتبر است تابع GUISetOnEvent () را ببینید.
GUI_WinHandle آخرین دکمه پنجره GUI را کلیک کنید. فقط در یک رویداد معتبر است عملکرد. تابع GUICtrlSetOnEvent () را ببینید.
HomeDrive درایو درایو حاوی دایرکتوری خانگی کاربر فعلی است.
@ HomePath Directory بخشی از دایرکتوری خانگی کاربر فعلی است. برای گرفتن مسیر کامل، با استفاده ازHomeDrive استفاده کنید.
HomeShare سرور و نام به اشتراک گذاشتن که حاوی دایرکتوری خانگی کاربر فعلی است.
HotKeyPressed آخرین کلید فشرده شده فشار داده شده است. عملکرد HotKeySet () را ببینید.
@ ساعت ساعت ساعت در قالب 24 ساعته. محدوده 00 تا 23 است
@ IPAddress1 آدرس IP اولین آداپتور شبکه. مایل به بازگشت به 127.0.0.1 در برخی از کامپیوترها.
@ IPAddress2 آدرس IP آداپتور شبکه دوم. 0.0.0.0 اگر قابل اجرا نباشد
@ IPAddress3 آدرس IP آداپتور شبکه سوم 0.0.0.0 اگر قابل اجرا نباشد
@ IPAddress4 IP آدرس چهارم آداپتور شبکه. 0.0.0.0 اگر قابل اجرا نباشد
KBLayout کد را نشان می دهد که چیدمان صفحه کلید را نشان می دهد. برای مقادیر ممکن، پیوست را ببینید.
@ LF Line feed، Chr (10)؛ گاهی اوقات برای شکستن خط استفاده می شود.
LocalAppDataDir مسیر داده های کاربر محلی کاربر فعلی
@ LogonDNSDomain ورود به DNS دامنه.
@ Logon Domain دامنه ورود به سیستم
@ LogonServer Logon server.
MDAY روز جاری ماه محدوده 01 تا 31 است
@ MIN Minute value of clock. محدوده 00 تا 59 است
MON ماه جاری محدوده 01 تا 12 است
MSEC مقدار میلی ثانیه ارزش ساعت. محدوده 000 تا 999 است. فرکانس به روز رسانی این مقدار بستگی به وضوح تایمر سخت افزار دارد و ممکن است هر میلی ثانیه به روز نگردد.
MUILang مقدار کد را نشان می دهد که چندین زبان در صورت موجود بودن (ویندوز به طور پیش فرض درست است). برای مقادیر ممکن، پیوست را ببینید.
MyDocumentsDir مسیر به اسناد من هدف
NumParams تعداد پارامترهای مورد استفاده در فراخوانی عملکرد کاربر.
OSArch یکی از موارد زیر را برمی گرداند: "X86"، "IA64"، "X64" - این نوع معماری سیستم عامل در حال اجرا است.
OSBuild شماره سیستم عامل را باز می گرداند. به عنوان مثال، ویندوز سرور 2003 3790 را باز می کند
OSLang بازگشت کد را نشان می دهد OS Language. برای مقادیر ممکن، پیوست را ببینید.
OSServicePack اطلاعات بسته خدمات در قالب "Service Pack 3".
OSType بازگشت "WIN32_NT" برای XP / 2003 / Vista / 2008 / Win7 / 2008R2 / Win8 / 2012 / Win8.1 / 2012R2 را نشان می دهد.
OSVersion یکی از موارد زیر را برمی گرداند: "WIN_10"، "WIN_81"، "WIN_8"، "WIN_7"، "WIN_VISTA"، "WIN_XP"، "WIN_XPe"،
    برای سرورهای ویندوز: WIN_2016، WIN_2012R2، WIN_2012، WIN_2008R2، WIN_2008، WIN_2003.
ProgramFilesDir مسیر پوشه فایل برنامه
ProgramsCommonDir مسیر برای راه اندازی پوشه برنامه های منو
ProgramsDir مسیر برنامه های فعلی کاربر (فولد
اپراتورهای این زبان هم مانند سایر زبانهست
جدول عملگر هارو جهت استفادتون قرار میدم--بصورت عکس



یک حلقه چگونگی مراجعه به یک قسمت از اسکریپت است که چند بار تکرار می کنید. ممکن است بخواهید یک تعداد مشخصی از زمان را حل کنید یا ممکن است بخواهید یک قسمت از اسکریپت را تکرار کنید تا زمانی که شرایط خاصی درست یا غلط باشد.
 اشکال حلقه زیر در AutoIt موجود است:صرفا جهت آشنایی
For...Next 
While...WEnd 
Do...Until 
For...In...Next 
مثال اول

#include <MsgBoxConstants.au3>

For $i = 5 To 1 Step -1
    MsgBox($MB_SYSTEMMODAL, "", "Count down!" & @CRLF & $i)
Next
MsgBox($MB_SYSTEMMODAL, "", "Blast Off!")
مثال دوم
#include <MsgBoxConstants.au3>

Local $i = 0
While $i <= 10
    MsgBox($MB_SYSTEMMODAL, "", "Value of $i is: " & $i)
    $i = $i + 1
WEnd
مثال سوم
#include <MsgBoxConstants.au3>

Local $i = 0
Do
    MsgBox($MB_SYSTEMMODAL, "", "The value of $i is: " & $i) ; Display the value of $i.
    $i = $i + 1 ; Or $i += 1 can be used as well.
Until $i = 10 ; Increase the value of $i until it equals the value of 10.
مثال چهارم
#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Using an Array
    Local $aArray[4]

    $aArray[0] = "a"
    $aArray[1] = 0
    $aArray[2] = 1.3434
    $aArray[3] = "test"

    Local $sString = ""
    For $vElement In $aArray
        $sString = $sString & $vElement & @CRLF
    Next

    MsgBox($MB_SYSTEMMODAL, "", "For..IN Arraytest:" & @CRLF & "Result is: " & @CRLF & $sString)

    ; Using an Object Collection

    Local $oShell = ObjCreate("shell.application")
    Local $oShellWindows = $oShell.windows

    If IsObj($oShellWindows) Then
        $sString = ""

        For $Window In $oShellWindows
            $sString = $sString & $Window.LocationName & @CRLF
        Next

        MsgBox($MB_SYSTEMMODAL, "", "You have the following windows open:" & @CRLF & $sString)
    Else

        MsgBox($MB_SYSTEMMODAL, "", "You have no open shell windows.")
    EndIf
EndFunc   ;==>Example


COM Extensions به AutoIt
یک مقدمه کوتاه
COM چیست؟
COM مخفف "Component Object Model" است. این روش مایکروسافت برای اتصال نرم افزار با استفاده از یک رابط مشترک است. این اینترفیس ها در یک Object COM تعریف می شوند.
قبل از COM، شما مجبور بودید دقیق اجرای یک برنامه را قبل از اینکه بتوانید با آن «رابط» برقرار کنید. با استفاده از COM، شما هم اکنون می توانید "صحبت" به Object (s) تعریف شده خود را. تنها چیزهایی که باید بدانید، اسم اشیاء هستند که مورد استفاده قرار می گیرند و کدام ویژگی ها یا روش ها هستند.
خواص یا شیء (Object) چیست؟
این ها دو ویژگی اساسی یک شی هستند. شما می توانید 'اموال' را به عنوان ذخیره سازی داده ای از یک شیء ببینید. 'روش' می تواند به عنوان یک تماس عملکرد تابع به عنوان انجام کاری با داده ها دیده می شود.


آیا نیاز به COM در اسکریپت AutoIt داریم؟
این فقط بستگی دارد AutoIt دارای بسیاری از توابع ساخته شده است و یک کتابخانه بزرگ UDF است. شما می توانید اکثر برنامه های خود را با این کار انجام دهید. با این حال اگر شما نیاز به «ارتباط» ویژه با برنامه های دیگر دارید، با استفاده از COM می توانید بعضی خطوط اسکریپت را ذخیره کنید. اسکریپت ها باید آگاه باشند که وجود سوءاستفاده ها به شدت بستگی به سیستم عامل و نرم افزار نصب شده دارد. مثالهای زیر همه تحت نسخه معمولی ویندوز XP با Microsoft Office 2000 آزمایش شده اند.
بگذارید بگوییم شما می خواهید تمام پنجره های بازشو را به حداقل برسانید. شما می توانید این کار را با استفاده از توابع AutoIt معمولی مانند WinList و WinSetState انجام دهید. با این حال، دو خط کد COM می تواند نتیجه شما را به شما بدهد:


Local $oShell = ObjCreate("shell.application")

$oShell.MinimizeAll 

نحوه کار با دسترسی ادمین
این تابع در ابتدا با هدف اجازه اسکریپت AutoIt به درستی با کنترل حساب کاربری ویندوز (UAC) کار کرد.
همانطور که این تابع یک فرایند جدید را راه اندازی می کند، بعضی از توابع ConsoleWrite () قابل ضبط نیستند
به عنوان مثال نحوه غیر فعال سازی UAC و فرایند جدید تحت همان کاربر همانند نسخه اصلی اجرا می شود.


#include <MsgBoxConstants.au3>

#RequireAdmin

If IsAdmin() Then MsgBox($MB_SYSTEMMODAL, "", "The script is running with admin rights.")

نتیجه



همانطور که تابع اجرا می شود قبل از هر کد اسکریپت اصلی اجرا می شود، تابع نمی تواند هر متغیری تعریف شده در #include یا هر متغیری را که در داخل اسکریپت به عنوان Globalتعریف شده است، ارجاع کند. تمام متغیرهای درون تابع به صورت محلی محسوب می شوند.
امیدوارم توضیحات مفید باشه
یه مثال برای پایان درس
نحوه دریافت ورودی از کاربر ونمایش اون 

#include <MsgBoxConstants.au3>

Example()

Func Example()

    Local $sAnswer = InputBox("Question", "Where were you born?", "Planet Earth", "", _
             - 1, -1, 0, 0)

    MsgBox($MB_SYSTEMMODAL, "", $sAnswer)

    Local $sPasswd = InputBox("Security Check", "Enter your password.", "", "*")

    MsgBox($MB_SYSTEMMODAL, "", $sPasswd)

    Local $sValue = InputBox("Testing", "Enter the 1 or 2 character code.", "", " M2")

    MsgBox($MB_SYSTEMMODAL, "", $sValue)
EndFunc


بدین شکل