Coder Social home page Coder Social logo

unknown6656 / autoit-interpreter Goto Github PK

View Code? Open in Web Editor NEW
35.0 5.0 10.0 19.97 MB

A C# AutoIt interpreter designed to be platform-independent

License: GNU Affero General Public License v3.0

C# 14.13% AutoIt 85.02% Batchfile 0.01% Shell 0.01% F# 0.83% C++ 0.01%
autoit platform-independent interpreter csharp fsharp windows macos linux architecture autoit3

autoit-interpreter's Introduction

autoit-interpreter's People

Contributors

dependabot[bot] avatar imgbotapp avatar mamiyaotaru avatar unknown6656 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

autoit-interpreter's Issues

Create Unit Tests

  • Add Appveyor CI
  • Publish TestRunner repository: https://github.com/unknown6656/TestRunner
  • Write cross-platform tests
    • Variant conversion
    • Variable handling
    • Expression parser
    • Tests for Au3 specs
      • macros
      • framework functions
      • UDFs?
    • Threading
    • Call frames
    • Script scanner
    • Global object storage
    • Plugins
    • Test on Linux
    • Test on Windows
    • Test on MacOS
  • Write Platform-specific tests
    • GUI
    • P/Invoke
    • COM
    • Linux tests
    • Windows tests
    • MacOS tests
  • Write Perfomance tests

FIX EXPRESSION PARSER !!

Fix the binary expression reduction to accept any-expr instead of object-expr:

any-expr := object-expr
          | any-expr "?" any-expr ":" any-expr
          | any-expr bin-op any-expr
          | un-op any-expr

Implement GUI methods

Transferred from #9. Requires #19 and #21.

