Тема: AutoHotkey versus AutoIT
AutoHotkey - это "ответвление" от проекта AutoIT. Языки отличаются синтаксисом и встроенным набором методов.
AutoIt, в отличие от AutoHotkey, поддерживает Automation (он же COM):
$oExcel = ObjCreate("Excel.Application") ; Create an Excel Object
$oExcel.Visible = 1 ; Let Excel show itself
$oExcel.WorkBooks.Add ; Add a new workbook
$oExcel.ActiveWorkBook.ActiveSheet.Cells(1,1).Value="test" ; Fill a cell
sleep(4000) ;See the results for 4 seconds
$oExcel.ActiveWorkBook.Saved = 1 ; Simulate a save of the Workbook
$oExcel.Quit ; Quit Excel
Так же, как и AHK, AutoIt поддерживает вызов функций из DLL:
$result = DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "Some text", "str", "Some title", "int", 0)
В последних версиях AutoIt (как и в последних версиях AutoHotkey) появилась поддержка CallBack (обратного вызова):
; Create callback function
$handle = DLLCallbackRegister ("_EnumWindowsProc", "int", "hwnd;lparam")
; Call EnumWindows
DllCall("user32.dll", "int", "EnumWindows", "ptr", DllCallbackGetPtr($handle), "lparam", 10)
; Delete callback function
DllCallbackFree($handle)
; Callback Procedure
Func _EnumWindowsProc($hWnd, $lParam)
If WinGetTitle($hWnd) <> "" And BitAnd(WinGetState($hWnd), 2) Then
$res = MsgBox(1, WinGetTitle($hWnd), "$hWnd=" & $hWnd & @CRLF & "lParam=" & $lParam & @CRLF & "$hWnd(type)=" & VarGetType($hWnd))
If $res = 2 Then Return 0 ; Cancel clicked, return 0 to stop enumeration
EndIf
Return 1 ; Return 1 to continue enumeration
EndFunc
Подкорректирована передача по ссылке/по значению в DLL-функции:
Changed: DllCall() new method of passing types by reference using *.
Changed: DllCall(): short_ptr, long_ptr, int_ptr types deprecated. Use short*, long* and int* respectively.
Added: DllCall() now accept doubles, int64, uint64, wparam and lparam types.
Выравнивание структур при передаче:
DllStructCreate() added "align" keyword to set structure alignment
Наконец, в последних версиях в комплекте поставки идёт огромнейшее количество User Defined Function (в исходных кодах AutoIt), заметно облегчающих работу и упрощающих обучение языку.
AutoHotkey гораздо более заточен на работу с клавиатурой: именно в этом его огромное преимущество. Главное, чего ему не хватает - поддержки работы через Automation (COM).
Автор обзора - alexii.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.