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 Issues

Implement Interop

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

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

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)

Implement Lambdas

maybe with the syntax

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

or:

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

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

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

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

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.