https://www.autoitscript.com/autoit3/docs/functions.htm

  • AutoItWinGetTitle: Retrieves the title of the AutoIt window. (f5c2121)
  • AutoItWinSetTitle: Changes the title of the AutoIt window. (f5c2121)
  • Break: Enables or disables the users' ability to exit a script from the tray icon menu.
  • ClipGet: Retrieves text from the clipboard. (3f27c70)
  • ClipPut: Writes text to the clipboard. (f5c2121, 3f27c70)
  • ControlClick: Sends a mouse click command to a given control.
  • ControlCommand: Sends a command to a control.
  • ControlDisable: Disables or "grays-out" a control.
  • ControlEnable: Enables a "grayed-out" control.
  • ControlFocus: Sets input focus to a given control on a window.
  • ControlGetFocus: Returns the ControlRef# of the control that has keyboard focus within a specified window.
  • ControlGetHandle: Retrieves the internal handle of a control.
  • ControlGetPos: Retrieves the position and size of a control relative to its window.
  • ControlGetText: Retrieves text from a control.
  • ControlHide: Hides a control.
  • ControlListView: Sends a command to a ListView32 control.
  • ControlMove: Moves a control within a window.
  • ControlSend: Sends a string of characters to a control.
  • ControlSetText: Sets text of a control.
  • ControlShow: Shows a control that was hidden.
  • ControlTreeView: Sends a command to a TreeView32 control.
  • FileOpenDialog: Initiates a Open File Dialog. (6f06293)
  • FileSaveDialog: Initiates a Save File Dialog. (6f06293)
  • FileSelectFolder: Initiates a Browse For Folder dialog. (6f06293)
  • GUICreate: Create a GUI window. (7158221)
  • GUICtrlCreateAvi: Creates an AVI video control for the GUI.
  • GUICtrlCreateButton: Creates a Button control for the GUI.
  • GUICtrlCreateCheckbox: Creates a Checkbox control for the GUI.
  • GUICtrlCreateCombo: Creates a ComboBox control for the GUI.
  • GUICtrlCreateContextMenu: Creates a context menu for a control or entire GUI window.
  • GUICtrlCreateDate: Creates a date control for the GUI.
  • GUICtrlCreateDummy: Creates a Dummy control for the GUI.
  • GUICtrlCreateEdit: Creates an Edit control for the GUI.
  • GUICtrlCreateGraphic: Creates a Graphic control for the GUI.
  • GUICtrlCreateGroup: Creates a Group control for the GUI.
  • GUICtrlCreateIcon: Creates an Icon control for the GUI.
  • GUICtrlCreateInput: Creates an Input control for the GUI.
  • GUICtrlCreateLabel: Creates a static Label control for the GUI.
  • GUICtrlCreateList: Creates a List control for the GUI.
  • GUICtrlCreateListView: Creates a ListView control for the GUI.
  • GUICtrlCreateListViewItem: Creates a ListView item.
  • GUICtrlCreateMenu: Creates a Menu control for the GUI.
  • GUICtrlCreateMenuItem: Creates a MenuItem control for the GUI.
  • GUICtrlCreateMonthCal: Creates a month calendar control for the GUI.
  • GUICtrlCreateObj: Creates an ActiveX control in the GUI.
  • GUICtrlCreatePic: Creates a Picture control for the GUI.
  • GUICtrlCreateProgress: Creates a Progress control for the GUI.
  • GUICtrlCreateRadio: Creates a Radio button control for the GUI.
  • GUICtrlCreateSlider: Creates a Slider control for the GUI.
  • GUICtrlCreateTab: Creates a Tab control for the GUI.
  • GUICtrlCreateTabItem: Creates a TabItem control within an existing tab control in the GUI.
  • GUICtrlCreateTreeView: Creates a TreeView control for the GUI.
  • GUICtrlCreateTreeViewItem: Creates a TreeViewItem control for the GUI.
  • GUICtrlCreateUpdown: Creates an UpDown control for the GUI.
  • GUICtrlDelete: Deletes a control.
  • GUICtrlGetHandle: Returns the handle for a control and some special (item) handles (Menu, ContextMenu, TreeViewItem).
  • GUICtrlGetState: Gets the current state of a control.
  • GUICtrlRead: Read state or data of a control.
  • GUICtrlRecvMsg: Send a message to a control and retrieve information in lParam.
  • GUICtrlRegisterListViewSort: Register a user defined function for an internal listview sorting callback function.
  • GUICtrlSendMsg: Send a message to a control.
  • GUICtrlSendToDummy: Sends a message to a Dummy control.
  • GUICtrlSetBkColor: Sets the background color of a control.
  • GUICtrlSetColor: Sets the text color of a control.
  • GUICtrlSetCursor: Sets the mouse cursor icon for a particular control.
  • GUICtrlSetData: Modifies the data for a control.
  • GUICtrlSetDefBkColor: Sets the default background color of all the controls of the GUI window.
  • GUICtrlSetDefColor: Sets the default text color of all the controls of the GUI window.
  • GUICtrlSetFont: Sets the font for a control.
  • GUICtrlSetGraphic: Modifies the data for a control.
  • GUICtrlSetImage: Sets the bitmap or icon image to use for a control.
  • GUICtrlSetLimit: Limits the number of characters/pixels for a control.
  • GUICtrlSetOnEvent: Defines a user-defined function to be called when a control is clicked.
  • GUICtrlSetPos: Changes the position of a control within the GUI window.
  • GUICtrlSetResizing: Defines the resizing method used by a control.
  • GUICtrlSetState: Changes the state of a control.
  • GUICtrlSetStyle: Changes the style of a control.
  • GUICtrlSetTip: Sets the tip text associated with a control.
  • GUIDelete: Deletes a GUI window and all controls that it contains.
  • GUIGetCursorInfo: Gets the mouse cursor position relative to GUI window.
  • GUIGetMsg: Polls the GUI to see if any events have occurred.
  • GUIGetStyle: Retrieves the styles of a GUI window.
  • GUIRegisterMsg: Register a user defined function for a known Windows Message ID (WM_MSG).
  • GUISetAccelerators: Sets the accelerator table to be used in a GUI window.
  • GUISetBkColor: Sets the background color of the GUI window.
  • GUISetCoord: Sets absolute coordinates for the next control.
  • GUISetCursor: Sets the mouse cursor icon for a GUI window.
  • GUISetFont: Sets the default font for a GUI window.
  • GUISetHelp: Sets an executable file that will be run when F1 is pressed.
  • GUISetIcon: Sets the icon used in a GUI window.
  • GUISetOnEvent: Defines a user function to be called when a system button is clicked.
  • GUISetState: Changes the state of a GUI window.
  • GUISetStyle: Changes the styles of a GUI window.
  • GUIStartGroup: Defines that any subsequent controls that are created will be "grouped" together.
  • GUISwitch: Switches the current window used for GUI functions.
  • HotKeySet: Sets a hotkey that calls a user function.
  • HWnd: Converts an expression into an HWND handle. (7d90288)
  • InputBox: Displays an input box to ask the user to enter a string.
  • IsHWnd: Checks if a variable's base type is a pointer and window handle. (7d90288)
  • IsPtr: Checks if a variable's base type is a pointer. (7d90288)
  • MouseClick: Perform a mouse click operation.
  • MouseClickDrag: Perform a mouse click and drag operation.
  • MouseDown: Perform a mouse down event at the current mouse position.
  • MouseGetCursor: Returns the cursor ID Number for the current Mouse Cursor.
  • MouseGetPos: Retrieves the current position of the mouse cursor.
  • MouseMove: Moves the mouse pointer.
  • MouseUp: Perform a mouse up event at the current mouse position.
  • MouseWheel: Moves the mouse wheel up or down.
  • MsgBox: Displays a simple message box with optional timeout. (40a374f)
  • PixelChecksum: Generates a checksum for a region of pixels.
  • PixelGetColor: Returns a pixel color according to x,y pixel coordinates.
  • PixelSearch: Searches a rectangle of pixels for the pixel color provided.
  • ProgressOff: Turns Progress window off.
  • ProgressOn: Creates a customizable progress bar window.
  • ProgressSet: Sets the position and/or text of a previously created Progress bar window.
  • Ptr: Converts an expression into a pointer variant. (7d90288)
  • Send: Sends simulated keystrokes to the active window.
  • SendKeepActive: Attempts to keep a specified window active during Send().
  • SplashImageOn: Creates a customizable image popup window.
  • SplashOff: Turns SplashText or SplashImage off.
  • SplashTextOn: Creates a customizable text popup window.
  • ToolTip: Creates a tooltip anywhere on the screen.
  • TrayCreateItem: Creates a menuitem control for the tray.
  • TrayCreateMenu: Creates a menu control for the tray menu.
  • TrayGetMsg: Polls the tray to see if any events have occurred.
  • TrayItemDelete: Deletes a menu/item control from the tray menu.
  • TrayItemGetHandle: Returns the handle for a tray menu(item).
  • TrayItemGetState: Gets the current state of a control.
  • TrayItemGetText: Gets the itemtext of a tray menu/item control.
  • TrayItemSetOnEvent: Defines a user-defined function to be called when a tray item is clicked.
  • TrayItemSetState: Sets the state of a tray menu/item control.
  • TrayItemSetText: Sets the itemtext of a tray menu/item control.
  • TraySetClick: Sets the clickmode of the tray icon - what mouseclicks will display the tray menu.
  • TraySetIcon: Loads/Sets a specified tray icon.
  • TraySetOnEvent: Defines a user function to be called when a special tray action happens.
  • TraySetPauseIcon: Loads/Sets a specified tray pause icon.
  • TraySetState: Sets the state of the tray icon.
  • TraySetToolTip: (Re)Sets the tooltip text for the tray icon.
  • TrayTip: Displays a balloon tip from the AutoIt Icon.
  • WinActivate: Activates (gives focus to) a window.
  • WinActive: Checks to see if a specified window exists and is currently active.
  • WinClose: Closes a window.
  • WinExists: Checks to see if a specified window exists.
  • WinFlash: Flashes a window in the taskbar.
  • WinGetCaretPos: Returns the coordinates of the caret in the foreground window.
  • WinGetClassList: Retrieves the classes from a window.
  • WinGetClientSize: Retrieves the size of a given window's client area.
  • WinGetHandle: Retrieves the internal handle of a window.
  • WinGetPos: Retrieves the position and size of a given window.
  • WinGetProcess: Retrieves the Process ID (PID) associated with a window.
  • WinGetState: Retrieves the state of a given window.
  • WinGetText: Retrieves the text from a window.
  • WinGetTitle: Retrieves the full title from a window.
  • WinKill: Forces a window to close.
  • WinList: Retrieves a list of windows.
  • WinMenuSelectItem: Invokes a menu item of a window.
  • WinMinimizeAll: Minimizes all windows.
  • WinMinimizeAllUndo: Undoes a previous WinMinimizeAll function.
  • WinMove: Moves and/or resizes a window.
  • WinSetOnTop: Change a window's "Always On Top" attribute.
  • WinSetState: Shows, hides, minimizes, maximizes, or restores a window.
  • WinSetTitle: Changes the title of a window.
  • WinSetTrans: Sets the transparency of a window.
  • WinWait: Pauses execution of the script until the requested window exists.
  • WinWaitActive: Pauses execution of the script until the requested window is active.
  • WinWaitClose: Pauses execution of the script until the requested window does not exist.
  • WinWaitNotActive: Pauses execution of the script until the requested window is not active.

Fix "ObjectDisposedException" on main thread in interactive mode

Steps to reproduce

  1. Create an AutoIt3 script file with a small program (can be a one-liner)
  2. Start the interpreter in interactive mode: autoit3 -minteractive
  3. Type #include "<path to script file>"
Unhandled exception. System.ObjectDisposedException: Cannot access a disposed object.                                                                         โ”‚
   at System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(TimeoutTracker timeout)                                                                                                  โ”‚
   at Unknown6656.Common.ConcurrentHashSet`1.ToArray()                                                                                                                                    โ”‚
   at Unknown6656.AutoIt3.Runtime.VariableScope.get_LocalVariables() in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\Runtime\VariableScope.cs:line 28                 โ”‚
   at Unknown6656.AutoIt3.CLI.InteractiveShell.UpdateSuggestions() in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\CommandLineInterface\InteractiveShell.cs:line 724  โ”‚
   at Unknown6656.AutoIt3.CLI.InteractiveShell.HandleKeyPress() in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\CommandLineInterface\InteractiveShell.cs:line 340     โ”‚
   at Unknown6656.AutoIt3.CLI.InteractiveShell.MainLoop() in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\CommandLineInterface\InteractiveShell.cs:line 201           โ”‚
   at Unknown6656.AutoIt3.CLI.InteractiveShell.Run() in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\CommandLineInterface\InteractiveShell.cs:line 150                โ”‚
   at Unknown6656.AutoIt3.CLI.MainProgram.<>c__DisplayClass42_1.<Start>b__4(CommandLineOptions opt) in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\CommandLineInterface\MainProgram.cs:line 271
   at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult`1 result, Action`1 action)                                                                                            โ”‚
   at Unknown6656.AutoIt3.CLI.MainProgram.<>c__DisplayClass42_0.<Start>b__1() in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\CommandLineInterface\MainProgram.cs:line 204
   at Unknown6656.AutoIt3.Telemetry.<>c__DisplayClass19_0.<Measure>b__0() in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\Telemetry.cs:line 112                       โ”‚
   at Unknown6656.AutoIt3.Telemetry.Measure[T](TelemetryCategory category, Func`1 function) in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\Telemetry.cs:line 123
   at Unknown6656.AutoIt3.Telemetry.Measure(TelemetryCategory category, Action function) in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\Telemetry.cs:line 110
   at Unknown6656.AutoIt3.CLI.MainProgram.Start(String[] argv) in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\CommandLineInterface\MainProgram.cs:line 185
   at <Program>$.<Main>$(String[] args) in L:\Projects.VisualStudio\AutoItInterpreter\new\AutoItInterpreter\EntryPoint.cs:line 14

Implement Lambdas

maybe with the syntax

$my_func = Lambda($a, $b)
    return $a + $b
EndLambda

or:

$my_func = Lambda($a, $b) ->$a + $b

Implement all Au3 Macros

Implement the following missing macros:

  • @COM_EventObj: Object the COM event is being fired on. Only valid in a COM event function.
  • @ComputerName: Computer's network name.
  • @ComSpec: Value of %COMSPEC%, the SPECified secondary COMmand interpreter; primary for command line uses, e.g. Run(@comspec & " /k help | more")
  • @CPUArch: Returns "X86" when the CPU is a 32-bit CPU and "X64" when the CPU is 64-bit.
  • @DesktopCommonDir: Path to Desktop
  • @DesktopDepth: Depth of the primary display in bits per pixel.
  • @DesktopDir: Path to current user's Desktop
  • @DesktopHeight: Height of the primary display in pixels. (Vertical resolution)
  • @DesktopRefresh: Refresh rate of the primary display in hertz.
  • @DesktopWidth: Width of the primary display in pixels. (Horizontal resolution)
  • @DocumentsCommonDir: Path to Documents
  • @error: Status of the error flag. See the function SetError().
  • @exitCode: Exit code as set by Exit statement.
  • @exitMethod: Exit method. See the function OnAutoItExitRegister().
  • @extended: Extended function return - used in certain functions such as StringReplace().
  • @FavoritesCommonDir: Path to Favorites
  • @FavoritesDir: Path to current user's Favorites
  • @GUI_CtrlHandle: Last click GUI Control handle. Only valid in an event Function. See the GUICtrlSetOnEvent() function.
  • @GUI_CtrlId: Last click GUI Control identifier. Only valid in an event Function. See the GUICtrlSetOnEvent() function.
  • @GUI_DragFile: Filename of the file being dropped. Only valid on Drop Event. See the GUISetOnEvent() function.
  • @GUI_DragId: Drag GUI Control identifier. Only valid on Drop Event. See the GUISetOnEvent() function.
  • @GUI_DropId: Drop GUI Control identifier. Only valid on Drop Event. See the GUISetOnEvent() function.
  • @GUI_WinHandle: Last click GUI window handle. Only valid in an event Function. See the GUICtrlSetOnEvent() function.
  • @HomeDrive: Drive letter of drive containing current user's home directory.
  • @HomePath: Directory part of current user's home directory. To get the full path, use in conjunction with @homedrive.
  • @HomeShare: Server and share name containing current user's home directory.
  • @HotKeyPressed: Last hotkey pressed. See the HotKeySet() function.
  • @HOUR: Hours value of clock in 24-hour format. Range is 00 to 23
  • @IPAddress1: IP address of first network adapter. Tends to return 127.0.0.1 on some computers.
  • @IPAddress2: IP address of second network adapter. Returns 0.0.0.0 if not applicable.
  • @IPAddress3: IP address of third network adapter. Returns 0.0.0.0 if not applicable.
  • @IPAddress4: IP address of fourth network adapter. Returns 0.0.0.0 if not applicable.
  • @KBLayout: Returns code denoting Keyboard Layout. See Appendix for possible values.
  • @LocalAppDataDir: Path to current user's Local Application Data
  • @LogonDNSDomain: Logon DNS Domain.
  • @LogonDomain: Logon Domain.
  • @LogonServer: Logon server.
  • @MDAY: Current day of month. Range is 01 to 31
  • @MIN: Minutes value of clock. Range is 00 to 59
  • @MON: Current month. Range is 01 to 12
  • @MSEC: Milliseconds value of clock. Range is 000 to 999. The update frequency of this value depends on the timer resolution of the hardware and may not update every millisecond.
  • @MUILang: Returns code denoting Multi Language if available (Vista is OK by default). See Appendix for possible values.
  • @MyDocumentsDir: Path to My Documents target
  • @NumParams: Number of parameters used in calling the user function.
  • @OSArch: Returns one of the following: "X86", "IA64", "X64" - this is the architecture type of the currently running operating system.
  • @OSBuild: Returns the OS build number. For example, Windows 2003 Server returns 3790
  • @OSLang: Returns code denoting OS Language. See Appendix for possible values.
  • @OSServicePack: Service pack info in the form of "Service Pack 3".
  • @OSType: Returns "WIN32_NT" for XP/2003/Vista/2008/Win7/2008R2/Win8/2012/Win8.1/2012R2.
  • @OSVersion: Returns one of the following: "WIN_10", "WIN_81", "WIN_8", "WIN_7", "WIN_VISTA", "WIN_XP", "WIN_XPe", for Windows servers: "WIN_2016", "WIN_2012R2", "WIN_2012", "WIN_2008R2", "WIN_2008", "WIN_2003"".
  • @ProgramFilesDir: Path to Program Files folder
  • @ProgramsCommonDir: Path to Start Menu's Programs folder
  • @ProgramsDir: Path to current user's Programs (folder on Start Menu)
  • @ScriptDir: Directory containing the running script. Only includes a trailing backslash when the script is located in the root of a drive.
  • @ScriptFullPath: Equivalent to @ScriptDir & "" & @ScriptName
  • @ScriptLineNumber: Line number being executed - useful for debug statements (e.g. location of function call). Only significant in uncompiled scripts - note that #include files return their internal line numbering
  • @ScriptName: Filename of the running script.
  • @SEC: Seconds value of clock. Range is 00 to 59
  • @StartMenuCommonDir: Path to Start Menu folder
  • @StartMenuDir: Path to current user's Start Menu
  • @StartupCommonDir: Path to Startup folder
  • @StartupDir: current user's Startup folder
  • @SW_DISABLE: Disables the window.
  • @SW_ENABLE: Enables the window.
  • @SW_HIDE: Hides the window and activates another window.
  • @SW_LOCK: Lock the window to avoid repainting.
  • @SW_MAXIMIZE: Activates the window and displays it as a maximized window.
  • @SW_MINIMIZE: Minimizes the specified window and activates the next top-level window in the Z order.
  • @SW_RESTORE: Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window.
  • @SW_SHOW: Activates the window and displays it in its current size and position.
  • @SW_SHOWDEFAULT: Sets the show state based on the SW_ value specified by the program that started the application.
  • @SW_SHOWMAXIMIZED: Activates the window and displays it as a maximized window.
  • @SW_SHOWMINIMIZED: Activates the window and displays it as a minimized window.
  • @SW_SHOWMINNOACTIVE: Displays the window as a minimized window. This value is similar to @SW_SHOWMINIMIZED, except the window is not activated.
  • @SW_SHOWNA: Displays the window in its current size and position. This value is similar to @SW_SHOW, except the window is not activated.
  • @SW_SHOWNOACTIVATE: Displays a window in its most recent size and position. This value is similar to @SW_SHOWNORMAL, except the window is not activated.
  • @SW_SHOWNORMAL: Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
  • @SW_UNLOCK: Unlock window to allow painting.
  • @SystemDir: Path to the Windows' System (or System32) folder.
  • @TAB: Tab character, Chr(9)
  • @TempDir: Path to the temporary files folder.
  • @TRAY_ID: Last clicked item identifier during a TraySetOnEvent() or TrayItemSetOnEvent() action.
  • @TrayIconFlashing: Returns 1 if tray icon is flashing; otherwise, returns 0.
  • @TrayIconVisible: Returns 1 if tray icon is visible; otherwise, returns 0.
  • @UserName: ID of the currently logged on user.
  • @UserProfileDir: Path to current user's Profile folder.
  • @WDAY: Numeric day of week. Range is 1 to 7 which corresponds to Sunday through Saturday.
  • @WindowsDir: Path to Windows folder
  • @WorkingDir: Current/active working directory. Only includes a trailing backslash when the script is located in the root of a drive.
  • @YDAY: Current day of year. Range is 001 to 366 (or 001 to 365 if not a leap year)
  • @YEAR: Current four-digit year

See https://www.autoitscript.com/autoit3/docs/macros.htm

Update documentation

  • Update readmes
  • Write all XML doc comment (WIP)
  • Explain all changes/diffs in detail
  • Add roadmap
  • Add changelog/history
  • Create GitHub wiki (WIP)
    • Sidebar
    • Footer
    • Header (?)
    • Home
    • Overview
    • Installation
    • Usage
    • Features
      • Implementation status page/table
    • Extended Features
      • Non-local file resolution
      • One-Liners
      • Function assignments
      • Ref expressions
      • .NET new/delete expressions
      • Additional function reference
        • NET Interop
        • Threading API
        • Debugging API
        • .....
      • Additional macro reference
    • Extensibility
    • Tutorials
      • Creating a plugin
      • Creating a language pack
    • Contributing
      • Code of Conduct
    • Links / References

Implement Interop

  • P/Invoke
  • .NET instance calls
  • .NET static calls
  • .NET object creation
  • .NET struct return types/parameters

Add debugging/inspection methods

  • All threads
  • Interpreter overview
  • Current call frame
  • Current thread
  • All variables
  • Specific variables
  • variable table
  • yml output format
  • All COM objects
  • Global .NET storage

Implement non-GUI Au3 Functions

https://www.autoitscript.com/autoit3/docs/functions.htm

  • Abs: Calculates the absolute value of a number. (e232bf1)
  • ACos: Calculates the arcCosine of a number. (e232bf1)
  • AdlibRegister: Registers an Adlib function. (82868f3)
  • AdlibUnRegister: Unregisters an adlib function. (82868f3)
  • Asc: Returns the ASCII code of a character. (e232bf1)
  • AscW: Returns the unicode code of a character. (e232bf1)
  • ASin: Calculates the arcsine of a number. (e232bf1)
  • Assign: Assigns a variable by name with the data. (1786626)
  • ATan: Calculates the arctangent of a number. (e232bf1)
  • AutoItSetOption: Changes the operation of various AutoIt functions/parameters.
  • Beep: Plays back a beep to the user. (e232bf1)
  • Binary: Returns the binary representation of an expression. (c378034)
  • BinaryLen: Returns the number of bytes in a binary variant. (c378034)
  • BinaryMid: Extracts a number of bytes from a binary variant. (c378034)
  • BinaryToString: Converts a binary variant into a string. (c378034)
  • BitAND: Performs a bitwise AND operation. (0db7e4b)
  • BitNOT: Performs a bitwise NOT operation. (0db7e4b)
  • BitOR: Performs a bitwise OR operation. (0db7e4b)
  • BitRotate: Performs a bit shifting operation, with rotation. (0db7e4b)
  • BitShift: Performs a bit shifting operation. (0db7e4b)
  • BitXOR: Performs a bitwise exclusive OR (XOR) operation. (0db7e4b)
  • BlockInput: Disable/enable the mouse and keyboard. (f5c2121)
  • Call: Calls a user-defined or built-in function contained in first parameter. (1d9224c)
  • CDTray: Opens or closes the CD tray. (f5c2121)
  • Ceiling: Returns a number rounded up to the next integer. (0db44dc)
  • Chr: Returns a character corresponding to an ASCII code. (e232bf1)
  • ChrW: Returns a character corresponding to a unicode code. (e232bf1)
  • ConsoleRead: Read from the STDIN stream of the AutoIt script process. (e31736d)
  • ConsoleWrite: Writes data to the STDOUT stream. Some text editors can read this stream as can other programs which may be expecting data on this stream. (9490be6)
  • ConsoleWriteError: Writes data to the STDERR stream. Some text editors can read this stream as can other programs which may be expecting data on this stream. (9490be6)
  • Cos: Calculates the cosine of a number. (e232bf1)
  • Dec: Returns a numeric representation of a hexadecimal string. (5ad9b8c)
  • DirCopy: Copies a directory and all sub-directories and files (Similar to xcopy). (5ad9b8c)
  • DirCreate: Creates a directory/folder. (5ad9b8c)
  • DirGetSize: Returns the size in bytes of a given directory. (5ad9b8c)
  • DirMove: Moves a directory and all sub-directories and files. (5ad9b8c)
  • DirRemove: Deletes a directory/folder. (5ad9b8c)
  • DllCall: Dynamically calls a function in a DLL. (e2bc3ed)
  • DllCallAddress: Dynamically calls a function at a specific memory address. (430a796)
  • DllCallbackFree: Frees a previously created handle created with DllCallbackRegister. (a10409a)
  • DllCallbackGetPtr: Returns the pointer to a callback function that can be passed to the Win32 API. (a10409a)
  • DllCallbackRegister: Creates a user-defined DLL Callback function. (a10409a)
  • DllClose: Closes a previously opened DLL. (b877e1d)
  • DllOpen: Opens a DLL file for use in DllCall. (b877e1d)
  • DllStructCreate: Creates a C/C++ style structure to be used in DllCall.
  • DllStructGetData: Returns the data of an element of the struct.
  • DllStructGetPtr: Returns the pointer to the struct or an element in the struct.
  • DllStructGetSize: Returns the size of the struct in bytes.
  • DllStructSetData: Sets the data of an element in the struct.
  • DriveGetDrive: Returns an array containing the enumerated drives. (989db0c)
  • DriveGetFileSystem: Returns File System Type of a drive. (a018591)
  • DriveGetLabel: Returns Volume Label of a drive, if it has one. (a018591)
  • DriveGetSerial: Returns Serial Number of a drive. (672bbda)
  • DriveGetType: Returns drive type. (a018591)
  • DriveMapAdd: Maps a network drive. (31a3e1e)
  • DriveMapDel: Disconnects a network drive. (31a3e1e)
  • DriveMapGet: Retrieves the details of a mapped drive. (31a3e1e)
  • DriveSetLabel: Sets the Volume Label of a drive. (672bbda)
  • DriveSpaceFree: Returns the free disk space of a path in Megabytes. (a018591)
  • DriveSpaceTotal: Returns the total disk space of a path in Megabytes. (a018591)
  • DriveStatus: Returns the status of the drive as a string. (a018591)
  • EnvGet: Retrieves an environment variable. (5ad9b8c)
  • EnvSet: Writes an environment variable. (5ad9b8c)
  • EnvUpdate: Refreshes the OS environment. (989db0c)
  • Eval: Return the value of the variable defined by a string. (1786626)
  • Execute: Execute an expression. (1786626)
  • Exp: Calculates e to the power of a number. (0db7e4b)
  • FileChangeDir: Changes the current working directory. (9a41f88)
  • FileClose: Closes a previously opened file. (11cd7fb)
  • FileCopy: Copies one or more files. (9a41f88)
  • FileCreateNTFSLink: Creates an NTFS hardlink to a file or a directory. (11cd7fb)
  • FileCreateShortcut: Creates a shortcut (.lnk) to a file.
  • FileDelete: Delete one or more files. (9a41f88)
  • FileExists: Checks if a file or directory exists. (9a41f88)
  • FileFindFirstFile: Creates a search handle, defined by a path and file mask. (11cd7fb)
  • FileFindNextFile: Returns the next filename defined by the search handle. (11cd7fb)
  • FileFlush: Flushes the file's buffer to disk. (9a41f88)
  • FileGetAttrib: Returns a code string representing a file's attributes. (9a41f88)
  • FileGetEncoding: Determines the text encoding used in a file. (11cd7fb)
  • FileGetLongName: Returns the long path+name of the path+name passed. (9a41f88)
  • FileGetPos: Retrieves the current file position. (9a41f88)
  • FileGetShortcut: Retrieves details about a shortcut.
  • FileGetShortName: Returns the 8.3 short path+name of the path+name passed. (9a41f88)
  • FileGetSize: Returns the size of a file in bytes. (11cd7fb)
  • FileGetTime: Returns the time and date information for a file. (9a41f88)
  • FileGetVersion: Returns version information stored in a file.
  • FileInstall: Include and install a file with the compiled script.
  • FileMove: Moves one or more files. (9a41f88)
  • FileOpen: Opens a file for reading or writing. (9a41f88)
  • FileRead: Read in a number of characters from a previously opened file. (9a41f88)
  • FileReadLine: Read in a line of text from a previously opened text file. (9a41f88)
  • FileReadToArray: Reads the specified file into an array. (11cd7fb)
  • FileRecycle: Sends a file or directory to the recycle bin. (9a41f88)
  • FileRecycleEmpty: Empties the recycle bin. (9a41f88)
  • FileSetAttrib: Sets the attributes of one or more files/directories. (11cd7fb)
  • FileSetEnd: Sets the end of the file at the current file position. (11cd7fb)
  • FileSetPos: Sets the current file position. (9a41f88)
  • FileSetTime: Sets the timestamp of one of more files. (9a41f88)
  • FileWrite: Write text/data to the end of a previously opened file. (9a41f88)
  • FileWriteLine: Append a line of text to the end of a previously opened text file. (9a41f88)
  • Floor: Returns a number rounded down to the closest integer. (0db44dc)
  • FtpSetProxy: Sets the internet proxy to use for ftp access.
  • FuncName: Returns the name of a function stored in a variable. (0db44dc)
  • Hex: Returns a string representation of an integer or of a binary type converted to hexadecimal. (c378034)
  • HttpSetProxy: Sets the internet proxy to use for http access.
  • HttpSetUserAgent: Sets the HTTP user-agent string which is sent with all Inet requests.
  • InetClose: Closes a handle returned from InetGet(). (c70b2e8)
  • InetGet: Downloads a file from the internet using the HTTP, HTTPS or FTP protocol. (c70b2e8)
  • InetGetInfo: Returns detailed data for a handle returned from InetGet(). (c70b2e8)
  • InetGetSize: Returns the size (in bytes) of a file located on the internet. (c70b2e8)
  • InetRead: Downloads a file from the internet using the HTTP, HTTPS or FTP protocol. (c70b2e8)
  • IniDelete: Deletes a value from a standard format .ini file. (190f4f0)
  • IniRead: Reads a value from a standard format .ini file. (190f4f0)
  • IniReadSection: Reads all key/value pairs from a section in a standard format .ini file. (190f4f0)
  • IniReadSectionNames: Reads all sections in a standard format .ini file. (190f4f0)
  • IniRenameSection: Renames a section in a standard format .ini file. (190f4f0)
  • IniWrite: Writes a value to a standard format .ini file. (190f4f0)
  • IniWriteSection: Writes a section to a standard format .ini file. (190f4f0)
  • Int: Returns the integer (whole number) representation of an expression. (c378034)
  • IsAdmin: Checks if the current user has full administrator privileges. (da89579)
  • IsArray: Checks if a variable is an array type. (c378034)
  • IsBinary: Checks if a variable or expression is a binary type. (c378034)
  • IsBool: Checks if a variable's base type is boolean. (c378034)
  • IsDeclared: Check if a variable has been declared. (1786626)
  • IsDllStruct: Checks if a variable is a DllStruct type.
  • IsFloat: Checks if the value of a variable or expression has a fractional component. (c378034)
  • IsFunc: Checks if a variable or expression is a function type. (c378034)
  • IsInt: Checks if the value of a variable or expression has no fractional component. (c378034)
  • IsKeyword: Checks if a variable is a keyword (for example, Default). (c378034)
  • IsNumber: Checks if a variable's base type is numeric. (c378034)
  • IsObj: Checks if a variable or expression is an object type. (c378034)
  • IsString: Checks if a variable is a string type. (c378034)
  • Log: Calculates the natural logarithm of a number. (c378034)
  • MemGetStats: Retrieves memory related information.
  • Mod: Performs the modulus operation. (c378034)
  • Number: Returns the numeric representation of an expression. (c378034)
  • ObjCreate: Creates a reference to a COM object from the given classname. (989db0c)
  • ObjCreateInterface: Creates a reference to an object from the given classname/object pointer, interface identifier and description string.
  • ObjEvent: Handles incoming events from the given Object.
  • ObjGet: Retrieves a reference to a COM object from an existing process or filename.
  • ObjName: Returns the name or interface description of an Object. (53153e6)
  • OnAutoItExitRegister: Registers a function to be called when AutoIt exits. (a52df02)
  • OnAutoItExitUnRegister: UnRegisters a function that was called when AutoIt exits. (a52df02)
  • Ping: Pings a host and returns the roundtrip-time. (a018591)
  • ProcessClose: Terminates a named process. (ac2e92e)
  • ProcessExists: Checks to see if a specified process exists. (ac2e92e)
  • ProcessGetStats: Returns an array about Memory or IO infos of a running process. (ac2e92e)
  • ProcessList: Returns an array listing the currently running processes (names and PIDs). (ac2e92e)
  • ProcessSetPriority: Changes the priority of a process. (ac2e92e)
  • ProcessWait: Pauses script execution until a given process exists. (ac2e92e)
  • ProcessWaitClose: Pauses script execution until a given process does not exist. (ac2e92e)
  • Random: Generates a pseudo-random float-type number. (a018591)
  • RegDelete: Deletes a key or value from the registry. (cdfd24e)
  • RegEnumKey: Reads the name of a subkey according to its instance. (f3c8f77)
  • RegEnumVal: Reads the name of a value according to its instance. (f3c8f77)
  • RegRead: Reads a value from the registry. (cdfd24e)
  • RegWrite: Creates a key or value in the registry. (cdfd24e)
  • Round: Returns a number rounded to a specified number of decimal places. (0db44dc)
  • Run: Runs an external program. (06faa61)
  • RunAs: Runs an external program under the context of a different user. (06faa61)
  • RunAsWait: Runs an external program under the context of a different user and pauses script execution until the program finishes. (06faa61)
  • RunWait: Runs an external program and pauses script execution until the program finishes. (06faa61)
  • SetError: Manually set the value of the @error macro (and optionally @Extended, and "Return Value"). (0db7e4b)
  • SetExtended: Manually set the value of the @Extended macro. (0db7e4b)
  • ShellExecute: Runs an external program using the ShellExecute API. (377ca1c)
  • ShellExecuteWait: Runs an external program using the ShellExecute API and pauses script execution until it finishes. (377ca1c)
  • Shutdown: Shuts down the system. (a018591)
  • Sin: Calculates the sine of a number. (e232bf1)
  • Sleep: Pause script execution. (3cf8470)
  • SoundPlay: Play a sound file. (d57a114)
  • SoundSetWaveVolume: Sets the system wave volume by percent.
  • Sqrt: Calculates the square-root of a number. (0db7e4b)
  • SRandom: Set Seed for random number generation. (a018591)
  • StatusbarGetText: Retrieves the text from a standard status bar control.
  • StderrRead: Reads from the STDERR stream of a previously run child process.
  • StdinWrite: Writes a number of characters to the STDIN stream of a previously run child process.
  • StdioClose: Closes all resources associated with a process previously run with STDIO redirection.
  • StdoutRead: Reads from the STDOUT stream of a previously run child process.
  • String: Returns the string representation of an expression. (c378034)
  • StringAddCR: Takes a string and prefixes all linefeed characters ( Chr(10) ) with a carriage return character ( Chr(13) ). (b577bfd)
  • StringCompare: Compares two strings with options. (b577bfd)
  • StringFormat: Returns a formatted string (similar to the C sprintf() function). (cbb42d3)
  • StringFromASCIIArray: Converts an array of ASCII codes to a string. (d48c0b6)
  • StringInStr: Checks if a string contains a given substring. (d48c0b6)
  • StringIsAlNum: Checks if a string contains only alphanumeric characters. (c378034)
  • StringIsAlpha: Checks if a string contains only alphabetic characters. (c378034)
  • StringIsASCII: Checks if a string contains only ASCII characters in the range 0x00 - 0x7f (0 - 127). (c378034)
  • StringIsDigit: Checks if a string contains only digit (0-9) characters. (c378034)
  • StringIsFloat: Checks if a string is a floating point number. (c378034)
  • StringIsInt: Checks if a string is an integer. (c378034)
  • StringIsLower: Checks if a string contains only lowercase characters. (c378034)
  • StringIsSpace: Checks if a string contains only whitespace characters. (c378034)
  • StringIsUpper: Checks if a string contains only uppercase characters. (c378034)
  • StringIsXDigit: Checks if a string contains only hexadecimal digit (0-9, A-F) characters. (c378034)
  • StringLeft: Returns a number of characters from the left-hand side of a string. (b577bfd)
  • StringLen: Returns the number of characters in a string. (b577bfd)
  • StringLower: Converts a string to lowercase. (b577bfd)
  • StringMid: Extracts a number of characters from a string. (b577bfd)
  • StringRegExp: Check if a string fits a given regular expression pattern. (d48c0b6)
  • StringRegExpReplace: Replace text in a string based on regular expressions. (d48c0b6)
  • StringReplace: Replaces substrings in a string. (d48c0b6)
  • StringReverse: Reverses the contents of the specified string. (d48c0b6)
  • StringRight: Returns a number of characters from the right-hand side of a string. (b577bfd)
  • StringSplit: Splits up a string into substrings depending on the given delimiters. (c70b2e8)
  • StringStripCR: Removes all carriage return values ( Chr(13) ) from a string. (b577bfd)
  • StringStripWS: Strips the white space in a string. (b577bfd)
  • StringToASCIIArray: Converts a string to an array containing the ASCII code of each character. (b577bfd)
  • StringToBinary: Converts a string into binary data. (c378034)
  • StringTrimLeft: Trims a number of characters from the left hand side of a string. (b577bfd)
  • StringTrimRight: Trims a number of characters from the right hand side of a string. (b577bfd)
  • StringUpper: Converts a string to uppercase. (b577bfd)
  • Tan: Calculates the tangent of a number. (e232bf1)
  • TCPAccept: Permits an incoming connection attempt on a socket. (a335faa)
  • TCPCloseSocket: Closes a TCP socket. (a335faa)
  • TCPConnect: Create a socket connected to an existing server. (a335faa)
  • TCPListen: Creates a socket listening for an incoming connection. (a335faa)
  • TCPNameToIP: Converts an Internet name to IP address. (3cf8470)
  • TCPRecv: Receives data from a connected socket. (a335faa)
  • TCPSend: Sends data on a connected socket. (a335faa)
  • TCPShutdown: TCP/UDP services. (a335faa)
  • TCPStartup: Starts TCP or UDP services. (a335faa)
  • TimerDiff: Returns the difference in time from a previous call to TimerInit(). (3cf8470)
  • TimerInit: Returns a handle that can be passed to TimerDiff() to calculate the difference in milliseconds. (3cf8470)
  • UBound: Returns the size of array dimensions or the number of keys in a map. (a335faa)
  • UDPBind: Create a socket bound to an incoming connection. (3cf8470)
  • UDPCloseSocket: Close a UDP socket. (3cf8470)
  • UDPOpen: Open a socket connected to an existing server . (3cf8470)
  • UDPRecv: Receives data from an opened socket. (3cf8470)
  • UDPSend: Sends data on an opened socket. (3cf8470)
  • UDPShutdown: TCP/UDP services. (a335faa)
  • UDPStartup: Starts TCP or UDP services. (a335faa)
  • VarGetType: Returns the internal type representation of a variant. (c70b2e8)

Improve language packs

  • Add more language packs
    • GER
    • FRA
    • ITA
    • ESP
    • RUS?
    • ...
  • Move debug messages to language packs.
  • move to YAML format
  • add support for language pack extensions? (e.g. via plugin providers)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.