<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.autoitscript.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nine</id>
	<title>AutoIt Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.autoitscript.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nine"/>
	<link rel="alternate" type="text/html" href="https://www.autoitscript.com/wiki/Special:Contributions/Nine"/>
	<updated>2026-04-12T16:10:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User_Defined_Functions&amp;diff=15147</id>
		<title>User Defined Functions</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User_Defined_Functions&amp;diff=15147"/>
		<updated>2025-03-30T13:14:02Z</updated>

		<summary type="html">&lt;p&gt;Nine: /* Parallel/concurrent processing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
This page is a listing of libraries of &#039;&#039;&#039;user defined functions&#039;&#039;&#039; (UDF). These libraries have been written to allow easy integration into your own scripts and are a very valuable resource for any programmer.&amp;lt;br /&amp;gt;&lt;br /&gt;
This list is probably not complete (394 UDFs on 2025-03-22), but constantly supplemented.&lt;br /&gt;
If you do not find a solution here, ask a new question on the [https://www.autoitscript.com/forum/forum/2-general-help-and-support/ forum].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
The listed UDFs might have been written for older versions of AutoIt. So there is no guarantee that every UDF works smoothly with newer versions.&amp;lt;br /&amp;gt;&lt;br /&gt;
None of the UDFs has been tested by the maintainers of this list so you as a user need to make sure that they deliver the expected results.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;When will an UDF be added to this list?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
It should meet all/most of the general requirements for UDFs as described [[UDF-spec|here]].&amp;lt;br&amp;gt;&lt;br /&gt;
In addition the following requirements should be met:&lt;br /&gt;
* &#039;&#039;&#039;Documentation&#039;&#039;&#039;: So users can tell what the UDF is intended to do (&#039;&#039;mandatory&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Examples&#039;&#039;&#039;: So users can get an idea how to use the UDF. The more the better (&#039;&#039;mandatory&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Operating systems&#039;&#039;&#039;: Should support the latest Microsoft OS (&#039;&#039;mandatory&#039;&#039;) plus as many predecessors as possible (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;AutoIt&#039;&#039;&#039;: Should support the latest version of AutoIt (&#039;&#039;mandatory&#039;&#039;) plus as many predecessors as possible (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Author&#039;&#039;&#039;: The author should still be active on the forum so he can reply to questions (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What to do when one of your UDFs is missing?&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Please send a [https://www.autoitscript.com/forum/messenger/compose/?to=7903 PM] to user water. Add a short description of the UDF and a link to your post in the [https://www.autoitscript.com/forum/forum/9-autoit-example-scripts/ Example Scripts] or [https://www.autoitscript.com/forum/forum/49-autoit-projects-and-collaboration/ Projects and Collaboration] forum.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Added in the past two years&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Date !! Section !! Creator !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 2025-03-22 || [[User_Defined_Functions#GUI_Additions|GUI Additions]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=212767 Round Corner UDF] - Uses simple basic GUI functions to create round corners without the use of GDI+.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-02-26 || [[User_Defined_Functions#Controls|Controls]] || Kanashius || [https://www.autoitscript.com/forum/index.php?showtopic=173926 FileExplorer Treeview and Listview] - Create a Treeview and/or Listview able to browse files.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-16 || [[User_Defined_Functions#Parallel.2Fconcurrent processing|Parallel/concurrent processing]] || Gianni || [https://www.autoitscript.com/forum/index.php?showtopic=192157 MultiTask] - Easily run and manage many processes.&lt;br /&gt;
|- &lt;br /&gt;
| 2025-01-12 || [[User_Defined_Functions#GUI_Additions|GUI Additions]] || NoNameCode || [https://www.autoitscript.com/forum/index.php?showtopic=211475 Darkmode] - Dark mode for AutoIt&#039;s Win32GUIs.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-12 || [[User_Defined_Functions#Parallel.2Fconcurrent processing|Parallel/concurrent processing]] || Network_Guy || [https://www.autoitscript.com/forum/index.php?showtopic=196993 MultiTasking] - Enables execution of a function in a separate process as many times needed with or without pausing the main script.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-11 || [[User_Defined_Functions#Script_Coding.2FAnalyzing.2FDebugging|Script Coding/Analyzing/Debugging]] || t0nZ || [https://www.autoitscript.com/forum/index.php?showtopic=195100 Gollog] - Logs made easy.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-02 || [[User_Defined_Functions#Parallel.2Fconcurrent processing|Parallel/concurrent processing]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=211683 PMT] - Pseudo Multi Threading - as close as possible with simple AutoIt.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-02 || [[User_Defined_Functions#Parallel.2Fconcurrent processing|Parallel/concurrent processing]] || argumentum || [https://www.autoitscript.com/forum/index.php?showtopic=199177 Fork] - Run something and not get the main loop stuck waiting, unresponsive, as if frozen.&lt;br /&gt;
|-&lt;br /&gt;
| 2024-10-21 || [[User_Defined_Functions#Controls|Controls]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=204283 Date Range Picker] - Date Range Picker Control.&lt;br /&gt;
|-&lt;br /&gt;
| 2024-10-06 || [[User_Defined_Functions#Maths|Maths]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=212357 Linear Algebra] - BLAS/LAPACK-based Linear Algebra and nonlinear adjustment UDF.&lt;br /&gt;
|-&lt;br /&gt;
| 2024-03-27 || [[User_Defined_Functions#Script_Coding.2FAnalyzing.2FDebugging|Script Coding/Analyzing/Debugging]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=211718 FuzzyString] - Fuzzy string comparison and search in string arrays.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-11-14 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || TheXman || [https://www.autoitscript.com/forum/index.php?showtopic=208932 Xml2Json] - Transform XML to JSON.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-10-30 || [[User_Defined_Functions#Hardware|Hardware]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=210968 Printer Manager] - Manage printers with winspool.drv DLL.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-10-30 || [[User_Defined_Functions#Controls|Controls]] || Andreik || [https://www.autoitscript.com/forum/index.php?showtopic=211024 Toggle Button] - Create simple toggle buttons.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-10-01 || [[User_Defined_Functions#Encryption_and_hash|Encryption and hash]] || willichan || [https://www.autoitscript.com/forum/index.php?showtopic=210901 Enigma] - Simple encryption based on the Enigma Machine.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-09-06 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || willichan || [https://www.autoitscript.com/forum/index.php?showtopic=151116 DIF] - Read/write DIF (Data Interchange Format) files.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-07-27 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || AspirinJunkie || [https://www.autoitscript.com/forum/imndex.php?showtopic=209526 xlsxNative] - Read and write xlsx files without excel.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-07-27 || [[User_Defined_Functions#OpenOffice.2FLibreOffice|OpenOffice/LibreOffice]] || donnyh13 || [https://www.autoitscript.com/forum/index.php?showtopic=210514 LibreOffice Writer] - A huge list of functions for LibreOffice Writer.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Place the Table of contents (TOC) here --&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Automation ==&lt;br /&gt;
&lt;br /&gt;
===Browsers===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154439 Chrome (by seangriffin)] - Automate the most common tasks in Chrome with this UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95595 Firefox (by Stilgar)] - A little less support for automation than IE, but still very good.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167661 Firefox (by Danp2)] - Modified newer version of Stilgar Firefox UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/224-firefox-profile-backup/ FireFox Profile Backup 1.0 (by careca)] - Backup or restore your firefox profile. The application searches for the profile in home drive that will be the one to backup.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124330 _FF_AutoLogin (by Stilgar)] - This is a auto-login function and login-function-generator for FireFox and the FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=92035 _FF_DM (by Stilgar)] - UDF to control the FireFox Download-Manager (not the download-window).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91650 _FF_FoxBox (by Stilgar)] - UDF to control Fox!Box (A Mozilla Firefox extension for the AVM FRITZ!Box) with FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91665 _FF_Screengrab (by Stilgar)] - UDF to control Screengrab! (FireFox-AddOn) with FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124330 _HTML (by Stilgar)] - Get informations from any HTML (XML) source, without any browser.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166542 HTMLDocumentEvents (by SmOke_N)] - Track IE document events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167035 IEEx (by SmOke_N)] - IE extended library with some Javascript options.&lt;br /&gt;
* Internet Explorer (by DaleHohm et al.) - IE library that is now supplied with a standard AutoIt install.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=153520 IUIAutomation MS framework (by junkew)] - IUIAutomation MS framework to automate chrome, FF, IE etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149203 NavInfo (by Nessie)] - With this UDF you can check if a specified browser/software is installed and which version is being used.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=61090 Opera (by MrCreatoR,)] - Automate the most common tasks in Opera with this UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191990 WebDriver (by Danp2)] - W3C compliant Webriver UDF.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Office===&lt;br /&gt;
Some features of Microsoft&#039;s Office products are proprietary and cannot readily be manipulated.  Sometimes workarounds are required.&amp;lt;br&amp;gt;&amp;lt;u&amp;gt;[[Known issues with Microsoft Office automation.|This page]]&amp;lt;/u&amp;gt; is dedicated to identifying those issues, provide explanations and list solutions or workarounds.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32144 Microsoft Office Access (by randallc)] - Automate Microsoft Access.&lt;br /&gt;
* Microsoft Office Excel (by water et al.) - This UDF is included in AutoIt. Link to the [[Excel_UDF|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135312 Microsoft Office Excel Charts (by water, GreenCan)] - Creating charts using Microsoft Excel.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=204034 Microsoft Office Excel Pivot Tables (by SudeepJD)] - Create and Update Excel Pivot Tables and Charts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126305 Microsoft Office Outlook (Items) (by water)] - Automate Microsoft Outlook Items. Link to the [[OutlookEX_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202451 Microsoft Office Outlook (GUI) (by water)] - Automate Microsoft Outlook GUI. Link to the [[OutlookEX_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197346 Microsoft Office Outlook Tools (by water)] - Built on top of the OutlookEX UDF it offers some often needed extended functionality (import/export ics/vcf files etc.). Link to the [[OutlookTools|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50254 Microsoft Office PowerPoint (by Toady)] - Automate Microsoft PowerPoint.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=178783 Microsoft Office PowerPoint (by water)] - Automate Microsoft PowerPoint. Link to the [[Powerpoint|documentation]] pages.&lt;br /&gt;
* Microsoft Office Word (by water et al.) - This UDF is included in AutoIt. Link to the [[Word_UDF|documentation]] pages.&lt;br /&gt;
&lt;br /&gt;
===OpenOffice/LibreOffice===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210514 LibreOffice Writer (by donnyh13)] - A huge list of functions for LibreOffice Writer.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151530 OOo/LibO Calc (by GMK)] - OpenOfficeCalc UDF (works also for Libre Office).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=185932 OpenOffice/LibreOffice Spell Checker (by GMK)] - Function to validate words, and show spell alternatives.&lt;br /&gt;
&lt;br /&gt;
===Other Applications===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106163 Active Directory (by water)] - Extensive library to control and manipulate the Windows active directory ([https://www.autoitscript.com/forum/files/file/355-ad-active-directory-udf/ Download]). Link to the [[Active_Directory_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87956 Java (by seangriffin)] - Creates an access bridge between your application and a Java application. Allowing you to automate some Java applications.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=86574 SAP (by seangriffin)] - SAP business management automation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149540 SAPWizard (by ozmike)] - SAPWizard UDF.&lt;br /&gt;
&lt;br /&gt;
== Script Coding/Analyzing/Debugging ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209528 ArrayCombinations (by AspirinJunkie)] - Different ways of composing elements of a set.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155442 ArrayMultiColSort (by Melba23)] - Function to sort a 2D array on several columns.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209523 ArrayPlus (by AspirinJunkie)] - Functions for flexible Array handling (create, extract, rebuild, sort, filter, find, print)&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=180467 ArrayWorkshop (by czardas)] - Multidimensional array functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=59174 Associative array functions (by Nutster)] - Manage a version of associative arrays in single AutoIt variables. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=198929 AutoIt error logger (AUERLO) (by user4157124)] - File- and stdout (etc.) output of messages, errors, exit method and -code, etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=110379 AutoItObject (by ProgAndy and others)] - Brings the Object Orientation programming paradigm to AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=112879 AutoIt Syntax Highlight (by MrCreatoR)] - Highlights AutoIt v3 syntax code to html/bbcode format.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191488 cDebug (by c.haslam)] - Dumps the values of all AutoIt subtypes and expressions including nested arrays, DLL structs and maps.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195882 ErrorLog (by mLipok)] - Logs program activities and errors to different output locations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211718 FuzzyString (by AspirinJunkie)] - Fuzzy string comparison and search in string arrays.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143167 GetOpt (by dany)] - Parse GNU and DOS style command line options similar to getopt().&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195100 Gollog (by t0nZ)] - Logs made easy.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=156196 Log4a (by zorphnog)] - Logging library loosely based upon the log4j and NLog libaries.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195862 Loga (by Danyfirex)] - Simple logging library to keep track of code with an integrated console.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119032 Log UDF (by Yashied)] - Create a text log files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202832 OnDebugMsgBox (by argumentum)] - Catch the dreaded &amp;quot;AutoIt Error&amp;quot; MsgBox and prettify or hide it.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209529 Set (by AspirinJunkie)] - Provides a set data type and brings the corresponding mathematical functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=200660 Variants and Safearrays (by LarsJ)] - Create/access/process Variants and SafeArrays.&lt;br /&gt;
&lt;br /&gt;
=== Inter Process Communications ===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202485 AppInteract (by MrCreatoR)] - Reliably pass arrays or other types between processes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=205109 AutoItSharedData (by SEuBo)] - Create a shared data storage, a simple AutoItObject-Object, using AutoItObject_Internal.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=188991 Autoit-Socket-IO (by tarretarretarre)] - Event driven TCP/IP wrapper inspired by Socket.IO with focus on user friendliness and long term sustainability.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126936 Container (by MrCreatoR)] - Scripts interaction method. Allows to transfer whole arrays as data, and even COM objects.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=55994 DDEML (by doudou)] - Use your AutoIt script as DDE client or server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=193277 FMIPC (by argumentum)] - IPC via FileMapping.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127615 Interprocess (by JScript)] - Remotely execute a function in another script (using Mailslot).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=193158 IPC_IO (by JohnWIlling)] - IPC library supporting multiple connection types (such as: Named Pipe, File, TCP, SharedMemory, MailSlot).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202618 IPC Techniques through ROT Objects (by LarsJ)] - Implementing IRunningObjectTable Interface.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106710 Mailslot (by trancexx)] - IPC using Mailslots.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=204734 Overlapped Named Pipe IPC (by Nine)] - Very fast interprocess communication that could be used between VBS or AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169797 Pool - Post Office for Organized Labour (by RTFC)] - Provides multiple AutoIt processes with an infrastructure for exchanging messages, data, and remote-control instructions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202587 WCD IPC (by Nine)] - Framework for Inter Process Communication using Windows Messages WM_COPYDATA.&lt;br /&gt;
&lt;br /&gt;
=== Parallel/concurrent processing ===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=199177 Fork (by argumentum)] - Run something and not get the main loop stuck waiting, unresponsive, as if frozen.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186853 _Multiprocess (by jguinch)] - Run several external programs at the same time and retrieve the exit code of each process.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=192157 MultiTask (by Gianni)] - Easily run and manage many processes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=196993 MultiTasking (by Network_Guy)] - Enables execution of a function in a separate process as many times needed with or without pausing the main script.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211683 PMT (by Nine)] - Pseudo Multi Threading - as close as possible with simple AutoIt.&lt;br /&gt;
&lt;br /&gt;
== Files, Databases and web connections ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=180850 ADO (by mLipok)] - A modifed version of the _SQL UDF to access all kind of databases (MSSQL, MySQL, PostgreSQL, SQLite, MS ACCESS, XLS, TXT, and many other which use ADO and ODBC).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105875 ADODB (by spudw2k)] - ADODB Example.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=176895 AXML (by Aipion)] - This is a Wrapper for Pugixml, made with C++.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145142 DBF (by funkey)] - dBase database read and write with DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/114406-csv-file-to-multidimensional-array/?do=findComment&amp;amp;comment=799820 CSV (by ProgAndy)] - Read/write CSV files to/from 2D arrays.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197909 CSV (by seangriffin)] - Manipulate CSV files using SQLite.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155748 CSVSplit (by czardas)] - Convert to and from CSV format.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151116 DIF (by willichan)] - Read/write DIF (Data Interchange Format) files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119238 Excel file generation (by jerome)] - Excel file generation (multi-sheet workbook) without the need to have Excel installed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143866 Excel XML (by FireFox)] - Work with SpreadsheetML (Open XML file formats).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155905 EXml (by jdelaney)] - Create Excel file (SpreadsheetML) through &amp;quot;Microsoft.XMLDOM&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116072 EzMySql (by Yoriz)] - Use MySQL Databases with AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148232 _FileGetProperty (by BrewManNH)] - Retrieve properties of a file.Xml2Json&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94920 FireBird (by eltorro)] - FireBird, Interbase DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197421 jq (by TheXman)] - Brings the power and flexibility of jq (an open-source command-line based JSON processor) to AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209502 JSON (by AspirinJunkie)] - Interacting with JSON data in AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=104150 JSON (by Gabriel13)] - RFC4627 compliant JSON encode/decode.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148114 JSON (by Ward)] - JSMN - A Non-Strict JSON UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=156794 JSON (by ozmike)] - Bridge to Native Windows JSON plus OO extension for AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173797 JSONgen: JSON generator (by Jefrey)] - Generate JSON.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127101 MS SQL (by TheLuBu)] - MSSQL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51952 MS SQL (by ChrisL)] - _SQL. ADODB Connection.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20814 MySQL (by cdkid)] - MySQL relational database management system.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=85617 MySQL (by ProgAndy)] - MySQL UDFs (without ODBC - working with libmysql.dll).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=122360 MySQL (by James)] - MySQL ODBC Connector.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=187223 romaSQL (rynow)] - Built on the concept of Laravel Query &amp;amp; doctrine. Connection string is based on ADODB / ODBC.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143331 Sharepoint 2007/2010 (by schoppet)] - Access the SOAP-Webservices of Sharepoint 2007/2010.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=17099 SQLite (by ptrex)] - SQLite is a library that implements a self-contained, embeddable, zero-configuration SQL database engine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=142977 SQLite Array Functions (by SmOke_N)] - SQLite Array Functions - a faster method for unique arrays and sorting methods.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140521 SQLite - Database (by PhoenixXL)] - UDF for SQLite so that beginners will also be able to do the stuff.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157853 SQLiteEx (by 57ar7up)] - SQLiteEx UDF v0.5.1 - Simplest work with SQLite.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163633 Xbase I/O (by RTFC)] - Transfer data between Xbase Data file (*.dbf) and AutoIt array written in pure AutoIt (no SQL, no ADO, no dlls, no external dependencies).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209526 xlsxNative (by AspirinJunkie)] - Read and write xlsx files without excel.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=19848 XML DOM Wrapper (by eltorro)] - Supports CRUD operations on XML. Including XSL and XPath.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=176895 XML (by mLipok)] - New version of XML DOM Wrapper, with many new features.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=208932 Xml2Json (by TheXman)] - Transform XML to JSON.&lt;br /&gt;
&lt;br /&gt;
== Data compression ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=85094 7z, zip, gzip, bzip2, tar (by rasim)] - Extensive library that uses a external DLL that must be provided with the script.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=92958 gZip (by Zinthose)] - Based on the parsing of gZip.exe output. It can work with memory, it doesn&#039;t work with files. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87441 LZMA (by trancexx)] - LZMA (Native Windows).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138838 Package (by Yashied)] - Package UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=129529 pZip (by asdf8)] - PureZIP_L library UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=76176 UnRAR (by rasim)] - UnRAR.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=17727 XZip (by eltorro)] - Another UDF for &amp;quot;XStandard XZIP Component&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161847 XZip (by mLipok)] - UDF for &amp;quot;XStandard XZIP Component&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=44524 Zip plugin (by eltorro)] - Zip plugin.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=73425 ZIP (by torels)] - ZIP UDF in pure AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116565 zip (by wraithdu)] - Create ZIP files and unpack ZIP files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135565 ZIP (by joakim)] - ZIP STRUCTS UDF (from scratch).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87284 ZLib (by monoceres)] - Based on ZLib.dll. It can compress/uncompress data in memory, it doesn&#039;t work with files.&lt;br /&gt;
&lt;br /&gt;
== Encryption and hash ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81332 _Base64Encode, _Base64Decode (by trancexx)] - Fast _Base64Encode, _Base64Decode.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=153246 Base91 and Base128 (by Beege)] - Base91 and Base128 functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155538 Codecrypter (by RTFC)] - Encrypt scripts without placing the key inside the script.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=201002 Cryptography API: Next Gen (by TheXman)] - Microsoft&#039;s long-term replacement for their CryptoAPI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210901 Enigma (by willichan)] - Simple encryption based on the Enigma Machine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203990 GDPR (by mLipok)] - Functions to encrypt/decrypt strings and files with the GDPR in mind.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95558 Hashes for files (by trancexx)] - Fast RC32, MD4, MD5, SHA1 calculation for big files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=107784 TrueCrypt (by FuryCell)] - TrueCrypt UDFs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140737 WinTrust (by kasty)] - verify the integrity of a file with its embedded signature or a given catalog.&lt;br /&gt;
&lt;br /&gt;
== GUI Additions ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97241 3D Pie chart (by WideBoyDixon)] - 3D Pie chart.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173924 Chart_UDF (by Kanashius)] - This UDF can be used to Display bar charts in a window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=96258 ContextHelp (by Yashied)] - Management of context help ([https://www.autoitscript.com/forum/index.php?showtopic=72152-contexthelp/ original]).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211475 DarkMode (by NoNameCode)] - Dark mode for AutoIt&#039;s Win32GUIs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=109096 ExtMsgBox (by Melba23)] - A very customisable replacement for MsgBox.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105582 GUICtrlOnChangeRegister (by Mat)] - Call a function when an edits content is changed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145149 GUIExtender (by Melba23)] - Expand and contract sections of your GUI ([https://www.autoitscript.com/forum/index.php?showtopic=117909 original]).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197654 GuiFlatButton (by kurtykurtyboy)] - Change colors of regular buttons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119505 GUIFrame (by Melba23 &amp;amp; Kip)] - Divide a GUI into adjustable frames.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=144207 GUI Panel (by FireFox)] - Manage child GUIs as panel ctrls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113723 GUI Scrollbars (by Melba23)] - Automatically sized scrollbars with a single command.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161184 MetroGUI (by BBs19)] - Windows 10 style buttons, toggles, radios etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20967 Modern tray menu (by Holger)] - Allows the creation of modern, fancy GUI and tray menus with icons and colors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=194693 MTSkin (by Taskms4)] - Simply create modern looking GUIs (borderless GUI, Interactive menu panel (with mouse-over detection), a bunch of skins).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182136 Notifications (by S3cret91)] - Display permanent desktop notifications.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=136149 Notify (by Melba23)] - Small notifications on the edge of the display.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161750 Pie chart (by Andreik)] - Pie chart.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75429 Real Vista Aero Glass (by James)] - Real Vista Aero Glass UDF - you can apply glass effect to your GUI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=212767 Round Corner UDF (by Nine)] - Uses simple basic GUI functions to create round corners without the use of GDI+.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=71811 SetOnEvent (by martin)] - Provides an easy way for an event to call functions with parameters.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=103871 _SysTray (by wraithdu)] - Get info about and manipulate Systray icons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108445 Toast (by Melba23)] - Small message GUIs which pop out of the Systray.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=110003 Tray Icon Bar Graph (by BeeGee)] - Creates a scrolling bar graph as the tray icon.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=132864 Uskin (by JScript)] - Allows you to skin your GUI using the Windows &#039;&#039;.MSstyles&#039;&#039; files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191821 Wi3SMenu (by NHD)] - Create a slide menu with Windows 10 style. Supports color, icon and opacity.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=129196 WinSnap (by Beege)] - Automatic Window Alignment by applying that &amp;quot;snappy edge&amp;quot; effect to your GUI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32494 XSkin (by Valuater)] - Allows skinning of your GUI and to apply custom skins.&lt;br /&gt;
&lt;br /&gt;
=== Controls ===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202529 BrowseForFolder (by MrCreatoR)] - Handle SHBrowseForFolderW with more options, such as multi selection (checkboxes), window position, controls text and more. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=146406 Calendar (by jmon)] - Calendar UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=125293 ChooseFileFolder (byMelba23)] - Single and multiple selections from specified path treeview listing.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=96464 Colorpicker (by Yashied)] - Create a button for the user to select a color.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=204283 Date Range Picker (by Nine)] - Date Range Picker Control.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=123409 Explorer Frame UDF (by Beege)] - Takes any frame created by GUIFrame and turns it into a MS-Windows like Explorer window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173926 FileExplorer Treeview and Listview (by Kanashius)] - Create a Treeview and/or Listview able to browse files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173929 GDIPlus Slider UDF (by Kanashius)] - This UDF can be used to create a slider with an imagebackground and an image to move.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=79412 Graph control (by andybiochem)] - Easily create and show bar chart and line charts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=104399 GraphGDIPlus UDF (by andybiochem)] - Easily create and show bar chart and line charts with GDI+ to take advantage of double-buffering.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105682 GUICtrlCreateFinder (by Mat)] - Allows you to create a window finder control like the one seen in AutoIt Window Info.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=107965 GUIHotkey (by Mat)] - UDF for using native hotkey controls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182492 GUIListViewEx (by Melba23)] - Insert, delete, move, drag, sort, edit and colour ListView items.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111438 GUIPager (by Mat)] - Create and control native pager controls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20967 GUI/Tray Menu (by Holger, LarsJ, AZJIO)] - GUI/Tray Menu with icons and colors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166594 GUITreeViewEx (by Melba23)] - Check/clear parent and child checkboxes in a TreeView.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=90598 Hotkey input control (by Yashied)] - Hotkeys Input Control UDF Library (Non-native).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173932 ListView Edit UDF (by Kanashius)] - This UDF can be used to simply edit an Listview.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=109355 ListView - Explorer like ListView UDF (by Beege)] - This UDF simplify creating MS Explorer-like ListViews.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143711 Marquee (by Melba23)] - Make tickertape info bars.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143380 Predict Text UDF (by PhoenixXL)] - Sub classes the edit control and matches the current word through the Database &amp;amp; sets selection in accordance.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163939 Progressbar new style (by Muzaiyan)] - New styles for your progress bar.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=74649 Progressbar with GDIplus (by ProgAndy)] - You even can use full textured images.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151636 RestrictEdit_SRE UDF (by PhoenixXL)] - Restrict the text that can be entered in an editbox through a String Regular Expression.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=128242 Ribbon (by trancexx)] - UDF for Windows Ribbon framework.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114034 StringSize (by Melba23)] - Automatically size controls to fit the text you want to put in them.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126958 Syslink (by Yashied)] - Provides a convenient way to embed hypertext links in a window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105814 Table (by andybiochem)] - Table UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211024 Toggle Button (by Andreik)] - Create simple toggle buttons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=125251 TVExplorer (by Yashied)] - Allows to create TreeView (TV) Explorer controls that display a tree of files and folders.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=190659 Virtual Listview (by LarsJ)] - Virtual Listview for large amounts of data with a large number of rows.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195053 Windows Message Monitor (by LarsJ)] - Monitor Windows Messages of a window or control.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=118317 Battery UDF (by Yashied)] - Retrieves a various information and current status of the battery(s).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154727 BuildPartitionTable (by RTFC)] - Scans a physical drive&#039;s partition table and returns a partition_table, allocation_table and volumes_table.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155674 CommAPI (by therealhanuta)] - Serial and parallel communication (COM port, RS-232, LPT port) - without installing DLL&#039;s (using Windows API calls).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=77731 Device Management (by weaponx)] - Device Management API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97487 DirectShow (by monoceres)] - DirectShow UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164700 DirectSound (by eukalyptus)] - DirectSound UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164701 Direct2D (by eukalyptus)] - Direct2D UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=99713 Drive Info (by NerdFencer)] - Gathers drive info for Hard Drives, Disk Drives, and Floppy Drives.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138989 FritzBox (by Allow2010)] - _FB_Tools - manage your FritzBox from Autoit.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121084 I/O Port Functions (by Ascend4nt)] - Input/Output UDF for interacting with ports (x64 Parallel Port, Keyboard etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203207 MediaDevice (by Danyfirex)] - Transfer files to portable devices like phones, storages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154350 Monitor Configuration (by jaberwacky)] - Monitor Configuration UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155469 Mouse (by AlmarM)] - AutoIt powered mouse events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=147325 MouseTrapEvent (by ozmike)] - MouseTrapEvent UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149083 NetInfo (by Nessie)] - UDF for test internet download speed and upload speed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155539 Network configuration (by jguinch)] - Network configuration UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182684 Nitgen (by Jefrey)] - UDF to work with Nitgen fingerprint readers that use NGenBio SDK.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210968 Printer Manager (by Nine)] - Manage printers with winspool.drv DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155485 Printers management with WMI (by jguinch)] - Allows to manage printers: add/delete printer, driver, port, or obtain configuration, set default printer ...&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=189190 Serial port UDF / COM port UDF (by MazeM)] - Another UDF for the serial port. It is very similar to CommAPI using kernel32.dll, but all code is packed into a single file without any dependencies.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=128546 Serial Port/COM (by martin)] - Serial Port /COM Port UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27755 SMARTDRIVE (by ptrex)] - SMART drive Analysis.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158640 SPI Hardware Interface (by Blinky)] - Communicate with the MAX335 chip using the SPI protocol via the LPT (printer) port.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=8188 VISA/GPIB (by Angel)] - VISA/GPIB library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=68866 Webcam (by LIMITER)] - Webcam UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70857 Webcam (by ludocus)] - Webcam UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91018 WiFi (by MattyD)] - Low level control over your wireless LAN.&lt;br /&gt;
&lt;br /&gt;
== Information gathering ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=29404 Computer information (by JSThePatriot)] - A general purpose library to get various details about a Windows machine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151920 NetworkStatistics (by Ascend4nt)] - Network Interface Info, Statistics, and Traffic.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=54039 WinPcap (by JRSmile)] - Wrapper for the windows packet capture library WinPcap.&lt;br /&gt;
* [https://opensource.grisambre.net/pcapau3/ WinPcap (by Nicolas Ricquemaque)] - A library to access the main functionalities offered by the WinPcap driver.&lt;br /&gt;
&lt;br /&gt;
== Internet protocol suite ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=207859 cURLX64 (by Beege)] - cURL UDF with x64 support.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=137456 cURL (by seangriffin)] - A UDF for transferring data with URL syntax.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=187718 HTTP lib (by Jefrey)] - HTTP lib (GET, POST and upload) UDF to simplify HTTP requests, mainly when dealing about POST data or file uploads.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202895 HttpApi (by TheXman)] - HTTP Server API enables applications to communicate over HTTP without using MS Internet Information Server (IIS).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=40243 IMAP (by mikeytown2)] - IMAP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108422 IMAP4 (by Tipulatoid)] - IMAP4 UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=43515 IRC (by McGod)] - A lightweight library for communicating with IRC servers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=159285 IRC (by rcmaehl)] - IRC UDF - Updated Version of Chips&#039; IRC UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=22838 POP3 (by Apzo)] - POP3 library for retrieving email messages. Not compatible with Gmail because it uses SSL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167339 POP3 (by mLipok)] - POP3 UDF According to the 1939 RFC, modified version with Quoted Printable decoder.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154530 Prowl (by mrflibblehat)] - Push notifications to iPhone, iPod touch or iPad using Prowl (Growl client for iOS).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138095 SFTP (by Lupo73)] - UDF to support SFTP protocol using PSFTP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154054 Socket UDF (by funkey)] - Socket UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=23860 SMTP (by Jos)] - Smtp Mailer That Supports Html And Attachments.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167292 SMTP Mailer UDF (by mLipok)] - Smtp Mailer That Supports Html And Attachments - Modified Version with support to save EML files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81687 SNMP (by enaiman)] - SNMP_UDF for SNMPv1 and SNMPv2c.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70759 SNMP - MIB protocol (by ptrex)] - Reading toner status from SNMP device with WMI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166579 SSH (by jeanphile)] - Use the SSH protocol very easily in your code.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=185329 STUN (by j0kky)] - STUN is a protocol that permits you to know your external IP but, more interesting, your external port associated to your internal port.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=184817 SyslogSend (by Irios)] - This allows sending (BSD) messages to a syslog server using UDP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169774 TCPServer (by Jefrey)] - Multi client, event-based, able to bind console app to socket.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=57022 UPnP Protocol (by ptrex)] - UPnP - Read and Control your devices in side out.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=84133 WinHTTP (by trancexx)] - Access the HTTP protocol for creating GET and POST requests and submitting them with conforming standards, cookies not supported.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=77503 WinInet (by -Ultima-)] - Access standard Internet protocols (FTP, Gopher and HTTP). Supports GET/POST requests and cookies.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=181645 Winsock (by j0kky)] - Create client/server application using native winsock functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191954 WSA_NBTCP (by ripdad)] - Windows Sockets API - Non-Blocking Transmission Control Protocol.&lt;br /&gt;
&lt;br /&gt;
== Maths ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170658 Advanced Math UDF (by scintilla4evr)] - Advanced mathematical functions (primes, number sequences, interpolate, calculate values of functions like Riemann zeta etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=102686 Advanced rounding (by Mat)] - Support for different measures of accuracy and 8 ways to resolve tie breaks.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83529 Big number (by eukalyptus)] - Make calculations with extremely large numbers that AutoIt normally is not able to support.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106551 Decimal To fraction (by Malkey)] - Converts any decimal number to a fraction. Example: 1.2 to 6/5.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162921 Eigen4AutoIt (by RFTC)] - Allows to perform fast matrix operations on large numerical data sets, and much more ....&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=212357 Linear Algebra (by AspirinJunkie)] - BLAS/LAPACK-based Linear Algebra and nonlinear adjustment UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140789 MathsEx UDF (by PhoenixXL)] - Functions for Carrying Out More Advanced Mathematical Calculations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81189 Number base conversion (by james3mg)] - From, to and between positive bases less than 63 (decimals supported).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=117156 NumToWord (by Mat)] - Convert numerals to a human readable string.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108803 Polynomials (by Mat)] - Functions for using polynomials.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83091 Primes (by jennico)] - Many functions dealing with prime number generation and calculations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94770 Roman Numerals (by AZJIO)] - Roman Numerals.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=98160 Root function (by Mat)] - Working out real roots of numbers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209527 Stat (by AspirinJunkie)] - Statistics for Autoit.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163899 StringAPL (by minx)] - inline APL interpreter.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=82722 Trigonometric and math functions (by trancexx)] - _ATan2(), _Cosh(), _Frexp(), _Hypot(), _Ldexp(), _Logb(), _Sinh(), _Tanh().&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95357 FreeImage library (by ProgAndy)] - Various operations on images, such as rotate, resize, flip.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127263 HtmlHelp (by Geodetic)] - HtmlHelp functions for context-sensitive help from CHM (compiled HTML) files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116009 HyperCam (by seangriffin)] - HyperCam (Screen Recording) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182535 HyCam2 (by willichan)] - Automation for HyCam2 screen recording utility.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50608 OCR (by ptrex)] - Real OCR in AU3 - MODI with MS Office 2003.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=89542 OCR (by seangriffin)] - Tesseract (Screen OCR) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206133 OCRSpace (by MrKm)] - Convert Images to text with the OCRSpace API. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51054 Printer controller (by martin)] - Print text in any font, size and colour at any position on the page, draw lines, curves, elipses, pies in any colour, and print images.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=73993 Printing (by GRS)] - Printing from AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202621 QRCreator (by BugFix)] - Simple QR-code creation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161831 RTF_Printer (by mLipok)] - Printing RichEdit in the background.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94834 Simple DirectMedia Layer (by AdmiralClaws)] - Adds support for joysticks, CDs, 2D graphics, timers. See [https://www.libsdl.org/ SDL website] for more information.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=207324 UWPOCR (by Danyfirex)] - Universal Windows Platform Optical Character Recognition API.&lt;br /&gt;
&lt;br /&gt;
===Graphics and image===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202987 AutoYolo3 (by smartee)] - Real-Time Object Detection using YOLOv3 wrapper.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113881 au3Irrlicht2 (by JRowe)] - Combining Irrlicht and AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=86748 AVI writing udf (by monoceres)] - Create uncompressed avi&#039;s from bitmap files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27362 Bitmap Library (by evilertoaster)] - Bitmap Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202663 GIF animation (by Nine)] - Fast cached GIF animation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150231 GTK+  (by prazetto)] - GTK+ Framework | Widgets.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=13096 ImageGetInfo (by Lazycat)] - Read info from JPEG, TIFF, BMP, PNG and GIF - size, color depth, resolution.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/471-image-search-udf Image Search (by VIP)] - Search for an image on the desktop. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70506 IrrLicht (by A. Percy)] - A 3D graphics engine suitable for creating games.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160732 OpenCV (by myliseJ)] - UDF for the OpenCV library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206432 OpenCV v4+ (by smbape)] - OpenCV UDF with support for OpenCV v4+.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151011 OpenGL (by LarsJ)] - OpenGL without external libraries etc. For JPEG files it also retrieves various Exif information.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148129 OpenGL (2.0) (by minx)] - New set of UDFs for OpenGL + AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=152950 S3D (by Starg)] - Draw simple 3D graphics with GDI+.&lt;br /&gt;
&lt;br /&gt;
===Players===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114143 VLC (by seangriffin)] - VLC (Media Player) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91316 VLC Media Player (by ptrex)] - VLC Media Player.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27352 WMP (by ConsultingJoe)] - Windows Media Player UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=44008 WMP - Media Controls (by CFire)] - Another Windows Media Player UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203154 WMP - GUI Control (by SudeepJD)] - IE based WMP Control.&lt;br /&gt;
&lt;br /&gt;
===Sound===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83481 BASS Function Library (by BrettF)] - Sound and Music via wrappers for Bass, BassEnc, Bass FX, BassSFX, BassAsio and BassCd DLLs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173808 libZPlay (by Danyfirex)] - Multimedia library for playing mp3, mp2, mp1, ogg, flac, ac3, aac, oga, wav and pcm files and streams.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=37072 MIDI (by eynstyne)] - MIDI UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=208116 MIDI (by MattyD)] - Wrap of the Windows MIDI functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114742 SAPIListBox (by seangriffin)] - SAPIListBox (Speech Recognition) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=100439 TTS (by Beege)] - Text-to-Speech UDF.&lt;br /&gt;
&lt;br /&gt;
== PDF ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162195 Acrobat Reader - ActiveX Viewer (by mLipok)] - Make your own PDF Viewer GUI with Acrobat Reader ActiveX COM Object &amp;quot;AcroPDF.PDF.1&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164469 Debenu PDF Viewer SDK (by mLipok)] - A collection of functions to display PDF files in your applications using Debenu PDF Viewer SDK.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160875 Debenu Quick PDF Library (by mLipok)] - A collection of functions for Debenu Quick PDF Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75832 FoxIt Reader (by ptrex)] - PDF Reader in AU3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=118827 MPDF (by taietel)] - Create PDF from your application.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=42776 PDFCreator (by ptrex)] - Automation of PDFCreator allows you to create and manipulate PDF files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170550 PDFCreator (by mLipok)] - UDF for PDFCreator v1.x.x with working EVENTs Handler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32261 _StringToPDF (by Tam0r)] - Write a string to a PDF file and specify font size, type etc.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145158 Firewall (by JLogan3o13)] - Control and manipulate the Windows Firewall (enable/disable, Exclusions list, enable/disable ports etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=194015 Firewall policy2 (by Bilgus)]- Provides access to the firewall policy for Windows Vista+.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150819 VirusTotal (by Danyfirex)] - VirusTotal API 2.0 UDF.&lt;br /&gt;
&lt;br /&gt;
== Social Media and other Website API ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=159254 Cex.io (by AquilesCrespo)] - UDF script for using with the web api from https://cex.io/ server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169333 CrowdinAPI (by mLipok)] - Uses the [https://crowdin.com/page/api crowdin.net website API] for some functions (create projects, add and update files, download translations or integrate localization).&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/290-dropbox-authenticator/ Dropbox authenticator (by Gimerly)] - Dropbox authenticator.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158106 Easypost (by dcat127)] - Print USPS Postage Labels.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114801 eBay (by seangriffin)] - eBay UDF (functions GetItemStatus and GetSingleItem from the &amp;quot;Shopping API&amp;quot;).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=141340 Gmail (by PhoenixXL)] - Remote Gmail (UDF).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=192422 Gmail API (by Ascer)] - Automate communication with Gmail using oAuth 2.0 security. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=98504 Google Functions (by Beege)] - Google Functions (Suggestions, Definitions, Translate, Convert).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=115437 Google Maps (by seangriffin)] - Google Maps UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70675 iTunes (by torels)] - iTunes UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=101802 iTunes (by Beege)] - Another iTunes UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150985 No-IP (by Nessie)] - Simply update your no-ip hostname(s) and retrieve the ip address of an no-ip address.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=192391 oAuth (by Ascer)] - Open standard for access delegation, commonly used to grant websites or applications access to other websites.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150838 PasteBin (by mrflibblehat)] - Pastebin UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121767 Skype (by FireFox)] - Skype4COM provides an ActiveX interface to the Skype API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113234 Teamspeak 3 (by chipDE)] - Teamspeak 3 UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186944 TeamViewer API (by mLipok)] - A collection of function for use with TeamViewer API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186381 Telegram Bot (by LinkOut)] - UDF for [https://core.telegram.org/api Telegram messenger API].&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166547 TVmaze.com API (by BBs19)] - TVmaze.com API UDF (TV-Series).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116600 Twitter (by seangriffin)] - Manage Twitter.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149247 Yahoo Weather (by Nessie)] - Yahoo Weather API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=112775 Youtube Uploader (by BrettF)] - AYTU - AutoIt Youtube Uploader.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50880 ACL (by ptrex)] - Set ACL on windows Objects.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=134508 ACL (by FredAl)] - Do most everything with the DACL and ownership on all types of objects: Files or folders, Registry keys, services, Kernel and WMI objects, etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206400 BITS (by DonChunior)] - Background Intelligent Transfer Service to download files from or upload files to HTTP web servers and SMB file shares.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=184937 CertUtil (by mLipok)] - Wrapper for windows certutil.exe (command-line program that is installed in Windows as part of Certificate Services).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113560 FileSystemMonitor (by seangriffin)] - Monitors the file system by recording all file system events occurring within a given path.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111018 ITaskBarList (by Beege)] - ITaskBarList UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=74118 Local account (by engine)] - Manage local accounts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161193 Magnifier Functions (by Ascend4nt)] - Exposes most of the useful Magnifier API functions available since Windows Vista.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75250 Registry (by engine)] - Windows Registry UDFs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50551 Registry (by seanhart)] - RegWriteAllUsers / RegDeleteAllUsers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=80201 Service (by arcker)] - Build your own service with AutoIt code.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124508 Startup (by guinness)] - Create Startup entries in the Startup Folder or Registry.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164756 SCCM (by JLogan3o13)] - Systems Center Configuration Manager Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=134628 System restore (by FredAI)] - System restore UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186111 SubstWrapper (by mLipok)] - Wrapper for windows subst.exe command - (Associates a path with a drive letter).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135994 Taskplanner/Taskscheduler COM (by Allow2010)] - an UDF for using the Windows Taskplaner / Task Scheduler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83355 Task Scheduler (by dbzfanatic)] - Task Scheduler UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=200068 TaskScheduler (by water)] - Brushed up Task Scheduler UDF. Link to the [[TaskScheduler|documentation pages]].&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173934 TTS (by Kanashius)] - Used with SAPI Automation Object - text-to-speech (TTS) engine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158377 UAC (by AdamUL)] - User Account Control (UAC) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=175719 Utter (by Surya)] - Utilizing more of SAPI (Speech Recognition UDF).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127075 WIMGAPI (by Homes32)] - Manipulate Windows Image Files (.wim) without ImageX.exe.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=28436 Windows Events (by Emperor)] - Create your own Windows events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=6487 Windows Service Control functions (by SumTingWong)] - Some limited functions to control services (create, start, stop, delete, check ...).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81880 Windows Services (by engine)] - Windows Services UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163178 WRMF (by Luigi)] - WRMF - Windows Registry Monitor Call Function.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&amp;lt;!-- Removed 2020-05-30 as adequate documentation is missing * [https://www.autoitscript.com/forum/topic/178871-dllcall-with-c-example/#comment-1285754 SMSApi (by mLipok)] - UDF for SMSAPi which provides SMS services. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Removed 2020-05-30 as adequate documentation is missing * [https://www.autoitscript.com/forum/index.php?showtopic=178589 BulkSMS (by Skysnake)] - UDF for BulkSMS which provides SMS services. --&amp;gt;&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145099 _AdlibEnhance (by JScript)] - Enhance Adlib to call functions with parameters, pause and resume.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160936 Android (by Moriba)] - Control any Android device.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97826 Animated tray icons (by Yashied)] - Make animated tray icons easily.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163577 Atom Table (by Ascend4nt)] - Store (add, find, delete, and query) strings locally (at program level) or globally (at OS level) with unique numerical identifiers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170087 Barcode generators (by willichan)] - Creates a Code128A/B/C or Creates a Code39 or Code39Extended optimized barcode from supplied data.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211660 BlockInput (by Nine)] - Block all input coming from mouse and/or keyboard, without having an UAC warning displayed. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87735 BlockInputEx (by MrCreatoR)] - Supports a few features that built-in BlockInput() function does not.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=29763 Clipboard (by eltorro)] - When apps need to watch the clipboard.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170630 ClipboardEx (by ozmike)] - Allows to have more than 1 item in the Clipboard. Handles all data types, not just text.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81267 Clipboard History (by wraithdu)] - Save and restore the entire clipboard contents. Inspired by AHK&#039;s ClipboardAll.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169610 CmdLine (by Jefrey)] - Collection of functions to parse command line arguments.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126569 Console (by Shaggi)] - Functions and features to work wiht Console input/output.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121833 Copy (by Yashied)] - Copy or move files and directories without suspending your script. Retrieve the current state (copied bytes, error code etc.) while copying.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154684 Date / Time convert (by Melba23)] - Transform date/time formats.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=99106 _DLLStructDisplay (by Ascend4nt)] - Show Struct in ListView.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157689 _FileGetMimeType (by Wiliat87)] - Retrieve MIME types based on the extension of the filename/filepath/URL provided.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=117033 File locking with cooperative semaphores (by willichan)] - Simple file locking without a server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157241 FindMimeFromData (by twbradio)] - FindMimeFromData using urlmon.dll.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=181997 Font Icon (by J2TeaM)] - Use Font Awesome in your AutoIt project.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=68422 HotString (by jvanegmond)] - Similar to the HotKey function but trigger on a string, instead of a key or key combination.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173946 LASM - Light Assembler (by minxomat)] - Inline UDF for an Assembler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161628 LFN (by orbs)] - Overcome MAX_PATH limit of 256 chars.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111492 Link Grammar for AutoIt (by JRowe)] -  Input is a regular sentence in English, German or Italian, output is a pattern parsed from the structure of the sentence.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/147-mruau3 MRU (by Yashied)] - Most Recently Used (MRU) List Automation functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=188158 .NET Common Language Runtime (CLR) Framework (by Danyfirex, Junkew, Larsj, ptrex, Trancexx)] - Allows AutoIt to access .NET Class Libraries.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=101733 NoFocusLines (by Melba23)] - Remove the dotted focus lines from buttons, sliders, radios and checkboxes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149176 NotifyIcon (by FireFox)] - Create, delete and manage self notify icons (formerly TrayIconEx). &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=63318 PixelGetColor (by Manadar)] - Get or Read Pixel from memory.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167024 RDC (by Yashied)] - ReadDirectoryChanges Wrapper.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51103 Resources (by Zedna)] - Embed any binary data into your AutoIt compiled EXE files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162499 ResourcesEx (by guinness)] - Up to date version of Zedna&#039;s Resources UDF. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111215 Restart (by Yashied)] - Allows to restart a script from any location with full restoration of the original command line parameters.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51547 SciLexer (by Kip)] - Editing control, supports multiple editors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=152093 ScriptEditor (by pandel)] - ScriptEditor with I18N support and customizable lexer completely written in AutoIt (based on SciLexer).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162033 Spell Checker (by iCode)] - Spell Checker functions to call Hunspell, Hyphenate and MyThes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164444 Synology filestation (by nend)] - Functions to interact with a Synology NAS server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163328 TimeConvert (by orbs)] - Convert UTC to/from local time, and/or reformat the string representation.&lt;br /&gt;
[[Category:UDF]]&lt;/div&gt;</summary>
		<author><name>Nine</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User_Defined_Functions&amp;diff=15146</id>
		<title>User Defined Functions</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User_Defined_Functions&amp;diff=15146"/>
		<updated>2025-03-22T19:25:24Z</updated>

		<summary type="html">&lt;p&gt;Nine: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
This page is a listing of libraries of &#039;&#039;&#039;user defined functions&#039;&#039;&#039; (UDF). These libraries have been written to allow easy integration into your own scripts and are a very valuable resource for any programmer.&amp;lt;br /&amp;gt;&lt;br /&gt;
This list is probably not complete (394 UDFs on 2025-03-22), but constantly supplemented.&lt;br /&gt;
If you do not find a solution here, ask a new question on the [https://www.autoitscript.com/forum/forum/2-general-help-and-support/ forum].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
The listed UDFs might have been written for older versions of AutoIt. So there is no guarantee that every UDF works smoothly with newer versions.&amp;lt;br /&amp;gt;&lt;br /&gt;
None of the UDFs has been tested by the maintainers of this list so you as a user need to make sure that they deliver the expected results.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;When will an UDF be added to this list?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
It should meet all/most of the general requirements for UDFs as described [[UDF-spec|here]].&amp;lt;br&amp;gt;&lt;br /&gt;
In addition the following requirements should be met:&lt;br /&gt;
* &#039;&#039;&#039;Documentation&#039;&#039;&#039;: So users can tell what the UDF is intended to do (&#039;&#039;mandatory&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Examples&#039;&#039;&#039;: So users can get an idea how to use the UDF. The more the better (&#039;&#039;mandatory&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Operating systems&#039;&#039;&#039;: Should support the latest Microsoft OS (&#039;&#039;mandatory&#039;&#039;) plus as many predecessors as possible (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;AutoIt&#039;&#039;&#039;: Should support the latest version of AutoIt (&#039;&#039;mandatory&#039;&#039;) plus as many predecessors as possible (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Author&#039;&#039;&#039;: The author should still be active on the forum so he can reply to questions (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What to do when one of your UDFs is missing?&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Please send a [https://www.autoitscript.com/forum/messenger/compose/?to=7903 PM] to user water. Add a short description of the UDF and a link to your post in the [https://www.autoitscript.com/forum/forum/9-autoit-example-scripts/ Example Scripts] or [https://www.autoitscript.com/forum/forum/49-autoit-projects-and-collaboration/ Projects and Collaboration] forum.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Added in the past two years&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Date !! Section !! Creator !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 2025-03-22 || [[User_Defined_Functions#GUI_Additions|GUI Additions]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=212767 Round Corner UDF] - Uses simple basic GUI functions to create round corners without the use of GDI+.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-02-26 || [[User_Defined_Functions#Controls|Controls]] || Kanashius || [https://www.autoitscript.com/forum/index.php?showtopic=173926 FileExplorer Treeview and Listview] - Create a Treeview and/or Listview able to browse files.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-16 || [[User_Defined_Functions#Parallel.2Fconcurrent processing|Parallel/concurrent processing]] || Gianni || [https://www.autoitscript.com/forum/index.php?showtopic=192157 MultiTask] - Easily run and manage many processes.&lt;br /&gt;
|- &lt;br /&gt;
| 2025-01-12 || [[User_Defined_Functions#GUI_Additions|GUI Additions]] || NoNameCode || [https://www.autoitscript.com/forum/index.php?showtopic=211475 Darkmode] - Dark mode for AutoIt&#039;s Win32GUIs.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-12 || [[User_Defined_Functions#Parallel.2Fconcurrent processing|Parallel/concurrent processing]] || Network_Guy || [https://www.autoitscript.com/forum/index.php?showtopic=196993 MultiTasking] - Enables execution of a function in a separate process as many times needed with or without pausing the main script.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-11 || [[User_Defined_Functions#Script_Coding.2FAnalyzing.2FDebugging|Script Coding/Analyzing/Debugging]] || t0nZ || [https://www.autoitscript.com/forum/index.php?showtopic=195100 Gollog] - Logs made easy.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-02 || [[User_Defined_Functions#Parallel.2Fconcurrent processing|Parallel/concurrent processing]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=211683 PMT] - Pseudo Multi Threading - as close as possible with simple AutoIt.&lt;br /&gt;
|-&lt;br /&gt;
| 2025-01-02 || [[User_Defined_Functions#Parallel.2Fconcurrent processing|Parallel/concurrent processing]] || argumentum || [https://www.autoitscript.com/forum/index.php?showtopic=199177 Fork] - Run something and not get the main loop stuck waiting, unresponsive, as if frozen.&lt;br /&gt;
|-&lt;br /&gt;
| 2024-10-21 || [[User_Defined_Functions#Controls|Controls]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=204283 Date Range Picker] - Date Range Picker Control.&lt;br /&gt;
|-&lt;br /&gt;
| 2024-10-06 || [[User_Defined_Functions#Maths|Maths]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=212357 Linear Algebra] - BLAS/LAPACK-based Linear Algebra and nonlinear adjustment UDF.&lt;br /&gt;
|-&lt;br /&gt;
| 2024-03-27 || [[User_Defined_Functions#Script_Coding.2FAnalyzing.2FDebugging|Script Coding/Analyzing/Debugging]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=211718 FuzzyString] - Fuzzy string comparison and search in string arrays.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-11-14 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || TheXman || [https://www.autoitscript.com/forum/index.php?showtopic=208932 Xml2Json] - Transform XML to JSON.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-10-30 || [[User_Defined_Functions#Hardware|Hardware]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=210968 Printer Manager] - Manage printers with winspool.drv DLL.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-10-30 || [[User_Defined_Functions#Controls|Controls]] || Andreik || [https://www.autoitscript.com/forum/index.php?showtopic=211024 Toggle Button] - Create simple toggle buttons.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-10-01 || [[User_Defined_Functions#Encryption_and_hash|Encryption and hash]] || willichan || [https://www.autoitscript.com/forum/index.php?showtopic=210901 Enigma] - Simple encryption based on the Enigma Machine.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-09-06 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || willichan || [https://www.autoitscript.com/forum/index.php?showtopic=151116 DIF] - Read/write DIF (Data Interchange Format) files.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-07-27 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || AspirinJunkie || [https://www.autoitscript.com/forum/imndex.php?showtopic=209526 xlsxNative] - Read and write xlsx files without excel.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-07-27 || [[User_Defined_Functions#OpenOffice.2FLibreOffice|OpenOffice/LibreOffice]] || donnyh13 || [https://www.autoitscript.com/forum/index.php?showtopic=210514 LibreOffice Writer] - A huge list of functions for LibreOffice Writer.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Place the Table of contents (TOC) here --&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Automation ==&lt;br /&gt;
&lt;br /&gt;
===Browsers===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154439 Chrome (by seangriffin)] - Automate the most common tasks in Chrome with this UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95595 Firefox (by Stilgar)] - A little less support for automation than IE, but still very good.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167661 Firefox (by Danp2)] - Modified newer version of Stilgar Firefox UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/224-firefox-profile-backup/ FireFox Profile Backup 1.0 (by careca)] - Backup or restore your firefox profile. The application searches for the profile in home drive that will be the one to backup.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124330 _FF_AutoLogin (by Stilgar)] - This is a auto-login function and login-function-generator for FireFox and the FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=92035 _FF_DM (by Stilgar)] - UDF to control the FireFox Download-Manager (not the download-window).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91650 _FF_FoxBox (by Stilgar)] - UDF to control Fox!Box (A Mozilla Firefox extension for the AVM FRITZ!Box) with FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91665 _FF_Screengrab (by Stilgar)] - UDF to control Screengrab! (FireFox-AddOn) with FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124330 _HTML (by Stilgar)] - Get informations from any HTML (XML) source, without any browser.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166542 HTMLDocumentEvents (by SmOke_N)] - Track IE document events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167035 IEEx (by SmOke_N)] - IE extended library with some Javascript options.&lt;br /&gt;
* Internet Explorer (by DaleHohm et al.) - IE library that is now supplied with a standard AutoIt install.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=153520 IUIAutomation MS framework (by junkew)] - IUIAutomation MS framework to automate chrome, FF, IE etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149203 NavInfo (by Nessie)] - With this UDF you can check if a specified browser/software is installed and which version is being used.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=61090 Opera (by MrCreatoR,)] - Automate the most common tasks in Opera with this UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191990 WebDriver (by Danp2)] - W3C compliant Webriver UDF.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Office===&lt;br /&gt;
Some features of Microsoft&#039;s Office products are proprietary and cannot readily be manipulated.  Sometimes workarounds are required.&amp;lt;br&amp;gt;&amp;lt;u&amp;gt;[[Known issues with Microsoft Office automation.|This page]]&amp;lt;/u&amp;gt; is dedicated to identifying those issues, provide explanations and list solutions or workarounds.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32144 Microsoft Office Access (by randallc)] - Automate Microsoft Access.&lt;br /&gt;
* Microsoft Office Excel (by water et al.) - This UDF is included in AutoIt. Link to the [[Excel_UDF|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135312 Microsoft Office Excel Charts (by water, GreenCan)] - Creating charts using Microsoft Excel.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=204034 Microsoft Office Excel Pivot Tables (by SudeepJD)] - Create and Update Excel Pivot Tables and Charts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126305 Microsoft Office Outlook (Items) (by water)] - Automate Microsoft Outlook Items. Link to the [[OutlookEX_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202451 Microsoft Office Outlook (GUI) (by water)] - Automate Microsoft Outlook GUI. Link to the [[OutlookEX_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197346 Microsoft Office Outlook Tools (by water)] - Built on top of the OutlookEX UDF it offers some often needed extended functionality (import/export ics/vcf files etc.). Link to the [[OutlookTools|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50254 Microsoft Office PowerPoint (by Toady)] - Automate Microsoft PowerPoint.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=178783 Microsoft Office PowerPoint (by water)] - Automate Microsoft PowerPoint. Link to the [[Powerpoint|documentation]] pages.&lt;br /&gt;
* Microsoft Office Word (by water et al.) - This UDF is included in AutoIt. Link to the [[Word_UDF|documentation]] pages.&lt;br /&gt;
&lt;br /&gt;
===OpenOffice/LibreOffice===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210514 LibreOffice Writer (by donnyh13)] - A huge list of functions for LibreOffice Writer.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151530 OOo/LibO Calc (by GMK)] - OpenOfficeCalc UDF (works also for Libre Office).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=185932 OpenOffice/LibreOffice Spell Checker (by GMK)] - Function to validate words, and show spell alternatives.&lt;br /&gt;
&lt;br /&gt;
===Other Applications===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106163 Active Directory (by water)] - Extensive library to control and manipulate the Windows active directory ([https://www.autoitscript.com/forum/files/file/355-ad-active-directory-udf/ Download]). Link to the [[Active_Directory_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87956 Java (by seangriffin)] - Creates an access bridge between your application and a Java application. Allowing you to automate some Java applications.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=86574 SAP (by seangriffin)] - SAP business management automation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149540 SAPWizard (by ozmike)] - SAPWizard UDF.&lt;br /&gt;
&lt;br /&gt;
== Script Coding/Analyzing/Debugging ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209528 ArrayCombinations (by AspirinJunkie)] - Different ways of composing elements of a set.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155442 ArrayMultiColSort (by Melba23)] - Function to sort a 2D array on several columns.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209523 ArrayPlus (by AspirinJunkie)] - Functions for flexible Array handling (create, extract, rebuild, sort, filter, find, print)&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=180467 ArrayWorkshop (by czardas)] - Multidimensional array functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=59174 Associative array functions (by Nutster)] - Manage a version of associative arrays in single AutoIt variables. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=198929 AutoIt error logger (AUERLO) (by user4157124)] - File- and stdout (etc.) output of messages, errors, exit method and -code, etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=110379 AutoItObject (by ProgAndy and others)] - Brings the Object Orientation programming paradigm to AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=112879 AutoIt Syntax Highlight (by MrCreatoR)] - Highlights AutoIt v3 syntax code to html/bbcode format.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191488 cDebug (by c.haslam)] - Dumps the values of all AutoIt subtypes and expressions including nested arrays, DLL structs and maps.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195882 ErrorLog (by mLipok)] - Logs program activities and errors to different output locations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211718 FuzzyString (by AspirinJunkie)] - Fuzzy string comparison and search in string arrays.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143167 GetOpt (by dany)] - Parse GNU and DOS style command line options similar to getopt().&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195100 Gollog (by t0nZ)] - Logs made easy.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=156196 Log4a (by zorphnog)] - Logging library loosely based upon the log4j and NLog libaries.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195862 Loga (by Danyfirex)] - Simple logging library to keep track of code with an integrated console.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119032 Log UDF (by Yashied)] - Create a text log files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202832 OnDebugMsgBox (by argumentum)] - Catch the dreaded &amp;quot;AutoIt Error&amp;quot; MsgBox and prettify or hide it.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209529 Set (by AspirinJunkie)] - Provides a set data type and brings the corresponding mathematical functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=200660 Variants and Safearrays (by LarsJ)] - Create/access/process Variants and SafeArrays.&lt;br /&gt;
&lt;br /&gt;
=== Inter Process Communications ===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202485 AppInteract (by MrCreatoR)] - Reliably pass arrays or other types between processes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=205109 AutoItSharedData (by SEuBo)] - Create a shared data storage, a simple AutoItObject-Object, using AutoItObject_Internal.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=188991 Autoit-Socket-IO (by tarretarretarre)] - Event driven TCP/IP wrapper inspired by Socket.IO with focus on user friendliness and long term sustainability.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126936 Container (by MrCreatoR)] - Scripts interaction method. Allows to transfer whole arrays as data, and even COM objects.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=55994 DDEML (by doudou)] - Use your AutoIt script as DDE client or server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=193277 FMIPC (by argumentum)] - IPC via FileMapping.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127615 Interprocess (by JScript)] - Remotely execute a function in another script (using Mailslot).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=193158 IPC_IO (by JohnWIlling)] - IPC library supporting multiple connection types (such as: Named Pipe, File, TCP, SharedMemory, MailSlot).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202618 IPC Techniques through ROT Objects (by LarsJ)] - Implementing IRunningObjectTable Interface.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106710 Mailslot (by trancexx)] - IPC using Mailslots.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=204734 Overlapped Named Pipe IPC (by Nine)] - Very fast interprocess communication that could be used between VBS or AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169797 Pool - Post Office for Organized Labour (by RTFC)] - Provides multiple AutoIt processes with an infrastructure for exchanging messages, data, and remote-control instructions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202587 WCD IPC (by Nine)] - Framework for Inter Process Communication using Windows Messages WM_COPYDATA.&lt;br /&gt;
&lt;br /&gt;
=== Parallel/concurrent processing ===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=199177 Fork (by argumentum)] - Run something and not get the main loop stuck waiting, unresponsive, as if frozen.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186853 _Multiprocess (by jguinch)] - Run several external programs at the same time and retrieve the exit code of each process.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=192157 MultiTask (by Gianni)] - Easily run and manage many processes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=196993 MultiTasking (by Network_Guy)] - Enables execution of a function in a separate process as many times needed with or without pausing the main script.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211683 PMT (by Nine)] - Pretending Multi Threading - as close as possible with simple AutoIt.&lt;br /&gt;
&lt;br /&gt;
== Files, Databases and web connections ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=180850 ADO (by mLipok)] - A modifed version of the _SQL UDF to access all kind of databases (MSSQL, MySQL, PostgreSQL, SQLite, MS ACCESS, XLS, TXT, and many other which use ADO and ODBC).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105875 ADODB (by spudw2k)] - ADODB Example.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=176895 AXML (by Aipion)] - This is a Wrapper for Pugixml, made with C++.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145142 DBF (by funkey)] - dBase database read and write with DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/114406-csv-file-to-multidimensional-array/?do=findComment&amp;amp;comment=799820 CSV (by ProgAndy)] - Read/write CSV files to/from 2D arrays.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197909 CSV (by seangriffin)] - Manipulate CSV files using SQLite.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155748 CSVSplit (by czardas)] - Convert to and from CSV format.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151116 DIF (by willichan)] - Read/write DIF (Data Interchange Format) files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119238 Excel file generation (by jerome)] - Excel file generation (multi-sheet workbook) without the need to have Excel installed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143866 Excel XML (by FireFox)] - Work with SpreadsheetML (Open XML file formats).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155905 EXml (by jdelaney)] - Create Excel file (SpreadsheetML) through &amp;quot;Microsoft.XMLDOM&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116072 EzMySql (by Yoriz)] - Use MySQL Databases with AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148232 _FileGetProperty (by BrewManNH)] - Retrieve properties of a file.Xml2Json&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94920 FireBird (by eltorro)] - FireBird, Interbase DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197421 jq (by TheXman)] - Brings the power and flexibility of jq (an open-source command-line based JSON processor) to AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209502 JSON (by AspirinJunkie)] - Interacting with JSON data in AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=104150 JSON (by Gabriel13)] - RFC4627 compliant JSON encode/decode.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148114 JSON (by Ward)] - JSMN - A Non-Strict JSON UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=156794 JSON (by ozmike)] - Bridge to Native Windows JSON plus OO extension for AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173797 JSONgen: JSON generator (by Jefrey)] - Generate JSON.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127101 MS SQL (by TheLuBu)] - MSSQL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51952 MS SQL (by ChrisL)] - _SQL. ADODB Connection.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20814 MySQL (by cdkid)] - MySQL relational database management system.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=85617 MySQL (by ProgAndy)] - MySQL UDFs (without ODBC - working with libmysql.dll).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=122360 MySQL (by James)] - MySQL ODBC Connector.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=187223 romaSQL (rynow)] - Built on the concept of Laravel Query &amp;amp; doctrine. Connection string is based on ADODB / ODBC.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143331 Sharepoint 2007/2010 (by schoppet)] - Access the SOAP-Webservices of Sharepoint 2007/2010.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=17099 SQLite (by ptrex)] - SQLite is a library that implements a self-contained, embeddable, zero-configuration SQL database engine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=142977 SQLite Array Functions (by SmOke_N)] - SQLite Array Functions - a faster method for unique arrays and sorting methods.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140521 SQLite - Database (by PhoenixXL)] - UDF for SQLite so that beginners will also be able to do the stuff.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157853 SQLiteEx (by 57ar7up)] - SQLiteEx UDF v0.5.1 - Simplest work with SQLite.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163633 Xbase I/O (by RTFC)] - Transfer data between Xbase Data file (*.dbf) and AutoIt array written in pure AutoIt (no SQL, no ADO, no dlls, no external dependencies).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209526 xlsxNative (by AspirinJunkie)] - Read and write xlsx files without excel.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=19848 XML DOM Wrapper (by eltorro)] - Supports CRUD operations on XML. Including XSL and XPath.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=176895 XML (by mLipok)] - New version of XML DOM Wrapper, with many new features.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=208932 Xml2Json (by TheXman)] - Transform XML to JSON.&lt;br /&gt;
&lt;br /&gt;
== Data compression ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=85094 7z, zip, gzip, bzip2, tar (by rasim)] - Extensive library that uses a external DLL that must be provided with the script.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=92958 gZip (by Zinthose)] - Based on the parsing of gZip.exe output. It can work with memory, it doesn&#039;t work with files. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87441 LZMA (by trancexx)] - LZMA (Native Windows).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138838 Package (by Yashied)] - Package UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=129529 pZip (by asdf8)] - PureZIP_L library UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=76176 UnRAR (by rasim)] - UnRAR.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=17727 XZip (by eltorro)] - Another UDF for &amp;quot;XStandard XZIP Component&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161847 XZip (by mLipok)] - UDF for &amp;quot;XStandard XZIP Component&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=44524 Zip plugin (by eltorro)] - Zip plugin.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=73425 ZIP (by torels)] - ZIP UDF in pure AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116565 zip (by wraithdu)] - Create ZIP files and unpack ZIP files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135565 ZIP (by joakim)] - ZIP STRUCTS UDF (from scratch).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87284 ZLib (by monoceres)] - Based on ZLib.dll. It can compress/uncompress data in memory, it doesn&#039;t work with files.&lt;br /&gt;
&lt;br /&gt;
== Encryption and hash ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81332 _Base64Encode, _Base64Decode (by trancexx)] - Fast _Base64Encode, _Base64Decode.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=153246 Base91 and Base128 (by Beege)] - Base91 and Base128 functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155538 Codecrypter (by RTFC)] - Encrypt scripts without placing the key inside the script.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=201002 Cryptography API: Next Gen (by TheXman)] - Microsoft&#039;s long-term replacement for their CryptoAPI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210901 Enigma (by willichan)] - Simple encryption based on the Enigma Machine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203990 GDPR (by mLipok)] - Functions to encrypt/decrypt strings and files with the GDPR in mind.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95558 Hashes for files (by trancexx)] - Fast RC32, MD4, MD5, SHA1 calculation for big files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=107784 TrueCrypt (by FuryCell)] - TrueCrypt UDFs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140737 WinTrust (by kasty)] - verify the integrity of a file with its embedded signature or a given catalog.&lt;br /&gt;
&lt;br /&gt;
== GUI Additions ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97241 3D Pie chart (by WideBoyDixon)] - 3D Pie chart.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173924 Chart_UDF (by Kanashius)] - This UDF can be used to Display bar charts in a window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=96258 ContextHelp (by Yashied)] - Management of context help ([https://www.autoitscript.com/forum/index.php?showtopic=72152-contexthelp/ original]).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211475 DarkMode (by NoNameCode)] - Dark mode for AutoIt&#039;s Win32GUIs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=109096 ExtMsgBox (by Melba23)] - A very customisable replacement for MsgBox.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105582 GUICtrlOnChangeRegister (by Mat)] - Call a function when an edits content is changed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145149 GUIExtender (by Melba23)] - Expand and contract sections of your GUI ([https://www.autoitscript.com/forum/index.php?showtopic=117909 original]).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197654 GuiFlatButton (by kurtykurtyboy)] - Change colors of regular buttons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119505 GUIFrame (by Melba23 &amp;amp; Kip)] - Divide a GUI into adjustable frames.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=144207 GUI Panel (by FireFox)] - Manage child GUIs as panel ctrls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113723 GUI Scrollbars (by Melba23)] - Automatically sized scrollbars with a single command.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161184 MetroGUI (by BBs19)] - Windows 10 style buttons, toggles, radios etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20967 Modern tray menu (by Holger)] - Allows the creation of modern, fancy GUI and tray menus with icons and colors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=194693 MTSkin (by Taskms4)] - Simply create modern looking GUIs (borderless GUI, Interactive menu panel (with mouse-over detection), a bunch of skins).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182136 Notifications (by S3cret91)] - Display permanent desktop notifications.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=136149 Notify (by Melba23)] - Small notifications on the edge of the display.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161750 Pie chart (by Andreik)] - Pie chart.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75429 Real Vista Aero Glass (by James)] - Real Vista Aero Glass UDF - you can apply glass effect to your GUI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=212767 Round Corner UDF (by Nine)] - Uses simple basic GUI functions to create round corners without the use of GDI+.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=71811 SetOnEvent (by martin)] - Provides an easy way for an event to call functions with parameters.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=103871 _SysTray (by wraithdu)] - Get info about and manipulate Systray icons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108445 Toast (by Melba23)] - Small message GUIs which pop out of the Systray.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=110003 Tray Icon Bar Graph (by BeeGee)] - Creates a scrolling bar graph as the tray icon.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=132864 Uskin (by JScript)] - Allows you to skin your GUI using the Windows &#039;&#039;.MSstyles&#039;&#039; files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191821 Wi3SMenu (by NHD)] - Create a slide menu with Windows 10 style. Supports color, icon and opacity.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=129196 WinSnap (by Beege)] - Automatic Window Alignment by applying that &amp;quot;snappy edge&amp;quot; effect to your GUI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32494 XSkin (by Valuater)] - Allows skinning of your GUI and to apply custom skins.&lt;br /&gt;
&lt;br /&gt;
=== Controls ===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202529 BrowseForFolder (by MrCreatoR)] - Handle SHBrowseForFolderW with more options, such as multi selection (checkboxes), window position, controls text and more. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=146406 Calendar (by jmon)] - Calendar UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=125293 ChooseFileFolder (byMelba23)] - Single and multiple selections from specified path treeview listing.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=96464 Colorpicker (by Yashied)] - Create a button for the user to select a color.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=204283 Date Range Picker (by Nine)] - Date Range Picker Control.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=123409 Explorer Frame UDF (by Beege)] - Takes any frame created by GUIFrame and turns it into a MS-Windows like Explorer window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173926 FileExplorer Treeview and Listview (by Kanashius)] - Create a Treeview and/or Listview able to browse files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173929 GDIPlus Slider UDF (by Kanashius)] - This UDF can be used to create a slider with an imagebackground and an image to move.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=79412 Graph control (by andybiochem)] - Easily create and show bar chart and line charts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=104399 GraphGDIPlus UDF (by andybiochem)] - Easily create and show bar chart and line charts with GDI+ to take advantage of double-buffering.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105682 GUICtrlCreateFinder (by Mat)] - Allows you to create a window finder control like the one seen in AutoIt Window Info.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=107965 GUIHotkey (by Mat)] - UDF for using native hotkey controls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182492 GUIListViewEx (by Melba23)] - Insert, delete, move, drag, sort, edit and colour ListView items.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111438 GUIPager (by Mat)] - Create and control native pager controls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20967 GUI/Tray Menu (by Holger, LarsJ, AZJIO)] - GUI/Tray Menu with icons and colors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166594 GUITreeViewEx (by Melba23)] - Check/clear parent and child checkboxes in a TreeView.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=90598 Hotkey input control (by Yashied)] - Hotkeys Input Control UDF Library (Non-native).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173932 ListView Edit UDF (by Kanashius)] - This UDF can be used to simply edit an Listview.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=109355 ListView - Explorer like ListView UDF (by Beege)] - This UDF simplify creating MS Explorer-like ListViews.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143711 Marquee (by Melba23)] - Make tickertape info bars.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143380 Predict Text UDF (by PhoenixXL)] - Sub classes the edit control and matches the current word through the Database &amp;amp; sets selection in accordance.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163939 Progressbar new style (by Muzaiyan)] - New styles for your progress bar.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=74649 Progressbar with GDIplus (by ProgAndy)] - You even can use full textured images.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151636 RestrictEdit_SRE UDF (by PhoenixXL)] - Restrict the text that can be entered in an editbox through a String Regular Expression.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=128242 Ribbon (by trancexx)] - UDF for Windows Ribbon framework.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114034 StringSize (by Melba23)] - Automatically size controls to fit the text you want to put in them.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126958 Syslink (by Yashied)] - Provides a convenient way to embed hypertext links in a window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105814 Table (by andybiochem)] - Table UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211024 Toggle Button (by Andreik)] - Create simple toggle buttons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=125251 TVExplorer (by Yashied)] - Allows to create TreeView (TV) Explorer controls that display a tree of files and folders.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=190659 Virtual Listview (by LarsJ)] - Virtual Listview for large amounts of data with a large number of rows.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195053 Windows Message Monitor (by LarsJ)] - Monitor Windows Messages of a window or control.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=118317 Battery UDF (by Yashied)] - Retrieves a various information and current status of the battery(s).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154727 BuildPartitionTable (by RTFC)] - Scans a physical drive&#039;s partition table and returns a partition_table, allocation_table and volumes_table.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155674 CommAPI (by therealhanuta)] - Serial and parallel communication (COM port, RS-232, LPT port) - without installing DLL&#039;s (using Windows API calls).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=77731 Device Management (by weaponx)] - Device Management API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97487 DirectShow (by monoceres)] - DirectShow UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164700 DirectSound (by eukalyptus)] - DirectSound UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164701 Direct2D (by eukalyptus)] - Direct2D UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=99713 Drive Info (by NerdFencer)] - Gathers drive info for Hard Drives, Disk Drives, and Floppy Drives.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138989 FritzBox (by Allow2010)] - _FB_Tools - manage your FritzBox from Autoit.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121084 I/O Port Functions (by Ascend4nt)] - Input/Output UDF for interacting with ports (x64 Parallel Port, Keyboard etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203207 MediaDevice (by Danyfirex)] - Transfer files to portable devices like phones, storages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154350 Monitor Configuration (by jaberwacky)] - Monitor Configuration UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155469 Mouse (by AlmarM)] - AutoIt powered mouse events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=147325 MouseTrapEvent (by ozmike)] - MouseTrapEvent UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149083 NetInfo (by Nessie)] - UDF for test internet download speed and upload speed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155539 Network configuration (by jguinch)] - Network configuration UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182684 Nitgen (by Jefrey)] - UDF to work with Nitgen fingerprint readers that use NGenBio SDK.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210968 Printer Manager (by Nine)] - Manage printers with winspool.drv DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155485 Printers management with WMI (by jguinch)] - Allows to manage printers: add/delete printer, driver, port, or obtain configuration, set default printer ...&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=189190 Serial port UDF / COM port UDF (by MazeM)] - Another UDF for the serial port. It is very similar to CommAPI using kernel32.dll, but all code is packed into a single file without any dependencies.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=128546 Serial Port/COM (by martin)] - Serial Port /COM Port UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27755 SMARTDRIVE (by ptrex)] - SMART drive Analysis.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158640 SPI Hardware Interface (by Blinky)] - Communicate with the MAX335 chip using the SPI protocol via the LPT (printer) port.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=8188 VISA/GPIB (by Angel)] - VISA/GPIB library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=68866 Webcam (by LIMITER)] - Webcam UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70857 Webcam (by ludocus)] - Webcam UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91018 WiFi (by MattyD)] - Low level control over your wireless LAN.&lt;br /&gt;
&lt;br /&gt;
== Information gathering ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=29404 Computer information (by JSThePatriot)] - A general purpose library to get various details about a Windows machine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151920 NetworkStatistics (by Ascend4nt)] - Network Interface Info, Statistics, and Traffic.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=54039 WinPcap (by JRSmile)] - Wrapper for the windows packet capture library WinPcap.&lt;br /&gt;
* [https://opensource.grisambre.net/pcapau3/ WinPcap (by Nicolas Ricquemaque)] - A library to access the main functionalities offered by the WinPcap driver.&lt;br /&gt;
&lt;br /&gt;
== Internet protocol suite ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=207859 cURLX64 (by Beege)] - cURL UDF with x64 support.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=137456 cURL (by seangriffin)] - A UDF for transferring data with URL syntax.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=187718 HTTP lib (by Jefrey)] - HTTP lib (GET, POST and upload) UDF to simplify HTTP requests, mainly when dealing about POST data or file uploads.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202895 HttpApi (by TheXman)] - HTTP Server API enables applications to communicate over HTTP without using MS Internet Information Server (IIS).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=40243 IMAP (by mikeytown2)] - IMAP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108422 IMAP4 (by Tipulatoid)] - IMAP4 UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=43515 IRC (by McGod)] - A lightweight library for communicating with IRC servers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=159285 IRC (by rcmaehl)] - IRC UDF - Updated Version of Chips&#039; IRC UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=22838 POP3 (by Apzo)] - POP3 library for retrieving email messages. Not compatible with Gmail because it uses SSL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167339 POP3 (by mLipok)] - POP3 UDF According to the 1939 RFC, modified version with Quoted Printable decoder.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154530 Prowl (by mrflibblehat)] - Push notifications to iPhone, iPod touch or iPad using Prowl (Growl client for iOS).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138095 SFTP (by Lupo73)] - UDF to support SFTP protocol using PSFTP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154054 Socket UDF (by funkey)] - Socket UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=23860 SMTP (by Jos)] - Smtp Mailer That Supports Html And Attachments.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167292 SMTP Mailer UDF (by mLipok)] - Smtp Mailer That Supports Html And Attachments - Modified Version with support to save EML files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81687 SNMP (by enaiman)] - SNMP_UDF for SNMPv1 and SNMPv2c.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70759 SNMP - MIB protocol (by ptrex)] - Reading toner status from SNMP device with WMI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166579 SSH (by jeanphile)] - Use the SSH protocol very easily in your code.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=185329 STUN (by j0kky)] - STUN is a protocol that permits you to know your external IP but, more interesting, your external port associated to your internal port.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=184817 SyslogSend (by Irios)] - This allows sending (BSD) messages to a syslog server using UDP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169774 TCPServer (by Jefrey)] - Multi client, event-based, able to bind console app to socket.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=57022 UPnP Protocol (by ptrex)] - UPnP - Read and Control your devices in side out.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=84133 WinHTTP (by trancexx)] - Access the HTTP protocol for creating GET and POST requests and submitting them with conforming standards, cookies not supported.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=77503 WinInet (by -Ultima-)] - Access standard Internet protocols (FTP, Gopher and HTTP). Supports GET/POST requests and cookies.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=181645 Winsock (by j0kky)] - Create client/server application using native winsock functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191954 WSA_NBTCP (by ripdad)] - Windows Sockets API - Non-Blocking Transmission Control Protocol.&lt;br /&gt;
&lt;br /&gt;
== Maths ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170658 Advanced Math UDF (by scintilla4evr)] - Advanced mathematical functions (primes, number sequences, interpolate, calculate values of functions like Riemann zeta etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=102686 Advanced rounding (by Mat)] - Support for different measures of accuracy and 8 ways to resolve tie breaks.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83529 Big number (by eukalyptus)] - Make calculations with extremely large numbers that AutoIt normally is not able to support.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106551 Decimal To fraction (by Malkey)] - Converts any decimal number to a fraction. Example: 1.2 to 6/5.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162921 Eigen4AutoIt (by RFTC)] - Allows to perform fast matrix operations on large numerical data sets, and much more ....&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=212357 Linear Algebra (by AspirinJunkie)] - BLAS/LAPACK-based Linear Algebra and nonlinear adjustment UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140789 MathsEx UDF (by PhoenixXL)] - Functions for Carrying Out More Advanced Mathematical Calculations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81189 Number base conversion (by james3mg)] - From, to and between positive bases less than 63 (decimals supported).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=117156 NumToWord (by Mat)] - Convert numerals to a human readable string.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108803 Polynomials (by Mat)] - Functions for using polynomials.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83091 Primes (by jennico)] - Many functions dealing with prime number generation and calculations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94770 Roman Numerals (by AZJIO)] - Roman Numerals.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=98160 Root function (by Mat)] - Working out real roots of numbers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209527 Stat (by AspirinJunkie)] - Statistics for Autoit.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163899 StringAPL (by minx)] - inline APL interpreter.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=82722 Trigonometric and math functions (by trancexx)] - _ATan2(), _Cosh(), _Frexp(), _Hypot(), _Ldexp(), _Logb(), _Sinh(), _Tanh().&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95357 FreeImage library (by ProgAndy)] - Various operations on images, such as rotate, resize, flip.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127263 HtmlHelp (by Geodetic)] - HtmlHelp functions for context-sensitive help from CHM (compiled HTML) files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116009 HyperCam (by seangriffin)] - HyperCam (Screen Recording) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182535 HyCam2 (by willichan)] - Automation for HyCam2 screen recording utility.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50608 OCR (by ptrex)] - Real OCR in AU3 - MODI with MS Office 2003.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=89542 OCR (by seangriffin)] - Tesseract (Screen OCR) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206133 OCRSpace (by MrKm)] - Convert Images to text with the OCRSpace API. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51054 Printer controller (by martin)] - Print text in any font, size and colour at any position on the page, draw lines, curves, elipses, pies in any colour, and print images.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=73993 Printing (by GRS)] - Printing from AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202621 QRCreator (by BugFix)] - Simple QR-code creation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161831 RTF_Printer (by mLipok)] - Printing RichEdit in the background.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94834 Simple DirectMedia Layer (by AdmiralClaws)] - Adds support for joysticks, CDs, 2D graphics, timers. See [https://www.libsdl.org/ SDL website] for more information.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=207324 UWPOCR (by Danyfirex)] - Universal Windows Platform Optical Character Recognition API.&lt;br /&gt;
&lt;br /&gt;
===Graphics and image===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202987 AutoYolo3 (by smartee)] - Real-Time Object Detection using YOLOv3 wrapper.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113881 au3Irrlicht2 (by JRowe)] - Combining Irrlicht and AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=86748 AVI writing udf (by monoceres)] - Create uncompressed avi&#039;s from bitmap files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27362 Bitmap Library (by evilertoaster)] - Bitmap Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202663 GIF animation (by Nine)] - Fast cached GIF animation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150231 GTK+  (by prazetto)] - GTK+ Framework | Widgets.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=13096 ImageGetInfo (by Lazycat)] - Read info from JPEG, TIFF, BMP, PNG and GIF - size, color depth, resolution.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/471-image-search-udf Image Search (by VIP)] - Search for an image on the desktop. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70506 IrrLicht (by A. Percy)] - A 3D graphics engine suitable for creating games.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160732 OpenCV (by myliseJ)] - UDF for the OpenCV library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206432 OpenCV v4+ (by smbape)] - OpenCV UDF with support for OpenCV v4+.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151011 OpenGL (by LarsJ)] - OpenGL without external libraries etc. For JPEG files it also retrieves various Exif information.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148129 OpenGL (2.0) (by minx)] - New set of UDFs for OpenGL + AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=152950 S3D (by Starg)] - Draw simple 3D graphics with GDI+.&lt;br /&gt;
&lt;br /&gt;
===Players===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114143 VLC (by seangriffin)] - VLC (Media Player) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91316 VLC Media Player (by ptrex)] - VLC Media Player.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27352 WMP (by ConsultingJoe)] - Windows Media Player UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=44008 WMP - Media Controls (by CFire)] - Another Windows Media Player UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203154 WMP - GUI Control (by SudeepJD)] - IE based WMP Control.&lt;br /&gt;
&lt;br /&gt;
===Sound===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83481 BASS Function Library (by BrettF)] - Sound and Music via wrappers for Bass, BassEnc, Bass FX, BassSFX, BassAsio and BassCd DLLs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173808 libZPlay (by Danyfirex)] - Multimedia library for playing mp3, mp2, mp1, ogg, flac, ac3, aac, oga, wav and pcm files and streams.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=37072 MIDI (by eynstyne)] - MIDI UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=208116 MIDI (by MattyD)] - Wrap of the Windows MIDI functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114742 SAPIListBox (by seangriffin)] - SAPIListBox (Speech Recognition) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=100439 TTS (by Beege)] - Text-to-Speech UDF.&lt;br /&gt;
&lt;br /&gt;
== PDF ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162195 Acrobat Reader - ActiveX Viewer (by mLipok)] - Make your own PDF Viewer GUI with Acrobat Reader ActiveX COM Object &amp;quot;AcroPDF.PDF.1&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164469 Debenu PDF Viewer SDK (by mLipok)] - A collection of functions to display PDF files in your applications using Debenu PDF Viewer SDK.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160875 Debenu Quick PDF Library (by mLipok)] - A collection of functions for Debenu Quick PDF Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75832 FoxIt Reader (by ptrex)] - PDF Reader in AU3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=118827 MPDF (by taietel)] - Create PDF from your application.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=42776 PDFCreator (by ptrex)] - Automation of PDFCreator allows you to create and manipulate PDF files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170550 PDFCreator (by mLipok)] - UDF for PDFCreator v1.x.x with working EVENTs Handler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32261 _StringToPDF (by Tam0r)] - Write a string to a PDF file and specify font size, type etc.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145158 Firewall (by JLogan3o13)] - Control and manipulate the Windows Firewall (enable/disable, Exclusions list, enable/disable ports etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=194015 Firewall policy2 (by Bilgus)]- Provides access to the firewall policy for Windows Vista+.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150819 VirusTotal (by Danyfirex)] - VirusTotal API 2.0 UDF.&lt;br /&gt;
&lt;br /&gt;
== Social Media and other Website API ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=159254 Cex.io (by AquilesCrespo)] - UDF script for using with the web api from https://cex.io/ server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169333 CrowdinAPI (by mLipok)] - Uses the [https://crowdin.com/page/api crowdin.net website API] for some functions (create projects, add and update files, download translations or integrate localization).&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/290-dropbox-authenticator/ Dropbox authenticator (by Gimerly)] - Dropbox authenticator.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158106 Easypost (by dcat127)] - Print USPS Postage Labels.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114801 eBay (by seangriffin)] - eBay UDF (functions GetItemStatus and GetSingleItem from the &amp;quot;Shopping API&amp;quot;).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=141340 Gmail (by PhoenixXL)] - Remote Gmail (UDF).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=192422 Gmail API (by Ascer)] - Automate communication with Gmail using oAuth 2.0 security. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=98504 Google Functions (by Beege)] - Google Functions (Suggestions, Definitions, Translate, Convert).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=115437 Google Maps (by seangriffin)] - Google Maps UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70675 iTunes (by torels)] - iTunes UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=101802 iTunes (by Beege)] - Another iTunes UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150985 No-IP (by Nessie)] - Simply update your no-ip hostname(s) and retrieve the ip address of an no-ip address.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=192391 oAuth (by Ascer)] - Open standard for access delegation, commonly used to grant websites or applications access to other websites.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150838 PasteBin (by mrflibblehat)] - Pastebin UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121767 Skype (by FireFox)] - Skype4COM provides an ActiveX interface to the Skype API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113234 Teamspeak 3 (by chipDE)] - Teamspeak 3 UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186944 TeamViewer API (by mLipok)] - A collection of function for use with TeamViewer API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186381 Telegram Bot (by LinkOut)] - UDF for [https://core.telegram.org/api Telegram messenger API].&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166547 TVmaze.com API (by BBs19)] - TVmaze.com API UDF (TV-Series).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116600 Twitter (by seangriffin)] - Manage Twitter.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149247 Yahoo Weather (by Nessie)] - Yahoo Weather API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=112775 Youtube Uploader (by BrettF)] - AYTU - AutoIt Youtube Uploader.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50880 ACL (by ptrex)] - Set ACL on windows Objects.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=134508 ACL (by FredAl)] - Do most everything with the DACL and ownership on all types of objects: Files or folders, Registry keys, services, Kernel and WMI objects, etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206400 BITS (by DonChunior)] - Background Intelligent Transfer Service to download files from or upload files to HTTP web servers and SMB file shares.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=184937 CertUtil (by mLipok)] - Wrapper for windows certutil.exe (command-line program that is installed in Windows as part of Certificate Services).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113560 FileSystemMonitor (by seangriffin)] - Monitors the file system by recording all file system events occurring within a given path.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111018 ITaskBarList (by Beege)] - ITaskBarList UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=74118 Local account (by engine)] - Manage local accounts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161193 Magnifier Functions (by Ascend4nt)] - Exposes most of the useful Magnifier API functions available since Windows Vista.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75250 Registry (by engine)] - Windows Registry UDFs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50551 Registry (by seanhart)] - RegWriteAllUsers / RegDeleteAllUsers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=80201 Service (by arcker)] - Build your own service with AutoIt code.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124508 Startup (by guinness)] - Create Startup entries in the Startup Folder or Registry.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164756 SCCM (by JLogan3o13)] - Systems Center Configuration Manager Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=134628 System restore (by FredAI)] - System restore UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186111 SubstWrapper (by mLipok)] - Wrapper for windows subst.exe command - (Associates a path with a drive letter).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135994 Taskplanner/Taskscheduler COM (by Allow2010)] - an UDF for using the Windows Taskplaner / Task Scheduler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83355 Task Scheduler (by dbzfanatic)] - Task Scheduler UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=200068 TaskScheduler (by water)] - Brushed up Task Scheduler UDF. Link to the [[TaskScheduler|documentation pages]].&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173934 TTS (by Kanashius)] - Used with SAPI Automation Object - text-to-speech (TTS) engine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158377 UAC (by AdamUL)] - User Account Control (UAC) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=175719 Utter (by Surya)] - Utilizing more of SAPI (Speech Recognition UDF).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127075 WIMGAPI (by Homes32)] - Manipulate Windows Image Files (.wim) without ImageX.exe.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=28436 Windows Events (by Emperor)] - Create your own Windows events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=6487 Windows Service Control functions (by SumTingWong)] - Some limited functions to control services (create, start, stop, delete, check ...).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81880 Windows Services (by engine)] - Windows Services UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163178 WRMF (by Luigi)] - WRMF - Windows Registry Monitor Call Function.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&amp;lt;!-- Removed 2020-05-30 as adequate documentation is missing * [https://www.autoitscript.com/forum/topic/178871-dllcall-with-c-example/#comment-1285754 SMSApi (by mLipok)] - UDF for SMSAPi which provides SMS services. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Removed 2020-05-30 as adequate documentation is missing * [https://www.autoitscript.com/forum/index.php?showtopic=178589 BulkSMS (by Skysnake)] - UDF for BulkSMS which provides SMS services. --&amp;gt;&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145099 _AdlibEnhance (by JScript)] - Enhance Adlib to call functions with parameters, pause and resume.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160936 Android (by Moriba)] - Control any Android device.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97826 Animated tray icons (by Yashied)] - Make animated tray icons easily.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163577 Atom Table (by Ascend4nt)] - Store (add, find, delete, and query) strings locally (at program level) or globally (at OS level) with unique numerical identifiers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170087 Barcode generators (by willichan)] - Creates a Code128A/B/C or Creates a Code39 or Code39Extended optimized barcode from supplied data.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211660 BlockInput (by Nine)] - Block all input coming from mouse and/or keyboard, without having an UAC warning displayed. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87735 BlockInputEx (by MrCreatoR)] - Supports a few features that built-in BlockInput() function does not.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=29763 Clipboard (by eltorro)] - When apps need to watch the clipboard.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170630 ClipboardEx (by ozmike)] - Allows to have more than 1 item in the Clipboard. Handles all data types, not just text.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81267 Clipboard History (by wraithdu)] - Save and restore the entire clipboard contents. Inspired by AHK&#039;s ClipboardAll.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169610 CmdLine (by Jefrey)] - Collection of functions to parse command line arguments.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126569 Console (by Shaggi)] - Functions and features to work wiht Console input/output.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121833 Copy (by Yashied)] - Copy or move files and directories without suspending your script. Retrieve the current state (copied bytes, error code etc.) while copying.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154684 Date / Time convert (by Melba23)] - Transform date/time formats.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=99106 _DLLStructDisplay (by Ascend4nt)] - Show Struct in ListView.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157689 _FileGetMimeType (by Wiliat87)] - Retrieve MIME types based on the extension of the filename/filepath/URL provided.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=117033 File locking with cooperative semaphores (by willichan)] - Simple file locking without a server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157241 FindMimeFromData (by twbradio)] - FindMimeFromData using urlmon.dll.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=181997 Font Icon (by J2TeaM)] - Use Font Awesome in your AutoIt project.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=68422 HotString (by jvanegmond)] - Similar to the HotKey function but trigger on a string, instead of a key or key combination.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173946 LASM - Light Assembler (by minxomat)] - Inline UDF for an Assembler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161628 LFN (by orbs)] - Overcome MAX_PATH limit of 256 chars.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111492 Link Grammar for AutoIt (by JRowe)] -  Input is a regular sentence in English, German or Italian, output is a pattern parsed from the structure of the sentence.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/147-mruau3 MRU (by Yashied)] - Most Recently Used (MRU) List Automation functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=188158 .NET Common Language Runtime (CLR) Framework (by Danyfirex, Junkew, Larsj, ptrex, Trancexx)] - Allows AutoIt to access .NET Class Libraries.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=101733 NoFocusLines (by Melba23)] - Remove the dotted focus lines from buttons, sliders, radios and checkboxes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149176 NotifyIcon (by FireFox)] - Create, delete and manage self notify icons (formerly TrayIconEx). &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=63318 PixelGetColor (by Manadar)] - Get or Read Pixel from memory.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167024 RDC (by Yashied)] - ReadDirectoryChanges Wrapper.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51103 Resources (by Zedna)] - Embed any binary data into your AutoIt compiled EXE files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162499 ResourcesEx (by guinness)] - Up to date version of Zedna&#039;s Resources UDF. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111215 Restart (by Yashied)] - Allows to restart a script from any location with full restoration of the original command line parameters.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51547 SciLexer (by Kip)] - Editing control, supports multiple editors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=152093 ScriptEditor (by pandel)] - ScriptEditor with I18N support and customizable lexer completely written in AutoIt (based on SciLexer).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162033 Spell Checker (by iCode)] - Spell Checker functions to call Hunspell, Hyphenate and MyThes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164444 Synology filestation (by nend)] - Functions to interact with a Synology NAS server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163328 TimeConvert (by orbs)] - Convert UTC to/from local time, and/or reformat the string representation.&lt;br /&gt;
[[Category:UDF]]&lt;/div&gt;</summary>
		<author><name>Nine</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=FAQ&amp;diff=15121</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=FAQ&amp;diff=15121"/>
		<updated>2024-10-02T14:18:39Z</updated>

		<summary type="html">&lt;p&gt;Nine: /* Why does the Ctrl key get stuck down after I run my script? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of frequently asked questions asked on the forums.&lt;br /&gt;
&lt;br /&gt;
Other FAQs include:&lt;br /&gt;
* The one found in the [http://www.autoitscript.com/autoit3/docs/faq.htm AutoIt HelpFile].  Much of it is about the transition from V2 to V3, but most is still relevant and should be a port of call, as well as this one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I debug my script?==&lt;br /&gt;
&lt;br /&gt;
=== In SciTE ===&lt;br /&gt;
This one has a myriad of answers, but the most effective is to begin by using the [http://www.autoitscript.com/autoit3/scite/ SciTE4AutoIt3 Editor] to create or edit scripts. This program is useful in debugging for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Syntax highlighting allows for immediate viewing of any mistakes from unended script tags or quotes. This allows the scripter to visibly see the difference between the following portions of code.&lt;br /&gt;
[[File:FAQ_Q1_2.jpg|center|Incorrect code]]&lt;br /&gt;
And the correct version: &lt;br /&gt;
[[File:FAQ_Q1_3.jpg|center||Correct Code]]&lt;br /&gt;
* Global syntax check built directly into the tools menu allows you to check an entire script for problems all at once.&lt;br /&gt;
* Built-in code tidying program that correctly indents untidy code and repairs messy scripts to allow them to be more readable. It also corrects problems with incorrectly capitalised function names and variables.&lt;br /&gt;
* Per-line trace insertion allows you to log every line of code executed to debug errors.&lt;br /&gt;
* Debug MsgBoxes or ConsoleWrites are able to be added anywhere in the script directly from SciTE. ConsoleWrite lines are less intrusive and prevent the added annoyance to the user of MsgBoxes.&lt;br /&gt;
&lt;br /&gt;
You can also use AutoIt3Wrapper directive:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#AutoIt3Wrapper_Run_Debug_Mode=Y&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:FAQ_Q1_4.jpg|center|Picture of SciTE4AutoIt3]]&lt;br /&gt;
&lt;br /&gt;
=== Using more code to check @error value ===&lt;br /&gt;
Nearly all functions will return something.  Most of the time when a function fails, it returns 0 and sets @error.  You can use this information not only to create scripts that handle for different errors but to debug and find out exactly why you are having problems.  Check the help file for specific functions and their return values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
_Example()&lt;br /&gt;
&lt;br /&gt;
Func _Example()&lt;br /&gt;
	Local $aFileList = _FileListToArray(@ScriptDir, &#039;NO_EXISTING_FILE.TEST&#039;)&lt;br /&gt;
	If @error Then ; check if _FileListToArray() function return any error&lt;br /&gt;
		MsgBox($MB_ICONERROR, &#039;_FileListToArray&#039;, &#039;@error = &#039; &amp;amp; @error &amp;amp; @CRLF &amp;amp; &#039;@extended = &#039; &amp;amp; @extended) ; show error message&lt;br /&gt;
		Return ; return / exit from function to prevent unexpected further error&#039;s&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	For $iFile_idx = 1 To $aFileList[0]&lt;br /&gt;
		FileRead($aFileList[$iFile_idx])&lt;br /&gt;
		; any further code&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
EndFunc   ;==&amp;gt;_Example&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Via the Tray icon===&lt;br /&gt;
You can add this line at the top of your script (1 is on, 0 is off) to enable debugging from the tray icon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;AutoItSetOption (&amp;quot;TrayIconDebug&amp;quot;, 1);0-off&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then if you run the script (uncompiled as an AU3 file), you can mouse over the AutoIt icon in the system tray (down by the clock) to display debugging information.&lt;br /&gt;
&lt;br /&gt;
[[File:FAQ_Q1_1.jpg|center|Example output for TrayIconDebug]]&lt;br /&gt;
&lt;br /&gt;
=== OutputDebugString native call ===&lt;br /&gt;
You can also debug a script on any computer by adding the following code to your script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func _MyDebug($sMessage, $iError = @error, $iExtended = @extended)&lt;br /&gt;
	If $iError Or $iExtended Then&lt;br /&gt;
		$sMessage &amp;amp;= &#039;[ @error = &#039; &amp;amp; $iError &amp;amp; &#039; @extended = &#039; &amp;amp; $iExtended &amp;amp; &#039; ]&#039;&lt;br /&gt;
	EndIf&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;none&amp;quot;, &amp;quot;OutputDebugString&amp;quot;, &amp;quot;str&amp;quot;, $sMessage)&lt;br /&gt;
	Return SetError($iError, $iExtended, &#039;&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_MyDebug&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then, when you need to add a debug line, call it as necessary. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;_MyDebug(&amp;quot;The value of Variable 1 at this time is &amp;quot; &amp;amp; $var1)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This debugging is completely transparent to the user, and is only viewable with a program such as DebugView from SysInternals. This method of debugging has the added advantage of being available to the developer in situations where is not acceptable or feasable to install SciTE on a client&#039;s unit.&lt;br /&gt;
&lt;br /&gt;
=== Graphical debugger ===&lt;br /&gt;
Stumpii created a [http://www.autoitscript.com/forum/index.php?showtopic=21834 Graphical AutoIt Debugger], similar to Dev-C++&#039;s debugging style.&lt;br /&gt;
&lt;br /&gt;
[[File:FAQ_Q1_5.jpg|center|Stumpii&#039;s Graphical AutoIt Debugger]]&lt;br /&gt;
&lt;br /&gt;
=== Another debugger for AutoIt ===&lt;br /&gt;
Heron created a [http://www.autoitscript.com/forum/index.php?showtopic=103142 Another debugger for AutoIt].&lt;br /&gt;
&lt;br /&gt;
The latest version by asdf8 is here:&lt;br /&gt;
https://www.autoitscript.com/forum/topic/103142-another-debugger-for-autoit/?do=findComment&amp;amp;comment=1303208&lt;br /&gt;
&lt;br /&gt;
=== Other UDF to log/trace/script analyze ===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=195882 ErrorLog (by mLipok)] - Logs program activities and errors to different output locations.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=156196 Log4a (by zorphnog)] - Logging library loosely based upon the log4j and NLog libaries.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=195862 Loga (by Danyfirex)] - Simple logging library to keep track of code with an integrated console.&lt;br /&gt;
&lt;br /&gt;
==How can I run something that is not an exe file [.txt, .msi, .pdf,.jpg etc.] [or] How can I open a webpage in the default browser?==&lt;br /&gt;
It was for this reason that the ShellExecute function was created. Here is one example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;ShellExecute(&amp;quot;C:\autoitscripts\test.au3&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;edit&amp;quot;, @SW_MAXIMIZE)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also specify a web address this way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;ShellExecute(&amp;quot;http://www.autoitscript.com/forum&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;open&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you normally are able to right-click the file and select print, then you can also print the file from AutoIt using this function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;ShellExecute(&amp;quot;C:\boot.ini&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;print&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you wish to open the file with the default program, you can do as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;ShellExecute(&amp;quot;C:\autoitscripts\test.au3&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you wish your script to wait until the process is finished, you can use the ShellExecuteWait function with the same parameters.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
The default verb is the verb configured in the registry. If no verb is set as default in the registry then the &amp;quot;open&amp;quot; verb is used. If the &amp;quot;open&amp;quot; verb is not present then the first verb listed in the registry is used.&lt;br /&gt;
&lt;br /&gt;
==How can I prevent more than one copy of my script from running at once, or detect another copy of my script running?==&lt;br /&gt;
&lt;br /&gt;
=== _Singleton function ===&lt;br /&gt;
There are a few different ways to go about this. You can use a function called _Singleton to detect multiple instances of your script. An example of how to use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;Misc.au3&amp;gt;&lt;br /&gt;
_Singleton(&amp;quot;TheNameOfMyScript&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this instance, the script will bring up some messages explaining to the user of the occurring events. &lt;br /&gt;
This example will show you how the above function can be used in a real world application.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;Misc.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If _Singleton(&amp;quot;MyScriptName&amp;quot;, 1) = 0 Then&lt;br /&gt;
    ; If successful, running our script a second time should cause us to fall through here&lt;br /&gt;
    MsgBox($MB_ICONERROR, &amp;quot;User Generated Error Message&amp;quot;, &amp;quot;Error: This script is already running!&amp;quot;)&lt;br /&gt;
Else&lt;br /&gt;
    ; We have detected that we are the only instance running, now we will run a second instance to display _Singleton&#039;s function!&lt;br /&gt;
    MsgBox($MB_ICONINFORMATION, &amp;quot;Information!&amp;quot;, &amp;quot;We are the first instance of this script, press OK to run another instance and trigger the error message!&amp;quot;)&lt;br /&gt;
    Switch @Compiled&lt;br /&gt;
        Case 1&lt;br /&gt;
            Run(FileGetShortName(@ScriptFullPath));when running an app, it&#039;s usually better to use its short name&lt;br /&gt;
        Case 0&lt;br /&gt;
            Run(FileGetShortName(@AutoItExe) &amp;amp; &#039; /AutoIt3ExecuteScript &#039; &amp;amp; FileGetShortName(@ScriptFullPath))&lt;br /&gt;
    EndSwitch&lt;br /&gt;
    Sleep(1000)&lt;br /&gt;
    MsgBox($MB_ICONINFORMATION, &amp;quot;Information!&amp;quot;, &amp;quot;We ran a second instance, you should have recieved an error message!&amp;quot;, 5)&lt;br /&gt;
EndIf&lt;br /&gt;
Exit&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===_MutexExists function ===&lt;br /&gt;
Another method is to use _MutexExists.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If _MutexExists(&amp;quot;MydeswswScriptName&amp;quot;) Then&lt;br /&gt;
	; We know the script is already running. Let the user know.&lt;br /&gt;
	MsgBox($MB_OK, &amp;quot;Script Name&amp;quot;, &amp;quot;This script is already running. Using multiple copies of this script at the same time is unsupported!&amp;quot;)&lt;br /&gt;
	Exit&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
;Function Author- Martin&lt;br /&gt;
Func _MutexExists($sOccurenceName)&lt;br /&gt;
	Local $ERROR_ALREADY_EXISTS = 183, $handle, $lastError&lt;br /&gt;
	$sOccurenceName = StringReplace($sOccurenceName, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); to avoid error&lt;br /&gt;
	$handle = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;CreateMutex&amp;quot;, &amp;quot;int&amp;quot;, 0, &amp;quot;long&amp;quot;, 1, &amp;quot;str&amp;quot;, $sOccurenceName)&lt;br /&gt;
	$lastError = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;GetLastError&amp;quot;)&lt;br /&gt;
	Return $lastError[0] = $ERROR_ALREADY_EXISTS&lt;br /&gt;
EndFunc;==&amp;gt;_MutexExists&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How can I run my script as a service?==&lt;br /&gt;
This is also a question with multiple answers, and none of them are the only way to do it. The first question to ask yourself is whether or not you wish to install the service on other computers besides your own.&lt;br /&gt;
&lt;br /&gt;
=== On your own computer - One time only ===&lt;br /&gt;
The easiest way to do this is to use Pirmasoft RunAsSvc. This program makes services easy to install and easy to remove when necessary.&lt;br /&gt;
&lt;br /&gt;
=== On all computers that run your script===&lt;br /&gt;
To do this you can use SRVANY.EXE and [http://www.autoitscript.com/forum/index.php?showtopic=6487 ServiceControl.au3]. You can then use this code to install your script as a service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;ServiceControl.au3&amp;quot;&lt;br /&gt;
$servicename = &amp;quot;MyServiceName&amp;quot;&lt;br /&gt;
_CreateService(&amp;quot;&amp;quot;, $servicename, &amp;quot;My AutoIt Script&amp;quot;, &amp;quot;C:\Path_to_\srvany.exe&amp;quot;, &amp;quot;LocalSystem&amp;quot;, &amp;quot;&amp;quot;, 0x110)&lt;br /&gt;
RegWrite(&amp;quot;HKLM\SYSTEM\CurrentControlSet\Services\&amp;quot; &amp;amp; $servicename &amp;amp; &amp;quot;\Parameters&amp;quot;, &amp;quot;Application&amp;quot;, &amp;quot;REG_SZ&amp;quot;, @ScriptFullPath)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or use the following code to delete this service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;ServiceControl.au3&amp;quot;&lt;br /&gt;
$servicename = &amp;quot;MyServiceName&amp;quot;&lt;br /&gt;
_DeleteService(&amp;quot;&amp;quot;, $servicename)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is one caveat to setting up AutoIt as a service. If the service is not installed using the above code, it must have the &amp;quot;allow service to interact with the desktop&amp;quot; setting or else automation functions such as Control* or Win* functions will not function. To assure the service does indeed have this setting, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;RegWrite(&amp;quot;HKLM\SYSTEM\CurrentControlSet\Services\[ServiceName]&amp;quot;, &amp;quot;Type&amp;quot;, &amp;quot;REG_DWORD&amp;quot;, 0x110)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I create/start/stop or otherwise control a service?==&lt;br /&gt;
There are two include libraries that are designed specifically to interact with services. These are the following:&lt;br /&gt;
&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=6487 ServiceControl.au3] made by SumTingWong. Functionality:&lt;br /&gt;
** _StartService()&lt;br /&gt;
** _StopService()&lt;br /&gt;
** _ServiceExists()&lt;br /&gt;
** _ServiceRunning()&lt;br /&gt;
** _CreateService()&lt;br /&gt;
** _DeleteService()&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=22165 _NTServices.au3] made by CatchFish. Functionality:&lt;br /&gt;
** _ServiceStart()&lt;br /&gt;
** _ServiceStop()&lt;br /&gt;
** _ServiceStatus()&lt;br /&gt;
** _ServicePause()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I display a progress bar while copying files or directories?==&lt;br /&gt;
There are a many different topics on how to do this.  For more, just search the forums for [http://www.autoitscript.com/forum/index.php?act=Search&amp;amp;CODE=show&amp;amp;searchid=22030d4d4effe5e32da23fdb69ed772f&amp;amp;search_in=posts&amp;amp;result_type=topics&amp;amp;highlite=%2BCopy%2B Progress Copy + Progress].&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=11313 Copy with progress dialog]... By ezztabi&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=11888 Yet another copy with progress]... By SumTingWong&lt;br /&gt;
* [http://www.autoit.de/index.php?page=Thread&amp;amp;postID=58875 _MultiFileCopy]... By Oscar (German Forums)&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=19370&amp;amp;st=45&amp;amp;p=186198&amp;amp;#entry186198 _FileCopy]... By Jos&lt;br /&gt;
&lt;br /&gt;
[[File:FAQ_Q6_1.jpg|center|Copy progress dialog by ezztabi]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I make a hotkey that only works in my GUI?==&lt;br /&gt;
It used to be quite tedious setting hotkeys to only work in your GUI.  Now there is an easier way with the function GUISetAccelerators.&lt;br /&gt;
&lt;br /&gt;
(From Helpfile example)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; A simple custom messagebox that uses the MessageLoop mode&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUICreate(&amp;quot;Custom Msgbox&amp;quot;, 210, 80)&lt;br /&gt;
&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Please click a button!&amp;quot;, 10, 10)&lt;br /&gt;
$YesID = GUICtrlCreateButton(&amp;quot;Yes&amp;quot;, 10, 50, 50, 20)&lt;br /&gt;
$NoID = GUICtrlCreateButton(&amp;quot;No&amp;quot;, 80, 50, 50, 20)&lt;br /&gt;
$ExitID = GUICtrlCreateButton(&amp;quot;Exit&amp;quot;, 150, 50, 50, 20)&lt;br /&gt;
&lt;br /&gt;
; Set accelerators for Ctrl+y and Ctrl+n&lt;br /&gt;
Dim $AccelKeys[2][2]=[[&amp;quot;^y&amp;quot;, $YesID], [&amp;quot;^n&amp;quot;, $NoID]]&lt;br /&gt;
GUISetAccelerators($AccelKeys)&lt;br /&gt;
&lt;br /&gt;
GUISetState(); display the GUI&lt;br /&gt;
&lt;br /&gt;
Do&lt;br /&gt;
	$msg = GUIGetMsg()&lt;br /&gt;
&lt;br /&gt;
	Select&lt;br /&gt;
		Case $msg = $YesID&lt;br /&gt;
			MsgBox($MB_OK, &amp;quot;You clicked on&amp;quot;, &amp;quot;Yes&amp;quot;)&lt;br /&gt;
		Case $msg = $NoID&lt;br /&gt;
			MsgBox($MB_OK, &amp;quot;You clicked on&amp;quot;, &amp;quot;No&amp;quot;)&lt;br /&gt;
		Case $msg = $ExitID&lt;br /&gt;
			MsgBox($MB_OK, &amp;quot;You clicked on&amp;quot;, &amp;quot;Exit&amp;quot;)&lt;br /&gt;
		Case $msg = $GUI_EVENT_CLOSE&lt;br /&gt;
			MsgBox($MB_OK, &amp;quot;You clicked on&amp;quot;, &amp;quot;Close&amp;quot;)&lt;br /&gt;
	EndSelect&lt;br /&gt;
Until $msg = $GUI_EVENT_CLOSE Or $msg = $ExitID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I perform an action while a key is held down?==&lt;br /&gt;
You can use the _IsPressed() function to determine when a key is held down. The values that can be specified in this function are listed in the AutoIt Help File under User Defined Functions -&amp;gt; Misc Management -&amp;gt; _IsPressed. The following example will press the left mouse button while the k key is held down.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;Misc.au3&amp;gt;&lt;br /&gt;
$pressed = 0&lt;br /&gt;
While 1&lt;br /&gt;
	If _IsPressed(&amp;quot;4B&amp;quot;) Then&lt;br /&gt;
		If Not $pressed Then&lt;br /&gt;
			ToolTip(&amp;quot;K Key being held down&amp;quot;)&lt;br /&gt;
			MouseDown(&amp;quot;left&amp;quot;)&lt;br /&gt;
			$pressed = 1&lt;br /&gt;
		EndIf&lt;br /&gt;
	Else&lt;br /&gt;
		If $pressed Then&lt;br /&gt;
			ToolTip(&amp;quot;&amp;quot;)&lt;br /&gt;
			MouseUp(&amp;quot;left&amp;quot;)&lt;br /&gt;
			$pressed = 0&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
	Sleep(250)&lt;br /&gt;
WEnd&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I run my script on a remote computer over the network?==&lt;br /&gt;
The answer to this question depends on how much experience you have in networking. If the target system is a Windows system to which you have administrator access then you may use one of the following programs:&lt;br /&gt;
&lt;br /&gt;
* PsExec from SysInternals&lt;br /&gt;
* BeyondExec from BeyondLogic&lt;br /&gt;
&lt;br /&gt;
With either of these programs it is possible to launch any process on a remote system and even copy your script to the target computer before starting it. Neither these programs nor any others will work with Windows XP Home Edition unless you create a custom &amp;quot;command listener&amp;quot; that you manually install on the target system.&lt;br /&gt;
&lt;br /&gt;
NOTE: Those of you with more advanced programming skills and a little imagination can figure out how to use the service control libraries and srvany.exe to do this same thing without either of the above mentioned programs.&lt;br /&gt;
&lt;br /&gt;
==How can I make a User Defined Function with optional parameters like the ones I see in the Help File?==&lt;br /&gt;
You can specify optional parameters by giving them a default value in the Func declaration. An example of how this is done:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Func testme($param1, $param2 = &amp;quot;nothing&amp;quot;, $param3 = 5)&lt;br /&gt;
	MsgBox($MB_OK, &amp;quot;&amp;quot;, &amp;quot;Parameter one is required. The value of Parameter 1 is &amp;quot; &amp;amp; $param1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Parameter 2 is optional. The value of Parameter 2 is &amp;quot; &amp;amp; $param2 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Parameter 3 is optional. The value of Parameter 3 is &amp;quot; &amp;amp; $param3)&lt;br /&gt;
EndFunc&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If testme() is called with only one parameter [I.E. testme(&amp;quot;test&amp;quot;)] then the output is:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Parameter one is required. The value of Parameter 1 is test&amp;lt;br /&amp;gt;&lt;br /&gt;
Parameter 2 is optional. The value of Parameter 2 is nothing&amp;lt;br /&amp;gt;&lt;br /&gt;
Parameter 3 is optional. The value of Parameter 3 is 5&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
However, if the function is called with more than one parameter like this testme(&amp;quot;test&amp;quot;, &amp;quot;something&amp;quot;), then the output is&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Parameter one is required. The value of Parameter 1 is test&amp;lt;br /&amp;gt;&lt;br /&gt;
Parameter 2 is optional. The value of Parameter 2 is something&amp;lt;br /&amp;gt;&lt;br /&gt;
Parameter 3 is optional. The value of Parameter 3 is 5&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I make my script start every time windows starts?==&lt;br /&gt;
You can use one of the following codes to allow your script to start with Windows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;RegWrite(&amp;quot;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&amp;quot;, &amp;quot;MyProgramName&amp;quot;, &amp;quot;REG_SZ&amp;quot;, @ScriptFullPath)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;FileCreateShortcut(@ScriptFullPath, @StartupCommonDir &amp;amp; &amp;quot;\MyProgramName.lnk&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or place a Shortcut in the Startup folder, or the entire Executable.  For Win8+ systems, use the Win+R keys to open a Run box, then &amp;quot;Shell:Startup&amp;quot; to access the Startup folder. Due to Windows User Account Control (UAC) restrictions, your script may require [https://www.autoitscript.com/autoit3/docs/keywords/RequireAdmin.htm #RequireAdmin].&lt;br /&gt;
&lt;br /&gt;
==How can I have the script delete itself?==&lt;br /&gt;
The following function will delete the running script or .exe once it has finished execution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Make a copy of your script before calling this function!!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func _SelfDelete($iDelay = 0)&lt;br /&gt;
	Local $sCmdFile&lt;br /&gt;
	FileDelete(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;)&lt;br /&gt;
	$sCmdFile = &#039;ping -n &#039; &amp;amp; $iDelay &amp;amp; &#039; 127.0.0.1 &amp;gt; nul&#039; &amp;amp; @CRLF _&lt;br /&gt;
			 &amp;amp; &#039;:loop&#039; &amp;amp; @CRLF _&lt;br /&gt;
			 &amp;amp; &#039;del &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF _&lt;br /&gt;
			 &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot; goto loop&#039; &amp;amp; @CRLF _&lt;br /&gt;
			 &amp;amp; &#039;del %0&#039;&lt;br /&gt;
	FileWrite(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;, $sCmdFile)&lt;br /&gt;
	Run(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;, @TempDir, @SW_HIDE)&lt;br /&gt;
EndFunc;==&amp;gt;_SelfDelete&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How can I create a clickable website hyperlink in my gui?==&lt;br /&gt;
[[File:FAQ_Q13_1.jpg|center|Example GUI using Gary&#039;s UDF.]]&lt;br /&gt;
&lt;br /&gt;
Gary Frost has made great advances in this area and has provided a [http://www.autoitscript.com/forum/index.php?showtopic=23111&amp;amp;st=0 UDF here] (&#039;&#039;&#039;the UDF was removed from the post&#039;&#039;&#039;) to help with doing this.&lt;br /&gt;
&lt;br /&gt;
==How can I change the screen resolution / refresh rate / color depth?==&lt;br /&gt;
[http://www.autoitscript.com/forum/index.php?showtopic=20121 ChangeResolution.au3] is a library function created to make changes to these settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How can I get the screen resolution in multiple monitor setups?==&lt;br /&gt;
The following code was worked out by Larry to determine the total screen resolution of multiple monitors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$aTSR = _GetTotalScreenResolution()&lt;br /&gt;
MsgBox($MB_OK, &amp;quot;Total Screen Resolution&amp;quot;, &amp;quot;Width = &amp;quot; &amp;amp; $aTSR[0] &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Height = &amp;quot; &amp;amp; $aTSR[1])&lt;br /&gt;
&lt;br /&gt;
;Original code by Larry.&lt;br /&gt;
;Edited by BrettF&lt;br /&gt;
Func _GetTotalScreenResolution()&lt;br /&gt;
	Local $aRet[2]&lt;br /&gt;
	Global Const $SM_VIRTUALWIDTH = 78&lt;br /&gt;
	Global Const $SM_VIRTUALHEIGHT = 79&lt;br /&gt;
	$VirtualDesktopWidth = DllCall(&amp;quot;user32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;GetSystemMetrics&amp;quot;, &amp;quot;int&amp;quot;, $SM_VIRTUALWIDTH)&lt;br /&gt;
	$aRet[0] = $VirtualDesktopWidth[0]&lt;br /&gt;
	$VirtualDesktopHeight = DllCall(&amp;quot;user32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;GetSystemMetrics&amp;quot;, &amp;quot;int&amp;quot;, $SM_VIRTUALHEIGHT)&lt;br /&gt;
	$aRet[1] = $VirtualDesktopHeight[0]&lt;br /&gt;
	Return $aRet&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  How can I register a file type with my program [or] How can I make files with a certain extension open in my program?==&lt;br /&gt;
[[File:FAQ_Q16_1.jpg|center|Example of how a file type can be registered.]]&lt;br /&gt;
File registration can be a tricky business for those who have not done it before. The first thing to be done is to modify your script to allow it to accept files from the command line. Here is one example of how to do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;$cmdline[0] is the number of parameters passed&lt;br /&gt;
If $cmdline[0] &amp;lt;&amp;gt; 0 Then&lt;br /&gt;
	$filename = $cmdline[1]&lt;br /&gt;
;Do something with the file here&lt;br /&gt;
	MsgBox($MB_OK, &amp;quot;UXYFixer&amp;quot;, &#039;The file name passed to the command line is &amp;quot;&#039; &amp;amp; $filename &amp;amp; &#039;&amp;quot;&#039;)&lt;br /&gt;
Else&lt;br /&gt;
; We did not get any command line parameters.&lt;br /&gt;
; If this is a command line only program, you would want to&lt;br /&gt;
; alert the user that the command line parameters were incorrect.&lt;br /&gt;
; If this is a GUI program (like a notepad program), you would&lt;br /&gt;
; want to simply continue from here without opening a file.&lt;br /&gt;
	MsgBox($MB_OK, &amp;quot;UXYFixer&amp;quot;, &#039;Command line parameters incorrect.&#039; &amp;amp; @CRLF &amp;amp; &#039;Command line usage: &amp;quot;&#039; &amp;amp; @ScriptName &amp;amp; &#039;&amp;quot; &amp;quot;file to process&amp;quot;&#039;)&lt;br /&gt;
 EndIf&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
After your script is ready to accept files, you can begin to register the file type you need with your program. To prevent errors, this-is-me has created a UDF that will allow you to do this easily:&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to register and unregister a file extension using this UDF:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;quot;FileRegister.au3&amp;quot;&lt;br /&gt;
;================================================&lt;br /&gt;
;&lt;br /&gt;
; Description:	FileRegister($ext, $cmd, $verb [, $def [, $icon = &amp;quot;&amp;quot; [, $desc = &amp;quot;&amp;quot; ]]])&lt;br /&gt;
;			   Registers a file type in Explorer&lt;br /&gt;
;&lt;br /&gt;
; Parameter(s): $ext -  File Extension without period eg. &amp;quot;zip&amp;quot;&lt;br /&gt;
;		$cmd -  Program path with arguments eg. &#039;&amp;quot;C:\test\testprog.exe&amp;quot; &amp;quot;%1&amp;quot;&#039;&lt;br /&gt;
;			 (%1 is 1st argument, %2 is 2nd, etc.)&lt;br /&gt;
;		$verb - Name of action to perform on file&lt;br /&gt;
;			 eg. &amp;quot;Open with ProgramName&amp;quot; or &amp;quot;Extract Files&amp;quot;&lt;br /&gt;
;		$def -  Action is the default action for this filetype&lt;br /&gt;
;			 (1 for true 0 for false)&lt;br /&gt;
;			 If the file is not already associated, this will be the default.&lt;br /&gt;
;		$icon - Default icon for filetype including resource # if needed&lt;br /&gt;
;			 eg. &amp;quot;C:\test\testprog.exe,0&amp;quot; or &amp;quot;C:\test\filetype.ico&amp;quot;&lt;br /&gt;
;		$desc - File Description eg. &amp;quot;Zip File&amp;quot; or &amp;quot;ProgramName Document&amp;quot;&lt;br /&gt;
;&lt;br /&gt;
;================================================&lt;br /&gt;
&lt;br /&gt;
 FileRegister(&amp;quot;uxy&amp;quot;, &#039;&amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot; &amp;quot;%1&amp;quot;&#039;, &amp;quot;Open in UXYFixer&amp;quot;, 1, @ScriptFullPath &amp;amp; &#039;,0&#039;, &amp;quot;UXYFixer Document&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;========================================&lt;br /&gt;
;&lt;br /&gt;
; Description:	FileUnRegister($ext, $verb)&lt;br /&gt;
;			   UnRegisters a verb for a file type in Explorer&lt;br /&gt;
; Parameter(s):  $ext - File Extension without period eg. &amp;quot;zip&amp;quot;&lt;br /&gt;
;			   $verb - Name of file action to remove&lt;br /&gt;
;					 eg. &amp;quot;Open with ProgramName&amp;quot; or &amp;quot;Extract Files&amp;quot;&lt;br /&gt;
;&lt;br /&gt;
;========================================&lt;br /&gt;
&lt;br /&gt;
 FileUnRegister(&amp;quot;uxy&amp;quot;, &amp;quot;Open in UXYFixer&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Download here:&#039;&#039;&#039;&lt;br /&gt;
[http://www.autoitscript.com/forum/index.php?app=core&amp;amp;module=attach&amp;amp;section=attach&amp;amp;attach_id=26378 FileRegister.au3]&lt;br /&gt;
&lt;br /&gt;
==Why doesn&#039;t my combobox (GUICtrlCreateCombo) show a dropdown list when clicked?==&lt;br /&gt;
When using GUICtrlCreateCombo be sure to enter the desired height for your combobox list in the &amp;quot;height&amp;quot; parameter. Windows XP automatically selects an appropriate height for combo boxes, but other versions of Windows usually do not.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$combo = GUICtrlCreateCombo(&amp;quot;&amp;quot;,10,10,200,20)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Would correctly be changed to:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$combo = GUICtrlCreateCombo(&amp;quot;&amp;quot;,10,10,200,200)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Why isn&#039;t my thread getting any replies?==&lt;br /&gt;
&lt;br /&gt;
=== Asking the right question right ===&lt;br /&gt;
Did you give a good description of the problem? If your title or explanation of the issue is not descriptive, users are likely to bypass your issue instead of helping. Post titles such as &amp;quot;Help Me&amp;quot;, &amp;quot;I Have A Problem&amp;quot;, &amp;quot;Question&amp;quot;, &amp;quot;Help me fix my code&amp;quot;, &amp;quot;This code doesn&#039;t work&amp;quot; or similarly worded titles will not readily draw forum users to your post. Experienced users (which are your best hope of resolving the issue) will often skip your post altogether in cases like this. An example of a post title descriptive enough to attract users to assist you is &amp;quot;Problem with WinWaitClose&amp;quot; or &amp;quot;Loop never ends&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Example for reproduction ===&lt;br /&gt;
Did you post example code? If you have not posted an example of the code you are having an issue with, then you will not recieve support. When posting a non-working script, please do so in the smallest amount of stand-alone code possible. If the code you post cannot run by itself on another person&#039;s computer, they will not be able to recreate the issue.&lt;br /&gt;
&lt;br /&gt;
=== Information about Environment ===&lt;br /&gt;
Did you provide any information about your AutoIt Development Environment ? &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;APILocaleConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WinAPILocale.au3&amp;gt;&lt;br /&gt;
; Version: 1.01. AutoIt: V3.3.14.2&lt;br /&gt;
; Retrieve the recommended information of the current system when posting a support question.&lt;br /&gt;
Local $sSystemInfo = &#039;I have a valid AutoIt support question and kindly provided the details of my system:&#039; &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; @CRLF &amp;amp; &#039;AutoIt Version: V&#039; &amp;amp; @AutoItVersion &amp;amp; &#039; [&#039; &amp;amp; (@AutoItX64 ? &#039;X64&#039; : &#039;X32&#039;) &amp;amp; &#039;]&#039; &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; &#039;Windows Version: &#039; &amp;amp; @OSVersion &amp;amp; &#039;/&#039; &amp;amp; (@OSServicePack &amp;lt;&amp;gt; &amp;quot;&amp;quot; ? @OSServicePack : _&lt;br /&gt;
		RegRead(&amp;quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion&amp;quot;, &amp;quot;ReleaseId&amp;quot;)) &amp;amp; _&lt;br /&gt;
		&#039; [&#039; &amp;amp; @OSArch &amp;amp; &#039;]&#039; &amp;amp; @CRLF &amp;amp; &#039;Language: &#039; &amp;amp; _GetOSLanguage() &amp;amp; &#039; (&#039; &amp;amp; @OSLang &amp;amp; &#039;)&#039; &amp;amp; @CRLF &amp;amp; @CRLF&lt;br /&gt;
ClipPut($sSystemInfo)&lt;br /&gt;
MsgBox(4096, &#039;This info has been copied to the clipboard. Use Ctrl + V to retrieve it.&#039;, $sSystemInfo)&lt;br /&gt;
&lt;br /&gt;
Func _GetOSLanguage()&lt;br /&gt;
	Return _WinAPI_GetLocaleInfo(_WinAPI_GetUserDefaultLCID(), $LOCALE_SLANGUAGE)&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetOSLanguage&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speak English and speak it right ===&lt;br /&gt;
Did you use proper English? Here are guidelines for posting properly in the English language:&lt;br /&gt;
* Use proper case.  THIS IS CONSIDERED YELLING. If you post in ALL UPPERCASE or all lowercase then you will not be taken seriously.&lt;br /&gt;
* Use proper punctuation. Complete sentences need only one trailing punctuation mark. Twelve exclamation points after every sentence &amp;lt;b&amp;gt;will not&amp;lt;/b&amp;gt; get you an answer more quickly (just the opposite) Writing a sentence without simple punctuation such as commas reflects badly on your attention to detail, and is considered a good judge of the poster&#039;s coding style. If you cannot summon the intellect to write a sentence with correct punctuation, you will most likely miss simple coding mistakes such as unterminated quotes.&lt;br /&gt;
&lt;br /&gt;
=== Breaking forum rules, law, modesty, or common sense ===&lt;br /&gt;
Show common sense by following the forum rules, http://www.autoitscript.com/forum/topic/169097-forum-rules/, as well as generally accepted forum etiquette. Repeated failure to do so will result in sanctions by the Moderation team as it ruins the experience for everyone.&lt;br /&gt;
&lt;br /&gt;
==Why does the Ctrl key get stuck down after I run my script?==&lt;br /&gt;
&lt;br /&gt;
=== Keys virtually stuck ===&lt;br /&gt;
It could equally be the Shift or the Alt key.&lt;br /&gt;
&lt;br /&gt;
If you use Send in a script and you have a problem with keys being stuck down then Send is the most likely culprit. A similar problem can occur with BlockInput. The solution is generally quite simple. If there is a key like Shift or Alt held down at the start of the Send sequence, but that key is released by the time the Send sequence finishes then the key will get &#039;stuck&#039; down. As an example of a solution, you could replace the Send function in your script with the _SendEx function below.&lt;br /&gt;
&lt;br /&gt;
The _SendEx function waits for the Shift, Alt and Ctrl keys to be released or pops up a warning if the $warn parameter is not an empty string. Therefore it is not intended to be used when one of these modifier keys has been set to be down using any combination of {ALTDOWN}, {SHIFTDOWN} and {ALTDOWN}.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt; Misc.au3 &amp;gt;&lt;br /&gt;
#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
;Send the string $ss after the Shift Alt and Ctrl keys are released. Optionally give a warning after 1 sec if any of those keys are still down.&lt;br /&gt;
;Requires misc.au3 to be included in the script for the _IsPressed function.&lt;br /&gt;
&lt;br /&gt;
Func _SendEx($ss, $warn = &amp;quot;&amp;quot;)&lt;br /&gt;
	Local $iT = TimerInit()&lt;br /&gt;
&lt;br /&gt;
	While _IsPressed(&amp;quot;10&amp;quot;) Or _IsPressed(&amp;quot;11&amp;quot;) Or _IsPressed(&amp;quot;12&amp;quot;)&lt;br /&gt;
		If $warn &amp;lt;&amp;gt; &amp;quot;&amp;quot; And TimerDiff($iT) &amp;gt; 1000 Then&lt;br /&gt;
			MsgBox($MB_TOPMOST, &amp;quot;Warning&amp;quot;, $warn)&lt;br /&gt;
		EndIf&lt;br /&gt;
		Sleep(50)&lt;br /&gt;
	WEnd&lt;br /&gt;
	Send($ss)&lt;br /&gt;
EndFunc;==&amp;gt;_SendEx&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Key sequence ===&lt;br /&gt;
This sequence of keys is also working fine (including in AutoItX).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Send(&amp;quot;{CTRLDOWN}&amp;quot;)&lt;br /&gt;
Send(&amp;quot;a&amp;quot;)&lt;br /&gt;
Send(&amp;quot;{CTRLUP}&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== General unstuck method ===&lt;br /&gt;
Shilbiz also discovered that the following can &#039;clear&#039; locked down keys.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt; ControlSend(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;text&amp;quot;, 0)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How can I use Pixel functions?==&lt;br /&gt;
&lt;br /&gt;
=== Using a color change as an event ===&lt;br /&gt;
The following is an example of using the pixel to check if the colour has changed in a specific region.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local $PixelCheck = 0, $NewCheck&lt;br /&gt;
$PixelCheck = PixelCheckSum(40, 50, 60, 70); Get the checksum for this area.&lt;br /&gt;
While 1; Keep going&lt;br /&gt;
	$NewCheck = PixelCheckSum(40, 50, 60, 70)&lt;br /&gt;
	If $PixelCheck &amp;lt;&amp;gt; $NewCheck Then&lt;br /&gt;
		; The old pixel checksum and the new one are different.&lt;br /&gt;
		$PixelCheck = $NewCheck; Update the $PixelCheck to the new value&lt;br /&gt;
		; Let us know it has changed.  Change this to what you want to happen when the colour in the region changes.&lt;br /&gt;
		Msgbox($MB_ICONWARNING,&amp;quot;PixelChecksum&amp;quot;,&amp;quot;Pixel region has changed !&amp;quot;)&lt;br /&gt;
	EndIf&lt;br /&gt;
	Sleep(50); Just to give the CPU a bit of a break.&lt;br /&gt;
Wend&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Searching for a specific pixel color ===&lt;br /&gt;
This is an example of searching for a specific pixel (red), both pure red (0xFF0000) and red in a few different shades.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
; Find a pure red pixel in the range 0,0-20,300&lt;br /&gt;
&lt;br /&gt;
$coord = PixelSearch( 0, 0, 20, 300, 0xFF0000 )&lt;br /&gt;
If Not @error Then&lt;br /&gt;
	MsgBox($MB_OK, &amp;quot;X and Y are:&amp;quot;, $coord[0] &amp;amp; &amp;quot;,&amp;quot; &amp;amp; $coord[1])&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Find a pure red pixel or a red pixel within 10 shades variations of pure red&lt;br /&gt;
$coord = PixelSearch( 0, 0, 20, 300, 0xFF0000, 10 )&lt;br /&gt;
If Not @error Then&lt;br /&gt;
	MsgBox($MB_OK, &amp;quot;X and Y are:&amp;quot;, $coord[0] &amp;amp; &amp;quot;,&amp;quot; &amp;amp; $coord[1])&lt;br /&gt;
EndIf&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Why doesn&#039;t my script work on a locked workstation?==&lt;br /&gt;
On a locked station any window will never be active (active is only dialog with text &amp;quot;Press Ctrl+Alt+Del&amp;quot;).  In Windows locked state applications run hidden (behind that visible dialog) and do not have focus and active status.  So generally don&#039;t use Send() MouseClick() WinActivate() WinWaitActive() WinActive() etc.  Instead use ControlSend() ControlSetText() ControlClick() WinWait() WinExists() WinMenuSelectItem() etc.  Doing so allows you to interact with an application regardless of whether it is active or not. It&#039;s possible to run such a script from scheduler on locked Windows stations.&lt;br /&gt;
&lt;br /&gt;
==Where can I learn AutoIt? Are there any tutorials?==&lt;br /&gt;
AutoIt is a constantly growing and evolving language with a diverse and engaged community of volunteers. This wiki, along with the official forum, will always be your best place for answers to questions as well as examples and tutorials. With this in mind, below are a few resources that can also help you as you become familiar with the language:&lt;br /&gt;
&lt;br /&gt;
AutoIt 1-2-3, an interactive classroom by Valuater:&lt;br /&gt;
[http://www.autoitscript.com/forum/index.php?showtopic=21048 http://www.autoitscript.com/forum/index.php?showtopic=21048]&lt;br /&gt;
&lt;br /&gt;
BrettF&#039;s updated AutoIt tutorial:&lt;br /&gt;
[http://www.autoitscript.com/forum/index.php?showtopic=84960 http://www.autoitscript.com/forum/index.php?showtopic=84960]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Learn To Program Using FREE Tools with AutoIt&amp;quot; PDF Book by Jfish&lt;br /&gt;
[https://www.autoitscript.com/forum/files/file/351-learn-to-program-using-free-tools-with-autoit/ Learn To Program Using FREE Tools with AutoIt]&lt;br /&gt;
&lt;br /&gt;
YouTube has a number of videos available:&lt;br /&gt;
[http://www.youtube.com/results?search_query=autoit+tutorial&amp;amp;search_type=&amp;amp;aq=0&amp;amp;oq=AutoIt YouTube AutoIt tutorials list]&lt;br /&gt;
&lt;br /&gt;
As always, when asking questions about a video or script you saw on an external source, please ensure you are adhering to the [[FAQ#Breaking_forum_rules.2C_law.2C_modesty.2C_or_common_Sense|forum rules]].&lt;br /&gt;
&lt;br /&gt;
==Why does my script no longer decompile?==&lt;br /&gt;
Decompilation is no longer supported, and is only available for the older versions of AutoIt (Version 3.2.5.1 and earlier compiled scripts).&lt;br /&gt;
&lt;br /&gt;
Please &#039;&#039;&#039;do not&#039;&#039;&#039; post on this topic; see the [[Decompiling FAQ]] for more information. Topics discussing decompilation of scripts will be locked immediately. Posting the source of a decompiled script with lead to immediate sanctions from the Moderation team, as it directly violates AutoIt EULA (End-User-License-Agreement).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;i&amp;gt;You may not reverse engineer or disassemble the SOFTWARE PRODUCT or compiled scripts that were created with the SOFTWARE PRODUCT.&amp;lt;/i&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How can I get a window handle when all I have is a PID?==&lt;br /&gt;
Refer to the following example showing converting and use when manipulating the window. The function is based on work by Smoke_N/Hubertus and Helge.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;;Run process&lt;br /&gt;
$iPID = Run(&amp;quot;Notepad.exe&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;Allow window to initialize...&lt;br /&gt;
Sleep (500)&lt;br /&gt;
&lt;br /&gt;
;Get HWND.&lt;br /&gt;
$hWnd = _GetHwndFromPID($iPID)&lt;br /&gt;
&lt;br /&gt;
;Maximize&lt;br /&gt;
WinSetState($hWnd, &amp;quot;&amp;quot;, @SW_MAXIMIZE)&lt;br /&gt;
&lt;br /&gt;
;Wait 2 seconds&lt;br /&gt;
Sleep(2000)&lt;br /&gt;
&lt;br /&gt;
;Minimize&lt;br /&gt;
WinSetState($hWnd, &amp;quot;&amp;quot;, @SW_MINIMIZE)&lt;br /&gt;
&lt;br /&gt;
;Wait 2 seconds&lt;br /&gt;
Sleep(2000)&lt;br /&gt;
&lt;br /&gt;
;Restore window&lt;br /&gt;
WinSetState($hWnd, &amp;quot;&amp;quot;, @SW_RESTORE)&lt;br /&gt;
&lt;br /&gt;
;Wait 2 seconds&lt;br /&gt;
Sleep(2000)&lt;br /&gt;
&lt;br /&gt;
;Move top left corner of screen, and resize to 800x600&lt;br /&gt;
WinMove($hWnd, &amp;quot;&amp;quot;, 0, 0, 800, 600)&lt;br /&gt;
&lt;br /&gt;
;Wait 2 seconds&lt;br /&gt;
Sleep(2000)&lt;br /&gt;
&lt;br /&gt;
;Calculate Center of screen.&lt;br /&gt;
$x = (@DesktopWidth / 2) - 400; Desktop width divided by 2, then minus half the width of the window&lt;br /&gt;
$y = (@DesktopHeight / 2) - 300; Desktop height divided by 2, then minus half the height of the window&lt;br /&gt;
&lt;br /&gt;
;Move to center of screen&lt;br /&gt;
WinMove($hWnd, &amp;quot;&amp;quot;, $x, $y)&lt;br /&gt;
&lt;br /&gt;
;Wait 2 seconds&lt;br /&gt;
Sleep(2000)&lt;br /&gt;
&lt;br /&gt;
;Close notepad&lt;br /&gt;
WinClose($hWnd)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Function for getting HWND from PID&lt;br /&gt;
Func _GetHwndFromPID($PID)&lt;br /&gt;
	$hWnd = 0&lt;br /&gt;
	$winlist = WinList()&lt;br /&gt;
	Do&lt;br /&gt;
		For $i = 1 To $winlist[0][0]&lt;br /&gt;
			If $winlist[$i][0] &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
				$iPID2 = WinGetProcess($winlist[$i][1])&lt;br /&gt;
				If $iPID2 = $PID Then&lt;br /&gt;
					$hWnd = $winlist[$i][1]&lt;br /&gt;
					ExitLoop&lt;br /&gt;
				EndIf&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	Until $hWnd &amp;lt;&amp;gt; 0&lt;br /&gt;
	Return $hWnd&lt;br /&gt;
EndFunc;==&amp;gt;_GetHwndFromPID&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I use single or double quotes in strings?==&lt;br /&gt;
It is a fairly simple concept once you get the basics down.  Basically there are a few different ways to go about mixing quotes in strings.&lt;br /&gt;
&lt;br /&gt;
A string in AutoIt can be encased in either single(&#039;) or double (&amp;quot;) quotes.  So if you want to add only one type of quote into your string, your first port of call is to use the other type of quote to encase the string.  Like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$var = &amp;quot;I am a &#039;quote&#039; inside the string&amp;quot;&lt;br /&gt;
MsgBox ($MB_OK, &amp;quot;Test 1&amp;quot;, $var)&lt;br /&gt;
$var = &#039;I wish I could be a &amp;quot;quote&amp;quot; inside the string!&#039;&lt;br /&gt;
MsgBox ($MB_OK, &amp;quot;Test 1&amp;quot;, $var)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have to have both types of quotes in the string, the easiest way is to escape the quote ending the string as so to speak.  To do this, use two quotes instead of one.  Like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$var = &#039;I am a single &#039;&#039;quote&#039;&#039; inside the string made using &amp;quot;single quote!&amp;quot;&#039;&lt;br /&gt;
MsgBox ($MB_OK, &amp;quot;Test 1&amp;quot;, $var)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==When should I bump my threads?==&lt;br /&gt;
As a courtesy to other users you should only bump your post once in a 24 hour period.  Doing this allows all users the chance to get helped equally.  Also refer to [http://www.autoitscript.com/forum/index.php?showtopic=95704&amp;amp;view=findpost&amp;amp;p=688050 Why isn&#039;t my thread getting any replies?], as this will help you get replies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How can I protect my code from decompilation?==&lt;br /&gt;
The fact of the matter is &#039;&#039;&#039;you can&#039;t fully protect your code&#039;&#039;&#039;.  AutoIt is an  interpreted language, so all scripts are interpreted, and that script has to get stored somewhere.  There is still hope though.  You can take certain measures to make the decompiled code less usable to the person that decompiled it.  The first step is to obfuscate your code.  This causes the code to become less readable.  Basically variables and functions are renamed, making it very hard to make head or tail of what is what.&lt;br /&gt;
&lt;br /&gt;
Please see the [[Decompiling FAQ]] for more information.&lt;br /&gt;
&lt;br /&gt;
==How can I decompile my AutoIt EXEs?==&lt;br /&gt;
You cannot decompile your AutoIt compiled scripts unless it was compiled with AutoIt 3.2.5.1 or earlier.&lt;br /&gt;
&lt;br /&gt;
In order to be able to recover your script from the compiled executable, you can use the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;;Original Author SmokeN&lt;br /&gt;
If $CMDLINE[0] Then&lt;br /&gt;
	If $CMDLINE[1] == &amp;quot;/SOURCE&amp;quot; AND $CMDLINE[2] == &amp;quot;MYPASSWORD&amp;quot; Then&lt;br /&gt;
		FileInstall(&amp;quot;ThisSCript.au3&amp;quot;, @ScriptDir &amp;amp; &amp;quot;\DecompiledScript.au3&amp;quot;)&lt;br /&gt;
	EndIf&lt;br /&gt;
EndIf&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then if you run the compiled script with the following command line parameters your source will be extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;myscript.exe /SOURCE MYPASSWORD&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is proper forum etiquette?  What rules are there for the forum?==&lt;br /&gt;
Proper forum etiquette will ensure you will stay a member of these forums.  So try to follow these rules.  Also see this [http://www.autoitscript.com/forum/index.php?showtopic=95704&amp;amp;st=15&amp;amp;p=688050&amp;amp;#entry688050 FAQ post], as you should follow what is outlined there as well.&lt;br /&gt;
&lt;br /&gt;
* Use proper English.  MSN speak and the like makes it very hard to understand what you want.  Keep posts in proper case because UPPERCASE is considered yelling and lowercase makes you look stupid.  Don&#039;t use more punctuation marks than necessary. For example ?!!!? and ????? is completely unnecessary.&lt;br /&gt;
* Before posting help with a script, make sure you follow these steps:&lt;br /&gt;
*# Search for your issue.&lt;br /&gt;
*#* There are many thousands of posts on this forum, and chances are your question has been asked before.  Make sure to use a variety of terms to maximize your results.&lt;br /&gt;
*# Read the helpfile&lt;br /&gt;
*#* Most if not all things in the help file will have an example (native functions) or two.  Give them a go to try see how the functions work.  Most of the time it helps!&lt;br /&gt;
*# Give it a go&lt;br /&gt;
*#* Seriously, if you can&#039;t be bothered to give it a go, then why should we be bothered to help you?  If you feel you can&#039;t do it and you don&#039;t try then how will you ever know?  We always prefer that you give it a go because you can learn from your mistakes and hopefully understand it better.&lt;br /&gt;
*# Post your problem&lt;br /&gt;
*#* Make sure you post in the correct forum.&lt;br /&gt;
*#** &amp;lt;b&amp;gt;AutoIt Specific&amp;lt;/b&amp;gt;&lt;br /&gt;
*#*** [https://www.autoitscript.com/forum/forum/2-autoit-general-help-and-support/ General Help and Support] (Most support questions)&lt;br /&gt;
*#*** [https://www.autoitscript.com/forum/forum/10-autoit-gui-help-and-support/ GUI Support] (Support for the Graphical User Interface)&lt;br /&gt;
*#*** [https://www.autoitscript.com/forum/forum/14-autoitx-help-and-support/ AutoItX Support] (Support for the COM, DLL, PowerShell and .NET add-ons for AutoIt)&lt;br /&gt;
*#** &amp;lt;b&amp;gt;Non-AutoIt&amp;lt;/b&amp;gt;&lt;br /&gt;
*#*** [https://www.autoitscript.com/forum/forum/6-chat/ Chat] (General chat for Active Members. Not accessible to guests or search engines)&lt;br /&gt;
*#*** [https://www.autoitscript.com/forum/forum/39-developer-general-discussion/ Developer General Discussion] (General development and scripting discussions)&lt;br /&gt;
*#*** [https://www.autoitscript.com/forum/forum/29-test-posting-messages/ Test Posting Messages] (This forum is emptied of all topics and posts from time to time)&lt;br /&gt;
*#*** [https://www.autoitscript.com/forum/forum/44-language-specific-discussion/ Language Specific Discussion] (Common IT Admin-related languages have their own forums. Feel free to post about any other language in the Misc forum)&lt;br /&gt;
*#*** [https://www.autoitscript.com/forum/forum/31-it-administration/  IT Administration] (Discussions about general IT related topics, administration, management and deployment)&lt;br /&gt;
*#* Include a detailed description in the content of the post, and a detailed title&lt;br /&gt;
*#** Titles such as &#039;Help&#039; and &#039;What&#039;s wrong?&#039; are not acceptable.  To get the most help with your problem, be as descriptive as you can in the title, but keep in mind your title cannot be too long.&lt;br /&gt;
*#** Make sure you also include a descriptive question.  Just saying &#039;what is wrong with the following&#039; is also not acceptable, as we will have no idea what the problem is.  Describe what you think is wrong and what is not working.  It makes our job easier.&lt;br /&gt;
*#* Always include your code&lt;br /&gt;
*#** It shows us that you have tried and gives us a head start with something to play with.&lt;br /&gt;
* Usually asking for a script is not taken too well, within reason.  Keep in mind that this is a support forum, so please acknowledge that. We are here to help you with your scripts, not to spoon-feed code to you.  If you do need something written for you, maybe try  [http://www.rentacoder.com/ RentACoder], as they are more suited to requests.&lt;br /&gt;
* Don&#039;t PM other members asking for them to look at threads of to help you unless they request it.  It is actually quite rude and annoying to receive PMs of that nature.&lt;br /&gt;
* Lurk a little before you dive right in. Read a number of posts, or check out the group&#039;s archives. Get a feel for the tone of the forum so you can participate accordingly.&lt;br /&gt;
* Say online exactly what you would say in person. In other words, if you wouldn&#039;t say it to the person&#039;s face in front of your Grandmother, you shouldn&#039;t type it here.&lt;br /&gt;
* Remember your face doesn&#039;t show. Words alone can convey sentiment, but without benefit of inflection or facial expression, they can be misconstrued. Use descriptive wording, emoticons or .gifs to ensure your meaning is clear. By the same token, don&#039;t jump to conclusions about another person&#039;s intent in posting an unclear comment. When in doubt, ask for clarification.&lt;br /&gt;
* Be respectful. Internet etiquette is similar to standard etiquette in this area. Appreciate that your opinion is one of many. You can disagree with another person without being disrespectful or rude to other people.&lt;br /&gt;
* Ignore Trolls. If you engage in conversation with one, you&#039;ll raise your blood pressure and empower the troll. You can&#039;t win a flame war, and you can&#039;t sway a troll&#039;s opinion. Often, they don&#039;t even care about the subject.  They live for the conflict and nothing more. Trolls are common and not worthy of your time. Ignore their posts no matter how inflammatory and eventually they&#039;ll get bored and move on.&lt;br /&gt;
* When you have found an answer for your question:&lt;br /&gt;
*# Do not edit your post to be blank or to have worthless information.  People may be searching for the same issue you have, so be courteous to them by leaving your question there.&lt;br /&gt;
*# It is also optional to add the word [SOLVED] into the title, as well as selecting the post that best answered your question. It can make the lives of people searching easier.&lt;br /&gt;
* Finally follow the rules:&lt;br /&gt;
** [http://www.autoitscript.com/forum/topic/169097-forum-rules/ Forum rules]&lt;br /&gt;
** [http://www.autoitscript.com/forum/index.php?showtopic=37739 General policies and forum settings]&lt;br /&gt;
** [http://www.autoitscript.com/forum/index.php?showtopic=54168 Rules for the Chat forum]&lt;br /&gt;
** [http://www.autoitscript.com/forum/index.php?showtopic=65889 Rules for asking for source code]&lt;br /&gt;
** [http://www.autoitscript.com/forum/index.php?showtopic=156031 Google Policy Violations]&lt;br /&gt;
&lt;br /&gt;
Some general points taken from [http://www.ehow.com/how_2106033_use-proper-forum-etiquette.html here].&lt;br /&gt;
&lt;br /&gt;
==Are there forums available in my local language?==&lt;br /&gt;
Yes there are some available.  Some forum members here participate in multiple forums.&lt;br /&gt;
* [http://www.autoit.fr/ French Forums]&lt;br /&gt;
* [http://www.autoit.de/ German Forums]&lt;br /&gt;
* [https://cafe.naver.com/autoitscript?iframe_url=/ArticleList.nhn%3Fsearch.clubid=12344765%26search.boardtype=L Korean Forums]&lt;br /&gt;
* [http://forum.autoitbrasil.com/ Portuguese Forums]&lt;br /&gt;
* [http://autoit-script.ru/ Russian Forums]&lt;br /&gt;
* [http://www.autoit.es/ Spanish Forums]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please note that these are independent, community-run message boards and not just a translation of this board.&lt;br /&gt;
&lt;br /&gt;
==How can I control (click, edit etc) an external (html) application?==&lt;br /&gt;
You can use the control* functions of autoit see helpfile&lt;br /&gt;
of use specific udf libraries&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/153520-iuiautomation-ms-framework-automate-chrome-ff-ie/ IUIAutomation for multiple applications]&lt;br /&gt;
*[https://www.autoitscript.com/forum/topic/197080-using-ui-automation-code-in-autoit/ uia explained in detail] &lt;br /&gt;
*[http://www.autoitscript.com/forum/topic/154439-chrome-udf/ chrome chrome.au3]&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/149526-librariesieau3/ Internet explorer ie.au3]&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/95595-ffau3-v0601b-10/ firefox ff.au3] (End of life)&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/166830-java-object-automation-and-simple-spy/ java]&lt;br /&gt;
* [https://www.autoitscript.com/forum/search/?&amp;amp;q=Selenium Selenium]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/191990-webdriver-udf-w3c-compliant-version/ WebDriver UDF (IE, Chrome, FireFox)]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should use spy applications to identify objects like&lt;br /&gt;
* au3inf part of AutoIT&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/153520-iuiautomation-ms-framework-automate-chrome-ff-ie/ simplespy in the zip]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/196833-uiaspy-ui-automation-spy-tool/?tab=comments#comment-1411655 uia spy]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/166830-java-object-automation-and-simple-spy jabsimplespy in examples section of the AutoIt forum]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/126716-control-viewer-autoit-window-info-tool/ control viewer]&lt;br /&gt;
* inspect as part of windows SDK&lt;br /&gt;
* VisualUIAVerifyNative.exe as part of windows SDK (8.1)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If above spy tools are not identifying your object you could try commercial tools (trials) like&lt;br /&gt;
* ranorex spy&lt;br /&gt;
* Testcomplete&lt;br /&gt;
* HP UFT&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And your last recognition can be bitmaps&lt;br /&gt;
* search for GDI&lt;br /&gt;
* search for findBMP&lt;br /&gt;
* search for imagesearch&lt;br /&gt;
&lt;br /&gt;
==Does AutoIt support database connections, such as SQL?==&lt;br /&gt;
Yes! UDFs exist for several popular SQL solutions, including SQLite, Firebird, MySQL, MSSQL and ODBC connections for PostGreSQL and others.&lt;br /&gt;
&lt;br /&gt;
For an illustrative list, see this link:&lt;br /&gt;
&lt;br /&gt;
* [https://www.autoitscript.com/wiki/User_Defined_Functions#Files.2C_Databases_and_web_connections Files, Databases and web connections]&lt;br /&gt;
&lt;br /&gt;
A DBF UDF also exists&lt;br /&gt;
&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/145142-dbf-udf-dbase-database-read-and-write-with-dll/ DBF UDF dBase with DLL]&lt;br /&gt;
&lt;br /&gt;
==How can I include some files into my compiled Autoit&#039;s EXE?==&lt;br /&gt;
Use FileInstall() or ResourcesEx UDF from the forum Examples.  Additional resources can also be included at compile time, click the &amp;quot;Res Add Files&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
==How can I test if checkbox / radiobutton is checked?==&lt;br /&gt;
Use this small function: If IsChecked($checkbox1) Then ...&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; by Zedna&lt;br /&gt;
Func IsChecked($control)&lt;br /&gt;
	Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED&lt;br /&gt;
EndFunc   ;==&amp;gt;IsChecked&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to use the {enter} key as a Tab?==&lt;br /&gt;
Use &lt;br /&gt;
[https://www.autoitscript.com/autoit3/docs/functions/GUISetAccelerators.htm Accelerator keys]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; by Melba23&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;MsgBoxConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WinAPI.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$hGUI = GUICreate(&amp;quot;Test&amp;quot;, 500, 500)&lt;br /&gt;
&lt;br /&gt;
$cInput_1 = GUICtrlCreateInput(&amp;quot;&amp;quot;, 10, 10, 200, 20)&lt;br /&gt;
$cInput_2 = GUICtrlCreateInput(&amp;quot;&amp;quot;, 10, 50, 200, 20)&lt;br /&gt;
$cInput_3 = GUICtrlCreateInput(&amp;quot;&amp;quot;, 10, 90, 200, 20)&lt;br /&gt;
&lt;br /&gt;
$cButton_1 = GUICtrlCreateButton(&amp;quot;Button 1&amp;quot;, 250, 10, 80, 30)&lt;br /&gt;
$cButton_2 = GUICtrlCreateButton(&amp;quot;Button 2&amp;quot;, 250, 50, 80, 30)&lt;br /&gt;
$cButton_3 = GUICtrlCreateButton(&amp;quot;Button 3&amp;quot;, 250, 90, 80, 30)&lt;br /&gt;
&lt;br /&gt;
$cEnter = GUICtrlCreateDummy()&lt;br /&gt;
&lt;br /&gt;
GUISetState()&lt;br /&gt;
&lt;br /&gt;
Local $aAccelKeys[2][2] = [[&amp;quot;{ENTER}&amp;quot;, $cEnter], [&amp;quot;{TAB}&amp;quot;, $cEnter]] ; Make {TAB} an accelerator&lt;br /&gt;
GUISetAccelerators($aAccelKeys)&lt;br /&gt;
&lt;br /&gt;
While 1&lt;br /&gt;
&lt;br /&gt;
	Switch GUIGetMsg()&lt;br /&gt;
		Case $GUI_EVENT_CLOSE&lt;br /&gt;
			Exit&lt;br /&gt;
		Case $cEnter&lt;br /&gt;
			Switch _WinAPI_GetFocus()&lt;br /&gt;
				Case GUICtrlGetHandle($cInput_1)&lt;br /&gt;
					; Check the input content&lt;br /&gt;
					If checkEntry() = True Then&lt;br /&gt;
						; Correct so move to next input&lt;br /&gt;
						GUICtrlSetState($cInput_2, $GUI_FOCUS)&lt;br /&gt;
					EndIf&lt;br /&gt;
					; Not correct so stay in current input&lt;br /&gt;
				Case GUICtrlGetHandle($cInput_2)&lt;br /&gt;
					If checkEntry() = True Then&lt;br /&gt;
						GUICtrlSetState($cInput_3, $GUI_FOCUS)&lt;br /&gt;
					EndIf&lt;br /&gt;
				Case GUICtrlGetHandle($cInput_3)&lt;br /&gt;
					If checkEntry() = True Then&lt;br /&gt;
						ConsoleWrite(&amp;quot;End&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
					EndIf&lt;br /&gt;
				Case Else&lt;br /&gt;
					GUISetAccelerators(0) ; Remove accelerator link&lt;br /&gt;
					ControlSend($hGUI, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;{TAB}&amp;quot;) ; Send {TAB} to the GUI&lt;br /&gt;
					GUISetAccelerators($aAccelKeys) ; Reset the accelerator&lt;br /&gt;
&lt;br /&gt;
			EndSwitch&lt;br /&gt;
	EndSwitch&lt;br /&gt;
&lt;br /&gt;
WEnd&lt;br /&gt;
&lt;br /&gt;
Func checkEntry()&lt;br /&gt;
&lt;br /&gt;
	; Random chance of correct answer or fail&lt;br /&gt;
	If Mod(@SEC, 2) = 0 Then&lt;br /&gt;
		MsgBox($MB_SYSTEMMODAL, &amp;quot;Test Fail&amp;quot;, &amp;quot;Press Enter to close this message box&amp;quot;)&lt;br /&gt;
		Return False&lt;br /&gt;
	EndIf&lt;br /&gt;
	Return True&lt;br /&gt;
&lt;br /&gt;
EndFunc   ;==&amp;gt;checkEntry&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why are my number sort results wrong?==&lt;br /&gt;
AutoIt by default uses an alpha sort algorithm. This means that ABC is sorted correctly, but it sorts numbers as 1,10,2,22,3,31 where the user expects 1,2,3,10,22,31.&lt;br /&gt;
This can be remedied by using a custom sort function. An example of such a custom number sort by Valuater appears below.  Search the Forum for [https://www.autoitscript.com/forum/topic/95383-sorting-numbers/ Number Sort] and [https://www.autoitscript.com/forum/topic/83626-natural-order-string-comparison/ Natural Order String Comparison] &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; by Valuater&lt;br /&gt;
#include &amp;lt;array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Array = StringSplit(&amp;quot;2,5,3,4,6,1,8,9,7&amp;quot;, &amp;quot;,&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
_ArraySortNum($Array)&lt;br /&gt;
&lt;br /&gt;
_ArrayDisplay($Array, &amp;quot;Sorted Array&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Func _ArraySortNum(ByRef $n_array, $i_descending = 0, $i_start = 1)&lt;br /&gt;
	Local $i_ub = UBound($n_array)&lt;br /&gt;
	For $i_count = $i_start To $i_ub - 2&lt;br /&gt;
		Local $i_se = $i_count&lt;br /&gt;
		If $i_descending Then&lt;br /&gt;
			For $x_count = $i_count To $i_ub - 1&lt;br /&gt;
				If Number($n_array[$i_se]) &amp;lt; Number($n_array[$x_count]) Then $i_se = $x_count&lt;br /&gt;
			Next&lt;br /&gt;
		Else&lt;br /&gt;
			For $x_count = $i_count To $i_ub - 1&lt;br /&gt;
				If Number($n_array[$i_se]) &amp;gt; Number($n_array[$x_count]) Then $i_se = $x_count&lt;br /&gt;
			Next&lt;br /&gt;
		EndIf&lt;br /&gt;
		Local $i_hld = $n_array[$i_count]&lt;br /&gt;
		$n_array[$i_count] = $n_array[$i_se]&lt;br /&gt;
		$n_array[$i_se] = $i_hld&lt;br /&gt;
	Next&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArraySortNum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How do I include AutoIt functions in a C# / C++ / VB programme? AutoItX==&lt;br /&gt;
AutoIt is also supplied as a combined COM and DLL version of AutoIt called AutoItX that allows you to add the unique features of AutoIt to your own favourite scripting or programming languages!&lt;br /&gt;
[https://www.autoitscript.com/site/autoit/ Info on AutoItX] &lt;br /&gt;
&lt;br /&gt;
From AutoItX.chm:&lt;br /&gt;
AutoItX is a DLL version of AutoIt v3 that provides a subset of the features of AutoIt via an ActiveX/COM and DLL interface. This means that you can add AutoIt-like features to your favourite scripting and programming languages, e.g. VB, VBScript, Delphi, C, C++, Kixtart, and most other languages that support the use of DLLs.&lt;br /&gt;
&lt;br /&gt;
Here are some C++ source code samples from various projects by [https://www.autoitscript.com/forum/profile/1-jon/ Jon]. Most are free to use but check any license files that accompany the downloads for details.  All code was created in Microsoft Visual C (6 and 7) but most would probably compile under mingw32 as well.&lt;br /&gt;
[https://www.autoitscript.com/site/code/ Download C++ examples for AutoItX] &lt;br /&gt;
&lt;br /&gt;
You don&#039;t need to regsvr it if you are using the c# library. The c# library uses the non-COM part of the DLL so it just needs to be in the same folder as the exe and add the assembly.dll to your project. From the documenation:&lt;br /&gt;
&lt;br /&gt;
Using the Assembly from VB/C# within in Visual Studio is very easy:&lt;br /&gt;
* Add a reference to AutoItX3.Assembly.dll to your project&lt;br /&gt;
* Add a using AutoIt; statement in the files you want to use AutoIt functions&lt;br /&gt;
* Distribute your final executable with the files AutoItX3.Assembly.dll, AutoItX3.dll, AutoItX3_x64.dll.&lt;br /&gt;
* Write code like this C# example:&lt;br /&gt;
    using AutoIt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; by Jon&lt;br /&gt;
   // Wow, this is C#!&lt;br /&gt;
    AutoItX.Run(&amp;quot;notepad.exe&amp;quot;);&lt;br /&gt;
    AutoItX.WinWaitActive(&amp;quot;Untitled&amp;quot;);&lt;br /&gt;
    AutoItX.Send(&amp;quot;I&#039;m in notepad&amp;quot;);&lt;br /&gt;
    IntPtr winHandle = AutoItX.WinGetHandle(&amp;quot;Untitled&amp;quot;);&lt;br /&gt;
    AutoItX.WinKill(winHandle);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the AutoItX Help File (included in the default AutoIt install):&lt;br /&gt;
AutoItX can be used as a standard DLL from any language capable of calling functions in external DLLs.&lt;br /&gt;
&lt;br /&gt;
The following files are provided to allow you to use the DLL in C++:&lt;br /&gt;
&lt;br /&gt;
* AutoItX3_DLL.h - C language header file showing the exported functions and parameters&lt;br /&gt;
* AutoItX3_DLL.lib - Microsoft format import library (x86)&lt;br /&gt;
* AutoItX3_x64_DLL.lib - Microsoft format import library (x64)&lt;br /&gt;
* AutoItX3.dll - The main AutoItX DLL (x86)&lt;br /&gt;
* AutoItX3_x64.dll - The main AutoItX DLL (x64)&lt;br /&gt;
&lt;br /&gt;
==How can I search an image in another image? ==&lt;br /&gt;
You can use the Pixel* functions of AutoIt. See the help file for more information and examples.&lt;br /&gt;
You can also use one of the UDFs below; most of which use GDI:&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/158264-bmpsearch-search-for-bitmap-within-bitmap-assembly-version/ FASM example]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/140478-bitmap-processing-using-raw-code/ asm bitmap processing]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/66545-find-bmp-in-another-bmp-imagesearch/ find bitmap in bitmap]&lt;br /&gt;
* [https://www.autoitscript.com/forum/search/?type=all&amp;amp;q=_GDIPlus_BitmapLockBits/ GDI bitmaps]&lt;br /&gt;
Other libraries can be found that make use of a specific external dll but those above are considered &amp;quot;native&amp;quot; as no external dlls are required.&lt;br /&gt;
&lt;br /&gt;
==Multithreading==&lt;br /&gt;
Multithreading basically is running multiple scripts/programs that have acces to the same variables, normally by sharing memory. &lt;br /&gt;
&lt;br /&gt;
The AutoIt language is not threadsafe and multithreading is firmly on the &amp;lt;b&amp;gt;NOT TO DO&amp;lt;/b&amp;gt; list&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Multitasking and Multi&amp;lt;i&amp;gt;processing&amp;lt;/i&amp;gt; are closely related, however, and multiple solutions have been explored:&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/25350-multithread/ Multithread technical discussion]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/25494-threaded-dll-sample/ Multithread with external DLL]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/146794-multi-thread-autoit/ Multithread with external DLL 2]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/64390-how-to-multi-process-in-autoit/ Multi process]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/187334-using-net-libary-with-autoit-possible/ Using C# - Host .NET]&lt;br /&gt;
&lt;br /&gt;
==Test automation==&lt;br /&gt;
Many people are looking for freeware tools to do test automation and cannot afford the commercial tools like HP LeanFT, Ranorex, Squish etc.&amp;lt;br /&amp;gt;&lt;br /&gt;
So how can AutoIt help you.&amp;lt;br /&amp;gt;&lt;br /&gt;
Out of the box install the base full zip package and start Scite.Exe as a simple IDE.&amp;lt;br /&amp;gt;&lt;br /&gt;
If you want to do more these links will help you.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read FAQ 31 for the basic stuff on which technologies are readable and which spying tools there are&amp;lt;br /&amp;gt;&lt;br /&gt;
Read FAQ 38 for the bitmap stuff&amp;lt;br /&amp;gt;&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/136766-isn-autoit-studio/ Alternative project IDE]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/188158-net-common-language-runtime-clr-framework/ .NET stuff]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/84133-winhttp-functions/ WinHTTP]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/185401-restwhich-udf-to-use-webdriver-of-edge/ webdriver]&lt;br /&gt;
Android can be reached thru ADB and Webdriver&amp;lt;br /&amp;gt;&lt;br /&gt;
iOS is limited to normal webdriver stuff thru WinHTTP library. So most likely you have to install additional iOS webdriver solutions&amp;lt;br /&amp;gt;&lt;br /&gt;
And after reading FAQ just ask your questions in the support forum&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DPI Awareness==&lt;br /&gt;
The following few links are related to DPI Awareness :&lt;br /&gt;
&lt;br /&gt;
After much research and testing, DPI Awareness is solved in the following thread with all relevant information moved to the 1st post &lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/199786-making-your-compiled-application-dpi-aware/ making-your-compiled-application-dpi-aware]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/166479-writing-dpi-awareness-app-workaround/ Writing DPI Awareness App - workaround]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/182423-wrong-screen-resolution-displayed-by-autoit-macros/ Wrong Screen Resolution Displayed by Autoit Macros]&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/192529-dpi-awareness-any-suggestion/ DPI Awareness - question]&lt;br /&gt;
&lt;br /&gt;
==AutoIt+SciTE Portable Developer Environment==&lt;br /&gt;
Recent discussion can be found here:&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/119572-autoit3-portable/?do=findComment&amp;amp;comment=1391105 How to make AutoIt+SciTE portable]&lt;br /&gt;
&lt;br /&gt;
==Does AutoIt have an agreed set of good practices ?==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=146866 Forum disscusion on good coding practices in AutoIt] &lt;br /&gt;
Wiki related resources:&lt;br /&gt;
* [https://www.autoitscript.com/wiki/Best_coding_practices Best coding practices] &lt;br /&gt;
* [https://www.autoitscript.com/wiki/Variables_-_using_Global,_Local,_Static_and_ByRef Variables - using Global, Local, Static and ByRef] &lt;br /&gt;
* [https://www.autoitscript.com/wiki/UDF-spec UDF-spec]&lt;/div&gt;</summary>
		<author><name>Nine</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User_Defined_Functions&amp;diff=14885</id>
		<title>User Defined Functions</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User_Defined_Functions&amp;diff=14885"/>
		<updated>2024-03-14T15:10:59Z</updated>

		<summary type="html">&lt;p&gt;Nine: /* Misc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
This page is a listing of libraries of &#039;&#039;&#039;user defined functions&#039;&#039;&#039; (UDF). These libraries have been written to allow easy integration into your own scripts and are a very valuable resource for any programmer.&amp;lt;br /&amp;gt;&lt;br /&gt;
This list is probably not complete (383 UDFs on 2023-11-14), but constantly supplemented.&lt;br /&gt;
If you do not find a solution here, ask a new question on the [https://www.autoitscript.com/forum/forum/2-general-help-and-support/ forum].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
The listed UDFs might have been written for older versions of AutoIt. So there is no guarantee that every UDF works smoothly with newer versions.&amp;lt;br /&amp;gt;&lt;br /&gt;
None of the UDFs has been tested by the maintainers of this list so you as a user need to make sure that they deliver the expected results.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;When will an UDF be added to this list?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
It should meet all/most of the general requirements for UDFs as described [[UDF-spec|here]].&amp;lt;br&amp;gt;&lt;br /&gt;
In addition the following requirements should be met:&lt;br /&gt;
* &#039;&#039;&#039;Documentation&#039;&#039;&#039;: So users can tell what the UDF is intended to do (&#039;&#039;mandatory&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Examples&#039;&#039;&#039;: So users can get an idea how to use the UDF. The more the better (&#039;&#039;mandatory&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Operating&#039;&#039;&#039; systems: Should support the latest Microsoft OS (&#039;&#039;mandatory&#039;&#039;) plus as many predecessors as possible (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;AutoIt&#039;&#039;&#039;: Should support the latest version of AutoIt (&#039;&#039;mandatory&#039;&#039;) plus as many predecessors as possible (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Author&#039;&#039;&#039;: The author should still be active on the forum so he can reply to questions (&#039;&#039;optional&#039;&#039;)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What to do when one of your UDFs is missing?&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Please send a [https://www.autoitscript.com/forum/messenger/compose/?to=7903 PM] to user water. Add a short description of the UDF and a link to your post in the [https://www.autoitscript.com/forum/forum/9-autoit-example-scripts/ Example Scripts] or [https://www.autoitscript.com/forum/forum/49-autoit-projects-and-collaboration/ Projects and Collaboration] forum.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Added in the past two years&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Date !! Section !! Creator !! Description&lt;br /&gt;
|-&lt;br /&gt;
|2023-11-14 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || TheXman || [https://www.autoitscript.com/forum/index.php?showtopic=208932 Xml2Json] - Transform XML to JSON.&lt;br /&gt;
|-&lt;br /&gt;
|2023-10-30 || [[User_Defined_Functions#Hardware|Hardware]] || Nine || [https://www.autoitscript.com/forum/index.php?showtopic=210968 Printer Manager] - Manage printers with winspool.drv DLL.&lt;br /&gt;
|-&lt;br /&gt;
|2023-10-30 || [[User_Defined_Functions#Controls|Controls]] || Andreik || [https://www.autoitscript.com/forum/index.php?showtopic=211024 Toggle Button] - Create simple toggle buttons.&lt;br /&gt;
|-&lt;br /&gt;
|2023-10-01 || [[User_Defined_Functions#Encryption_and_hash|Encryption and hash]] || willichan || [https://www.autoitscript.com/forum/index.php?showtopic=210901 Enigma] - Simple encryption based on the Enigma Machine.&lt;br /&gt;
|-&lt;br /&gt;
|2023-09-06 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || willichan || [https://www.autoitscript.com/forum/index.php?showtopic=151116 DIF] - Read/write DIF (Data Interchange Format) files.&lt;br /&gt;
|-&lt;br /&gt;
|2023-07-27 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || AspirinJunkie || [https://www.autoitscript.com/forum/imndex.php?showtopic=209526 xlsxNative] - Read and write xlsx files without excel.&lt;br /&gt;
|-&lt;br /&gt;
|2023-07-27 || [[User_Defined_Functions#OpenOffice.2FLibreOffice|OpenOffice/LibreOffice]] || donnyh13 || [https://www.autoitscript.com/forum/index.php?showtopic=210514 LibreOffice Writer] - A huge list of functions for LibreOffice Writer.&lt;br /&gt;
|-&lt;br /&gt;
|2023-02-03 || [[User_Defined_Functions#Graphics_and_image|Graphics and image]] || Starg || [https://www.autoitscript.com/forum/index.php?showtopic=152950 S3D] - Draw simple 3D graphics with GDI+.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-01-21 || [[User_Defined_Functions#Files.2C_Databases_and_web_connections|Files, Databases and web connections]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=209502 JSON] - Interacting with JSON data in AutoIt.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-01-21 || [[User_Defined_Functions#Script_Coding.2FAnalyzing.2FDebugging|Script Coding/Analyzing/Debugging]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=209529 Set] - Provides a set data type and brings the corresponding mathematical functions.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-01-21 || [[User_Defined_Functions#Maths|Maths]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=209527 Stat] - Statistics for Autoit.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-01-21 || [[User_Defined_Functions#Script_Coding.2FAnalyzing.2FDebugging|Script Coding/Analyzing/Debugging]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=209523 ArrayPlus] - Functions for flexible Array handling (creating, extracting, rebuilding, sorting, filtering, finding, printing).&lt;br /&gt;
|-&lt;br /&gt;
| 2023-01-21 || [[User_Defined_Functions#Script_Coding.2FAnalyzing.2FDebugging|Script Coding/Analyzing/Debugging]] || AspirinJunkie || [https://www.autoitscript.com/forum/index.php?showtopic=209528 ArrayCombinations] - Different ways of composing elements of a set.&lt;br /&gt;
|-&lt;br /&gt;
| 2023-01-04 || [[User_Defined_Functions#Sound|Sound]] || MattyD || [https://www.autoitscript.com/forum/index.php?showtopic=208116 MIDI UDF] - Wrap of the Windows MIDI functions.&lt;br /&gt;
|-&lt;br /&gt;
| 2022-06-19 || [[User_Defined_Functions#Internet protocol suite|Internet protocol suite]] || Beege || [https://www.autoitscript.com/forum/index.php?showtopic=207859 cURLX64] - cURL UDF with x64 support.&lt;br /&gt;
|-&lt;br /&gt;
| 2022-05-24 || [[User_Defined_Functions#Controls|Controls]] || kurtykurtyboy || [https://www.autoitscript.com/forum/index.php?showtopic=197654 GuiFlatButton] - Change colors of regular buttons.&lt;br /&gt;
|-&lt;br /&gt;
| 2022-04-25 || [[User_Defined_Functions#Social_Media_and_other_Website_API|Social Media and other Website API]] || Ascer || [https://www.autoitscript.com/forum/index.php?showtopic=192391 oAuth] - Open standard for access delegation, commonly used to grant websites or applications access to other websites.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Place the Table of contents (TOC) here --&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Automation ==&lt;br /&gt;
&lt;br /&gt;
===Browsers===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154439 Chrome (by seangriffin)] - Automate the most common tasks in Chrome with this UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95595 Firefox (by Stilgar)] - A little less support for automation than IE, but still very good.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167661 Firefox (by Danp2)] - Modified newer version of Stilgar Firefox UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/224-firefox-profile-backup/ FireFox Profile Backup 1.0 (by careca)] - Backup or restore your firefox profile. The application searches for the profile in home drive that will be the one to backup.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124330 _FF_AutoLogin (by Stilgar)] - This is a auto-login function and login-function-generator for FireFox and the FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=92035 _FF_DM (by Stilgar)] - UDF to control the FireFox Download-Manager (not the download-window).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91650 _FF_FoxBox (by Stilgar)] - UDF to control Fox!Box (A Mozilla Firefox extension for the AVM FRITZ!Box) with FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91665 _FF_Screengrab (by Stilgar)] - UDF to control Screengrab! (FireFox-AddOn) with FF.au3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124330 _HTML (by Stilgar)] - Get informations from any HTML (XML) source, without any browser.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166542 HTMLDocumentEvents (by SmOke_N)] - Track IE document events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167035 IEEx (by SmOke_N)] - IE extended library with some Javascript options.&lt;br /&gt;
* Internet Explorer (by DaleHohm et al.) - IE library that is now supplied with a standard AutoIt install.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=153520 IUIAutomation MS framework (by junkew)] - IUIAutomation MS framework to automate chrome, FF, IE etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149203 NavInfo (by Nessie)] - With this UDF you can check if a specified browser/software is installed and which version is being used.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=61090 Opera (by MrCreatoR,)] - Automate the most common tasks in Opera with this UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191990 WebDriver (by Danp2)] - W3C compliant Webriver UDF.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Office===&lt;br /&gt;
Some features of Microsoft&#039;s Office products are proprietary and cannot readily be manipulated.  Sometimes workarounds are required.&amp;lt;br&amp;gt;&amp;lt;u&amp;gt;[[Known issues with Microsoft Office automation.|This page]]&amp;lt;/u&amp;gt; is dedicated to identifying those issues, provide explanations and list solutions or workarounds.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32144 Microsoft Office Access (by randallc)] - Automate Microsoft Access.&lt;br /&gt;
* Microsoft Office Excel (by water et al.) - This UDF is included in AutoIt. Link to the [[Excel_UDF|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135312 Microsoft Office Excel Charts (by water, GreenCan)] - Creating charts using Microsoft Excel.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=204034 Microsoft Office Excel Pivot Tables (by SudeepJD)] - Create and Update Excel Pivot Tables and Charts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126305 Microsoft Office Outlook (Items) (by water)] - Automate Microsoft Outlook Items. Link to the [[OutlookEX_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202451 Microsoft Office Outlook (GUI) (by water)] - Automate Microsoft Outlook GUI. Link to the [[OutlookEX_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197346 Microsoft Office Outlook Tools (by water)] - Built on top of the OutlookEX UDF it offers some often needed extended functionality (import/export ics/vcf files etc.). Link to the [[OutlookTools|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50254 Microsoft Office PowerPoint (by Toady)] - Automate Microsoft PowerPoint.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=178783 Microsoft Office PowerPoint (by water)] - Automate Microsoft PowerPoint. Link to the [[Powerpoint|documentation]] pages.&lt;br /&gt;
* Microsoft Office Word (by water et al.) - This UDF is included in AutoIt. Link to the [[Word_UDF|documentation]] pages.&lt;br /&gt;
&lt;br /&gt;
===OpenOffice/LibreOffice===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210514 LibreOffice Writer (by donnyh13)] - A huge list of functions for LibreOffice Writer.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151530 OOo/LibO Calc (by GMK)] - OpenOfficeCalc UDF (works also for Libre Office).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=185932 OpenOffice/LibreOffice Spell Checker (by GMK)] - Function to validate words, and show spell alternatives.&lt;br /&gt;
&lt;br /&gt;
===Other Applications===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106163 Active Directory (by water)] - Extensive library to control and manipulate the Windows active directory ([https://www.autoitscript.com/forum/files/file/355-ad-active-directory-udf/ Download]). Link to the [[Active_Directory_UDF_-_General|documentation]] pages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87956 Java (by seangriffin)] - Creates an access bridge between your application and a Java application. Allowing you to automate some Java applications.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=86574 SAP (by seangriffin)] - SAP business management automation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149540 SAPWizard (by ozmike)] - SAPWizard UDF.&lt;br /&gt;
&lt;br /&gt;
== Script Coding/Analyzing/Debugging ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209528 ArrayCombinations (by AspirinJunkie)] - Different ways of composing elements of a set.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155442 ArrayMultiColSort (by Melba23)] - Function to sort a 2D array on several columns.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209523 ArrayPlus (by AspirinJunkie)] - Functions for flexible Array handling (creating, extracting, rebuilding, sorting, filtering, finding, printing)&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=180467 ArrayWorkshop (by czardas)] - Multidimensional array functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=59174 Associative array functions (by Nutster)] - Manage a version of associative arrays in single AutoIt variables. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=198929 AutoIt error logger (AUERLO) (by user4157124)] - File- and stdout (etc.) output of messages, regular- and COM Object errors, exit method and -code, etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=110379 AutoItObject (by ProgAndy and others)] - Brings the Object Orientation programming paradigm to AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=112879 AutoIt Syntax Highlight (by MrCreatoR)] - Highlights AutoIt v3 syntax code to html/bbcode format.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191488 cDebug (by c.haslam)] - Dumps the values of all AutoIt subtypes and expressions including nested arrays, DLL structs and maps.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195882 ErrorLog (by mLipok)] - Logs program activities and errors to different output locations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143167 GetOpt (by dany)] - Parse GNU and DOS style command line options similar to getopt().&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=156196 Log4a (by zorphnog)] - Logging library loosely based upon the log4j and NLog libaries.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195862 Loga (by Danyfirex)] - Simple logging library to keep track of code with an integrated console.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119032 Log UDF (by Yashied)] - Create a text log files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202832 OnDebugMsgBox (by argumentum)] - Catch the dreaded &amp;quot;AutoIt Error&amp;quot; MsgBox and prettify or hide it.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209529 Set (by AspirinJunkie)] - Provides a set data type and brings the corresponding mathematical functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=200660 Variants and Safearrays (by LarsJ)] - Create/access/process Variants and SafeArrays.&lt;br /&gt;
&lt;br /&gt;
=== Inter Process Communications ===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202485 AppInteract (by MrCreatoR)] - Reliably pass arrays or other types between processes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=205109 AutoItSharedData (by SEuBo)] - Create a shared data storage, a simple AutoItObject-Object, using AutoItObject_Internal.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=188991 Autoit-Socket-IO (by tarretarretarre)] - Event driven TCP/IP wrapper inspired by Socket.IO with focus on user friendliness and long term sustainability.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126936 Container (by MrCreatoR)] - Scripts interaction method. Allows to transfer whole arrays as data, and even COM objects.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=55994 DDEML (by doudou)] - Use your AutoIt script as DDE client or server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=193277 FMIPC (by argumentum)] - IPC via FileMapping.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127615 Interprocess (by JScript)] - Remotely execute a function in another script (using Mailslot).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=193158 IPC_IO (by JohnWIlling)] - IPC library supporting multiple connection types (such as: Named Pipe, File, TCP, SharedMemory, MailSlot).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202618 IPC Techniques through ROT Objects (by LarsJ)] - Implementing IRunningObjectTable Interface.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106710 Mailslot (by trancexx)] - IPC using Mailslots.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=204734 Overlapped Named Pipe IPC (by Nine)] - Very fast interprocess communication that could be used between VBS or AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169797 Pool - Post Office for Organized Labour (by RTFC)] - Provides multiple AutoIt processes with an infrastructure for exchanging messages, data, and remote-control instructions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202587 WCD IPC (by Nine)] - Framework for Inter Process Communication using Windows Messages WM_COPYDATA.&lt;br /&gt;
&lt;br /&gt;
== Files, Databases and web connections ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=180850 ADO (by mLipok)] - A modifed version of the _SQL UDF to access all kind of databases (MSSQL, MySQL, PostgreSQL, SQLite, MS ACCESS, XLS, TXT, and many other which use ADO and ODBC).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105875 ADODB (by spudw2k)] - ADODB Example.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=176895 AXML (by Aipion)] - This is a Wrapper for Pugixml, made with C++.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145142 DBF (by funkey)] - dBase database read and write with DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/114406-csv-file-to-multidimensional-array/?do=findComment&amp;amp;comment=799820 CSV (by ProgAndy)] - Read/write CSV files to/from 2D arrays.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197909 CSV (by seangriffin)] - Manipulate CSV files using SQLite.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155748 CSVSplit (by czardas)] - Convert to and from CSV format.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151116 DIF (by willichan)] - Read/write DIF (Data Interchange Format) files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119238 Excel file generation (by jerome)] - Excel file generation (multi-sheet workbook) without the need to have Excel installed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143866 Excel XML (by FireFox)] - Work with SpreadsheetML (Open XML file formats).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155905 EXml (by jdelaney)] - Create Excel file (SpreadsheetML) through &amp;quot;Microsoft.XMLDOM&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116072 EzMySql (by Yoriz)] - Use MySQL Databases with AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148232 _FileGetProperty (by BrewManNH)] - Retrieve properties of a file.Xml2Json&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94920 FireBird (by eltorro)] - FireBird, Interbase DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197421 jq (by TheXman)] - Brings the power and flexibility of jq (an open-source command-line based JSON processor) to AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209502 JSON (by AspirinJunkie)] - Interacting with JSON data in AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=104150 JSON (by Gabriel13)] - RFC4627 compliant JSON encode/decode.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148114 JSON (by Ward)] - JSMN - A Non-Strict JSON UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=156794 JSON (by ozmike)] - Bridge to Native Windows JSON plus OO extension for AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173797 JSONgen: JSON generator (by Jefrey)] - Generate JSON.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127101 MS SQL (by TheLuBu)] - MSSQL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51952 MS SQL (by ChrisL)] - _SQL. ADODB Connection.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20814 MySQL (by cdkid)] - MySQL relational database management system.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=85617 MySQL (by ProgAndy)] - MySQL UDFs (without ODBC - working with libmysql.dll).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=122360 MySQL (by James)] - MySQL ODBC Connector.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=187223 romaSQL (rynow)] - Built on the concept of Laravel Query &amp;amp; doctrine. Connection string is based on ADODB / ODBC.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143331 Sharepoint 2007/2010 (by schoppet)] - Access the SOAP-Webservices of Sharepoint 2007/2010.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=17099 SQLite (by ptrex)] - SQLite is a library that implements a self-contained, embeddable, zero-configuration SQL database engine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=142977 SQLite Array Functions (by SmOke_N)] - SQLite Array Functions - a faster method for unique arrays and sorting methods.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140521 SQLite - Database (by PhoenixXL)] - UDF for SQLite so that beginners will also be able to do the stuff.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157853 SQLiteEx (by 57ar7up)] - SQLiteEx UDF v0.5.1 - Simplest work with SQLite.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163633 Xbase I/O (by RTFC)] - Transfer data between Xbase Data file (*.dbf) and AutoIt array written in pure AutoIt (no SQL, no ADO, no dlls, no external dependencies).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209526 xlsxNative (by AspirinJunkie)] - Read and write xlsx files without excel.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=19848 XML DOM Wrapper (by eltorro)] - Supports CRUD operations on XML. Including XSL and XPath.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=176895 XML (by mLipok)] - New version of XML DOM Wrapper, with many new features.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=208932 Xml2Json (by TheXman)] - Transform XML to JSON.&lt;br /&gt;
&lt;br /&gt;
== Data compression ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=85094 7z, zip, gzip, bzip2, tar (by rasim)] - Extensive library that uses a external DLL that must be provided with the script.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=92958 gZip (by Zinthose)] - Based on the parsing of gZip.exe output. It can work with memory, it doesn&#039;t work with files. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87441 LZMA (by trancexx)] - LZMA (Native Windows).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138838 Package (by Yashied)] - Package UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=129529 pZip (by asdf8)] - PureZIP_L library UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=76176 UnRAR (by rasim)] - UnRAR.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=17727 XZip (by eltorro)] - Another UDF for &amp;quot;XStandard XZIP Component&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161847 XZip (by mLipok)] - UDF for &amp;quot;XStandard XZIP Component&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=44524 Zip plugin (by eltorro)] - Zip plugin.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=73425 ZIP (by torels)] - ZIP UDF in pure AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116565 zip (by wraithdu)] - Create ZIP files and unpack ZIP files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135565 ZIP (by joakim)] - ZIP STRUCTS UDF (from scratch).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87284 ZLib (by monoceres)] - Based on ZLib.dll. It can compress/uncompress data in memory, it doesn&#039;t work with files.&lt;br /&gt;
&lt;br /&gt;
== Encryption and hash ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81332 _Base64Encode, _Base64Decode (by trancexx)] - Fast _Base64Encode, _Base64Decode.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=153246 Base91 and Base128 (by Beege)] - Base91 and Base128 functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155538 Codecrypter (by RTFC)] - Encrypt scripts without placing the key inside the script.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=201002 Cryptography API: Next Gen (by TheXman)] - Microsoft&#039;s long-term replacement for their CryptoAPI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210901 Enigma (by willichan)] - Simple encryption based on the Enigma Machine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203990 GDPR (by mLipok)] - Functions to encrypt/decrypt strings and files with the GDPR in mind.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95558 Hashes for files (by trancexx)] - Fast RC32, MD4, MD5, SHA1 calculation for big files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=107784 TrueCrypt (by FuryCell)] - TrueCrypt UDFs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140737 WinTrust (by kasty)] - verify the integrity of a file with its embedded signature or a given catalog.&lt;br /&gt;
&lt;br /&gt;
== GUI Additions ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97241 3D Pie chart (by WideBoyDixon)] - 3D Pie chart.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173924 Chart_UDF (by Kanashius)] - This UDF can be used to Display bar charts in a window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=96258 ContextHelp (by Yashied)] - Management of context help ([https://www.autoitscript.com/forum/index.php?showtopic=72152-contexthelp/ original]).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=109096 ExtMsgBox (by Melba23)] - A very customisable replacement for MsgBox.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105582 GUICtrlOnChangeRegister (by Mat)] - Call a function when an edits content is changed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145149 GUIExtender (by Melba23)] - Expand and contract sections of your GUI ([https://www.autoitscript.com/forum/index.php?showtopic=117909 original]).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=197654 GuiFlatButton (by kurtykurtyboy)] - Change colors of regular buttons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=119505 GUIFrame (by Melba23 &amp;amp; Kip)] - Divide a GUI into adjustable frames.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=144207 GUI Panel (by FireFox)] - Manage child GUIs as panel ctrls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113723 GUI Scrollbars (by Melba23)] - Automatically sized scrollbars with a single command.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161184 MetroGUI (by BBs19)] - Windows 10 style buttons, toggles, radios etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20967 Modern tray menu (by Holger)] - Allows the creation of modern, fancy GUI and tray menus with icons and colors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=194693 MTSkin (by Taskms4)] - Simply create modern looking GUIs (borderless GUI, Interactive menu panel (with mouse-over detection), a bunch of skins).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182136 Notifications (by S3cret91)] - Display permanent desktop notifications.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=136149 Notify (by Melba23)] - Small notifications on the edge of the display.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161750 Pie chart (by Andreik)] - Pie chart.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75429 Real Vista Aero Glass (by James)] - Real Vista Aero Glass UDF - you can apply glass effect to your GUI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=71811 SetOnEvent (by martin)] - Provides an easy way for an event to call functions with parameters.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=103871 _SysTray (by wraithdu)] - Get info about and manipulate Systray icons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108445 Toast (by Melba23)] - Small message GUIs which pop out of the Systray.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=110003 Tray Icon Bar Graph (by BeeGee)] - Creates a scrolling bar graph as the tray icon.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=132864 Uskin (by JScript)] - Allows you to skin your GUI using the Windows &#039;&#039;.MSstyles&#039;&#039; files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191821 Wi3SMenu (by NHD)] - Create a slide menu with Windows 10 style. Supports color, icon and opacity.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=129196 WinSnap (by Beege)] - Automatic Window Alignment by applying that &amp;quot;snappy edge&amp;quot; effect to your GUI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32494 XSkin (by Valuater)] - Allows skinning of your GUI and to apply custom skins.&lt;br /&gt;
&lt;br /&gt;
=== Controls ===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202529 BrowseForFolder (by MrCreatoR)] - Handle SHBrowseForFolderW with more options, such as multi selection (checkboxes), window position, controls text and more. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=146406 Calendar (by jmon)] - Calendar UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=125293 ChooseFileFolder (byMelba23)] - Single and multiple selections from specified path treeview listing.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=96464 Colorpicker (by Yashied)] - Create a button for the user to select a color.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=123409 Explorer Frame UDF (by Beege)] - Takes any frame created by GUIFrame and turns it into a MS-Windows like Explorer window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173929 GDIPlus Slider UDF (by Kanashius)] - This UDF can be used to create a slider with an imagebackground and an image to move.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=79412 Graph control (by andybiochem)] - Easily create and show bar chart and line charts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=104399 GraphGDIPlus UDF (by andybiochem)] - Easily create and show bar chart and line charts with GDI+ to take advantage of double-buffering.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105682 GUICtrlCreateFinder (by Mat)] - Allows you to create a window finder control like the one seen in AutoIt Window Info.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=107965 GUIHotkey (by Mat)] - UDF for using native hotkey controls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182492 GUIListViewEx (by Melba23)] - Insert, delete, move, drag, sort, edit and colour ListView items.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111438 GUIPager (by Mat)] - Create and control native pager controls.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=20967 GUI/Tray Menu (by Holger, LarsJ, AZJIO)] - GUI/Tray Menu with icons and colors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166594 GUITreeViewEx (by Melba23)] - Check/clear parent and child checkboxes in a TreeView.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=90598 Hotkey input control (by Yashied)] - Hotkeys Input Control UDF Library (Non-native).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173932 ListView Edit UDF (by Kanashius)] - This UDF can be used to simply edit an Listview.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=109355 ListView - Explorer like ListView UDF (by Beege)] - This UDF simplify creating MS Explorer-like ListViews.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143711 Marquee (by Melba23)] - Make tickertape info bars.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=143380 Predict Text UDF (by PhoenixXL)] - Sub classes the edit control and matches the current word through the Database &amp;amp; sets selection in accordance.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163939 Progressbar new style (by Muzaiyan)] - New styles for your progress bar.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=74649 Progressbar with GDIplus (by ProgAndy)] - You even can use full textured images.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151636 RestrictEdit_SRE UDF (by PhoenixXL)] - Restrict the text that can be entered in an editbox through a String Regular Expression.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=128242 Ribbon (by trancexx)] - UDF for Windows Ribbon framework.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114034 StringSize (by Melba23)] - Automatically size controls to fit the text you want to put in them.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126958 Syslink (by Yashied)] - Provides a convenient way to embed hypertext links in a window.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=105814 Table (by andybiochem)] - Table UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=211024 Toggle Button (by Andreik)] - Create simple toggle buttons.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=125251 TVExplorer (by Yashied)] - Allows to create TreeView (TV) Explorer controls that display a tree of files and folders.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=190659 Virtual Listview (by LarsJ)] - Virtual Listview for large amounts of data with a large number of rows.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=195053 Windows Message Monitor (by LarsJ)] - Monitor Windows Messages of a window or control.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=118317 Battery UDF (by Yashied)] - Retrieves a various information and current status of the battery(s).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154727 BuildPartitionTable (by RTFC)] - Scans a physical drive&#039;s partition table and returns a partition_table, allocation_table and volumes_table.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155674 CommAPI (by therealhanuta)] - Serial and parallel communication (COM port, RS-232, LPT port) - without installing DLL&#039;s (using Windows API calls).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=77731 Device Management (by weaponx)] - Device Management API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97487 DirectShow (by monoceres)] - DirectShow UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164700 DirectSound (by eukalyptus)] - DirectSound UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164701 Direct2D (by eukalyptus)] - Direct2D UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=99713 Drive Info (by NerdFencer)] - Gathers drive info for Hard Drives, Disk Drives, and Floppy Drives.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138989 FritzBox (by Allow2010)] - _FB_Tools - manage your FritzBox from Autoit.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121084 I/O Port Functions (by Ascend4nt)] - Input/Output UDF for interacting with ports (x64 Parallel Port, Keyboard etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203207 MediaDevice (by Danyfirex)] - Transfer files to portable devices like phones, storages.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154350 Monitor Configuration (by jaberwacky)] - Monitor Configuration UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155469 Mouse (by AlmarM)] - AutoIt powered mouse events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=147325 MouseTrapEvent (by ozmike)] - MouseTrapEvent UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149083 NetInfo (by Nessie)] - UDF for test internet download speed and upload speed.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155539 Network configuration (by jguinch)] - Network configuration UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182684 Nitgen (by Jefrey)] - UDF to work with Nitgen fingerprint readers that use NGenBio SDK.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=210968 Printer Manager (by Nine)] - Manage printers with winspool.drv DLL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=155485 Printers management with WMI (by jguinch)] - Allows to manage printers: add/delete printer, driver, port, or obtain configuration, set default printer ...&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=189190 Serial port UDF / COM port UDF (by MazeM)] - Another UDF for the serial port. It is very similar to CommAPI using kernel32.dll, but all code is packed into a single file without any dependencies.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=128546 Serial Port/COM (by martin)] - Serial Port /COM Port UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27755 SMARTDRIVE (by ptrex)] - SMART drive Analysis.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158640 SPI Hardware Interface (by Blinky)] - Communicate with the MAX335 chip using the SPI protocol via the LPT (printer) port.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=8188 VISA/GPIB (by Angel)] - VISA/GPIB library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=68866 Webcam (by LIMITER)] - Webcam UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70857 Webcam (by ludocus)] - Webcam UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91018 WiFi (by MattyD)] - Low level control over your wireless LAN.&lt;br /&gt;
&lt;br /&gt;
== Information gathering ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=29404 Computer information (by JSThePatriot)] - A general purpose library to get various details about a Windows machine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151920 NetworkStatistics (by Ascend4nt)] - Network Interface Info, Statistics, and Traffic.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=54039 WinPcap (by JRSmile)] - Wrapper for the windows packet capture library WinPcap.&lt;br /&gt;
* [https://opensource.grisambre.net/pcapau3/ WinPcap (by Nicolas Ricquemaque)] - A library to access the main functionalities offered by the WinPcap driver.&lt;br /&gt;
&lt;br /&gt;
== Internet protocol suite ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=207859 cURLX64 (by Beege)] - cURL UDF with x64 support.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=137456 cURL (by seangriffin)] - A UDF for transferring data with URL syntax.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=187718 HTTP lib (by Jefrey)] - HTTP lib (GET, POST and upload) UDF to simplify HTTP requests, mainly when dealing about POST data or file uploads.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202895 HttpApi (by TheXman)] - HTTP Server API enables applications to communicate over HTTP without using MS Internet Information Server (IIS).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=40243 IMAP (by mikeytown2)] - IMAP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108422 IMAP4 (by Tipulatoid)] - IMAP4 UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=43515 IRC (by McGod)] - A lightweight library for communicating with IRC servers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=159285 IRC (by rcmaehl)] - IRC UDF - Updated Version of Chips&#039; IRC UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=22838 POP3 (by Apzo)] - POP3 library for retrieving email messages. Not compatible with Gmail because it uses SSL.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167339 POP3 (by mLipok)] - POP3 UDF According to the 1939 RFC, modified version with Quoted Printable decoder.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154530 Prowl (by mrflibblehat)] - Push notifications to iPhone, iPod touch or iPad using Prowl (Growl client for iOS).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=138095 SFTP (by Lupo73)] - UDF to support SFTP protocol using PSFTP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154054 Socket UDF (by funkey)] - Socket UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=23860 SMTP (by Jos)] - Smtp Mailer That Supports Html And Attachments.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167292 SMTP Mailer UDF (by mLipok)] - Smtp Mailer That Supports Html And Attachments - Modified Version with support to save EML files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81687 SNMP (by enaiman)] - SNMP_UDF for SNMPv1 and SNMPv2c.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70759 SNMP - MIB protocol (by ptrex)] - Reading toner status from SNMP device with WMI.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166579 SSH (by jeanphile)] - Use the SSH protocol very easily in your code.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=185329 STUN (by j0kky)] - STUN is a protocol that permits you to know your external IP but, more interesting, your external port associated to your internal port.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=184817 SyslogSend (by Irios)] - This allows sending (BSD) messages to a syslog server using UDP.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169774 TCPServer (by Jefrey)] - Multi client, event-based, able to bind console app to socket.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=57022 UPnP Protocol (by ptrex)] - UPnP - Read and Control your devices in side out.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=84133 WinHTTP (by trancexx)] - Access the HTTP protocol for creating GET and POST requests and submitting them with conforming standards, cookies not supported.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=77503 WinInet (by -Ultima-)] - Access standard Internet protocols (FTP, Gopher and HTTP). Supports GET/POST requests and cookies.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=181645 Winsock (by j0kky)] - Create client/server application using native winsock functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=191954 WSA_NBTCP (by ripdad)] - Windows Sockets API - Non-Blocking Transmission Control Protocol.&lt;br /&gt;
&lt;br /&gt;
== Maths ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170658 Advanced Math UDF (by scintilla4evr)] - Advanced mathematical functions (primes, number sequences, interpolate, calculate values of functions like Riemann zeta etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=102686 Advanced rounding (by Mat)] - Support for different measures of accuracy and 8 ways to resolve tie breaks.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83529 Big number (by eukalyptus)] - Make calculations with extremely large numbers that AutoIt normally is not able to support.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=106551 Decimal To fraction (by Malkey)] - Converts any decimal number to a fraction. Example: 1.2 to 6/5.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/319-eigen4autoit/ Eigen4AutoIt (by RFTC)] - Allows to perform fast matrix operations on large numerical data sets, and much more ....&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=140789 MathsEx UDF (by PhoenixXL)] - Functions for Carrying Out More Advanced Mathematical Calculations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81189 Number base conversion (by james3mg)] - From, to and between positive bases less than 63 (decimals supported).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=117156 NumToWord (by Mat)] - Convert numerals to a human readable string.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=108803 Polynomials (by Mat)] - Functions for using polynomials.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83091 Primes (by jennico)] - Many functions dealing with prime number generation and calculations.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94770 Roman Numerals (by AZJIO)] - Roman Numerals.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=98160 Root function (by Mat)] - Working out real roots of numbers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=209527 Stat (by AspirinJunkie)] - Statistics for Autoit.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163899 StringAPL (by minx)] - inline APL interpreter.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=82722 Trigonometric and math functions (by trancexx)] - _ATan2(), _Cosh(), _Frexp(), _Hypot(), _Ldexp(), _Logb(), _Sinh(), _Tanh().&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=95357 FreeImage library (by ProgAndy)] - Various operations on images, such as rotate, resize, flip.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127263 HtmlHelp (by Geodetic)] - HtmlHelp functions for context-sensitive help from CHM (compiled HTML) files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116009 HyperCam (by seangriffin)] - HyperCam (Screen Recording) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=182535 HyCam2 (by willichan)] - Automation for HyCam2 screen recording utility.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50608 OCR (by ptrex)] - Real OCR in AU3 - MODI with MS Office 2003.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=89542 OCR (by seangriffin)] - Tesseract (Screen OCR) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206133 OCRSpace (by MrKm)] - Convert Images to text with the OCRSpace API. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51054 Printer controller (by martin)] - Print text in any font, size and colour at any position on the page, draw lines, curves, elipses, pies in any colour, and print images.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=73993 Printing (by GRS)] - Printing from AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202621 QRCreator (by BugFix)] - Simple QR-code creation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161831 RTF_Printer (by mLipok)] - Printing RichEdit in the background.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=94834 Simple DirectMedia Layer (by AdmiralClaws)] - Adds support for joysticks, CDs, 2D graphics, timers. See [https://www.libsdl.org/ SDL website] for more information.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=207324 UWPOCR (by Danyfirex)] - Universal Windows Platform Optical Character Recognition API.&lt;br /&gt;
&lt;br /&gt;
===Graphics and image===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202987 AutoYolo3 (by smartee)] - Real-Time Object Detection using YOLOv3 wrapper.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113881 au3Irrlicht2 (by JRowe)] - Combining Irrlicht and AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=86748 AVI writing udf (by monoceres)] - Create uncompressed avi&#039;s from bitmap files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27362 Bitmap Library (by evilertoaster)] - Bitmap Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=202663 GIF animation (by Nine)] - Fast cached GIF animation.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150231 GTK+  (by prazetto)] - GTK+ Framework | Widgets.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=13096 ImageGetInfo (by Lazycat)] - Read info from JPEG, TIFF, BMP, PNG and GIF - size, color depth, resolution.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/471-image-search-udf Image Search (by VIP)] - Search for an image on the desktop. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70506 IrrLicht (by A. Percy)] - A 3D graphics engine suitable for creating games.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160732 OpenCV (by myliseJ)] - UDF for the OpenCV library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206432 OpenCV v4+ (by smbape)] - OpenCV UDF with support for OpenCV v4+.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=151011 OpenGL (by LarsJ)] - OpenGL without external libraries etc. For JPEG files it also retrieves various Exif information.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=148129 OpenGL (2.0) (by minx)] - New set of UDFs for OpenGL + AutoIt.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=152950 S3D (by Starg)] - Draw simple 3D graphics with GDI+.&lt;br /&gt;
&lt;br /&gt;
===Players===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114143 VLC (by seangriffin)] - VLC (Media Player) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=91316 VLC Media Player (by ptrex)] - VLC Media Player.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=27352 WMP (by ConsultingJoe)] - Windows Media Player UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=44008 WMP - Media Controls (by CFire)] - Another Windows Media Player UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=203154 WMP - GUI Control (by SudeepJD)] - IE based WMP Control.&lt;br /&gt;
&lt;br /&gt;
===Sound===&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83481 BASS Function Library (by BrettF)] - Sound and Music via wrappers for Bass, BassEnc, Bass FX, BassSFX, BassAsio and BassCd DLLs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173808 libZPlay (by Danyfirex)] - Multimedia library for playing mp3, mp2, mp1, ogg, flac, ac3, aac, oga, wav and pcm files and streams.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=37072 MIDI (by eynstyne)] - MIDI UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=208116 MIDI (by MattyD)] - Wrap of the Windows MIDI functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114742 SAPIListBox (by seangriffin)] - SAPIListBox (Speech Recognition) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=100439 TTS (by Beege)] - Text-to-Speech UDF.&lt;br /&gt;
&lt;br /&gt;
== PDF ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162195 Acrobat Reader - ActiveX Viewer (by mLipok)] - Make your own PDF Viewer GUI with Acrobat Reader ActiveX COM Object &amp;quot;AcroPDF.PDF.1&amp;quot;.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164469 Debenu PDF Viewer SDK (by mLipok)] - A collection of functions to display PDF files in your applications using Debenu PDF Viewer SDK.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160875 Debenu Quick PDF Library (by mLipok)] - A collection of functions for Debenu Quick PDF Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75832 FoxIt Reader (by ptrex)] - PDF Reader in AU3.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=118827 MPDF (by taietel)] - Create PDF from your application.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=42776 PDFCreator (by ptrex)] - Automation of PDFCreator allows you to create and manipulate PDF files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170550 PDFCreator (by mLipok)] - UDF for PDFCreator v1.x.x with working EVENTs Handler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=32261 _StringToPDF (by Tam0r)] - Write a string to a PDF file and specify font size, type etc.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145158 Firewall (by JLogan3o13)] - Control and manipulate the Windows Firewall (enable/disable, Exclusions list, enable/disable ports etc.).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=194015 Firewall policy2 (by Bilgus)]- Provides access to the firewall policy for Windows Vista+.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150819 VirusTotal (by Danyfirex)] - VirusTotal API 2.0 UDF.&lt;br /&gt;
&lt;br /&gt;
== Social Media and other Website API ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=159254 Cex.io (by AquilesCrespo)] - UDF script for using with the web api from https://cex.io/ server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169333 CrowdinAPI (by mLipok)] - Uses the [https://crowdin.com/page/api crowdin.net website API] for some functions (create projects, add and update files, download translations or integrate localization).&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/290-dropbox-authenticator/ Dropbox authenticator (by Gimerly)] - Dropbox authenticator.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158106 Easypost (by dcat127)] - Print USPS Postage Labels.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=114801 eBay (by seangriffin)] - eBay UDF (functions GetItemStatus and GetSingleItem from the &amp;quot;Shopping API&amp;quot;).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=141340 Gmail (by PhoenixXL)] - Remote Gmail (UDF).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=192422 Gmail API (by Ascer)] - Automate communication with Gmail using oAuth 2.0 security. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=98504 Google Functions (by Beege)] - Google Functions (Suggestions, Definitions, Translate, Convert).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=115437 Google Maps (by seangriffin)] - Google Maps UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=70675 iTunes (by torels)] - iTunes UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=101802 iTunes (by Beege)] - Another iTunes UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150985 No-IP (by Nessie)] - Simply update your no-ip hostname(s) and retrieve the ip address of an no-ip address.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=192391 oAuth (by Ascer)] - Open standard for access delegation, commonly used to grant websites or applications access to other websites.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=150838 PasteBin (by mrflibblehat)] - Pastebin UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121767 Skype (by FireFox)] - Skype4COM provides an ActiveX interface to the Skype API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113234 Teamspeak 3 (by chipDE)] - Teamspeak 3 UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186944 TeamViewer API (by mLipok)] - A collection of function for use with TeamViewer API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186381 Telegram Bot (by LinkOut)] - UDF for [https://core.telegram.org/api Telegram messenger API].&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=166547 TVmaze.com API (by BBs19)] - TVmaze.com API UDF (TV-Series).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=116600 Twitter (by seangriffin)] - Manage Twitter.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149247 Yahoo Weather (by Nessie)] - Yahoo Weather API.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=112775 Youtube Uploader (by BrettF)] - AYTU - AutoIt Youtube Uploader.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50880 ACL (by ptrex)] - Set ACL on windows Objects.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=134508 ACL (by FredAl)] - Do most everything with the DACL and ownership on all types of objects: Files or folders, Registry keys, services, Kernel and WMI objects, etc.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=206400 BITS (by DonChunior)] - Background Intelligent Transfer Service to download files from or upload files to HTTP web servers and SMB file shares.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=184937 CertUtil (by mLipok)] - Wrapper for windows certutil.exe (command-line program that is installed in Windows as part of Certificate Services).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=113560 FileSystemMonitor (by seangriffin)] - Monitors the file system by recording all file system events occurring within a given path.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111018 ITaskBarList (by Beege)] - ITaskBarList UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=74118 Local account (by engine)] - Manage local accounts.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161193 Magnifier Functions (by Ascend4nt)] - Exposes most of the useful Magnifier API functions available since Windows Vista.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=75250 Registry (by engine)] - Windows Registry UDFs.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=50551 Registry (by seanhart)] - RegWriteAllUsers / RegDeleteAllUsers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=80201 Service (by arcker)] - Build your own service with AutoIt code.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=124508 Startup (by guinness)] - Create Startup entries in the Startup Folder or Registry.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164756 SCCM (by JLogan3o13)] - Systems Center Configuration Manager Library.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=134628 System restore (by FredAI)] - System restore UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186111 SubstWrapper (by mLipok)] - Wrapper for windows subst.exe command - (Associates a path with a drive letter).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=135994 Taskplanner/Taskscheduler COM (by Allow2010)] - an UDF for using the Windows Taskplaner / Task Scheduler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=83355 Task Scheduler (by dbzfanatic)] - Task Scheduler UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=200068 TaskScheduler (by water)] - Brushed up Task Scheduler UDF. Link to the [[TaskScheduler|documentation pages]].&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173934 TTS (by Kanashius)] - Used with SAPI Automation Object - text-to-speech (TTS) engine.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=158377 UAC (by AdamUL)] - User Account Control (UAC) UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=175719 Utter (by Surya)] - Utilizing more of SAPI (Speech Recognition UDF).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=127075 WIMGAPI (by Homes32)] - Manipulate Windows Image Files (.wim) without ImageX.exe.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=28436 Windows Events (by Emperor)] - Create your own Windows events.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=6487 Windows Service Control functions (by SumTingWong)] - Some limited functions to control services (create, start, stop, delete, check ...).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81880 Windows Services (by engine)] - Windows Services UDF.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163178 WRMF (by Luigi)] - WRMF - Windows Registry Monitor Call Function.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&amp;lt;!-- Removed 2020-05-30 as adequate documentation is missing * [https://www.autoitscript.com/forum/topic/178871-dllcall-with-c-example/#comment-1285754 SMSApi (by mLipok)] - UDF for SMSAPi which provides SMS services. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Removed 2020-05-30 as adequate documentation is missing * [https://www.autoitscript.com/forum/index.php?showtopic=178589 BulkSMS (by Skysnake)] - UDF for BulkSMS which provides SMS services. --&amp;gt;&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=145099 _AdlibEnhance (by JScript)] - Enhance Adlib to call functions with parameters, pause and resume.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=160936 Android (by Moriba)] - Control any Android device.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=97826 Animated tray icons (by Yashied)] - Make animated tray icons easily.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163577 Atom Table (by Ascend4nt)] - Store (add, find, delete, and query) strings locally (at program level) or globally (at OS level) with unique numerical identifiers.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170087 Barcode generators (by willichan)] - Creates a Code128A/B/C or Creates a Code39 or Code39Extended optimized barcode from supplied data.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=87735 BlockInputEx (by MrCreatoR)] - Supports a few features that built-in BlockInput() function does not.&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/211660-udf-blockinput-without-uac/ BlockInputEx (by Nine)] - Block all input coming from mouse and/or keyboard, without having an UAC warning displayed. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=29763 Clipboard (by eltorro)] - When apps need to watch the clipboard.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=170630 ClipboardEx (by ozmike)] - Allows to have more than 1 item in the Clipboard. Handles all data types, not just text.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=81267 Clipboard History (by wraithdu)] - Save and restore the entire clipboard contents. Inspired by AHK&#039;s ClipboardAll.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=169610 CmdLine (by Jefrey)] - Collection of functions to parse command line arguments.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=126569 Console (by Shaggi)] - Functions and features to work wiht Console input/output.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=121833 Copy (by Yashied)] - Copy or move files and directories without suspending your script. Retrieve the current state (copied bytes, error code etc.) while copying.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=154684 Date / Time convert (by Melba23)] - Transform date/time formats.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=99106 _DLLStructDisplay (by Ascend4nt)] - Show Struct in ListView.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157689 _FileGetMimeType (by Wiliat87)] - Retrieve MIME types based on the extension of the filename/filepath/URL provided.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=117033 File locking with cooperative semaphores (by willichan)] - Simple file locking without a server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=157241 FindMimeFromData (by twbradio)] - FindMimeFromData using urlmon.dll.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=181997 Font Icon (by J2TeaM)] - Use Font Awesome in your AutoIt project.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=68422 HotString (by jvanegmond)] - Similar to the HotKey function but trigger on a string, instead of a key or key combination.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=173946 LASM - Light Assembler (by minxomat)] - Inline UDF for an Assembler.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=161628 LFN (by orbs)] - Overcome MAX_PATH limit of 256 chars.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111492 Link Grammar for AutoIt (by JRowe)] -  Input is a regular sentence in English, German or Italian, output is a pattern parsed from the structure of the sentence.&lt;br /&gt;
* [https://www.autoitscript.com/forum/files/file/147-mruau3 MRU (by Yashied)] - Most Recently Used (MRU) List Automation functions.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=186853 _Multiprocess (by jguinch)] - Run several external programs at the same time and retrieve the exit code of each process.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=188158 .NET Common Language Runtime (CLR) Framework (by Danyfirex, Junkew, Larsj, ptrex, Trancexx)] - Allows AutoIt to access .NET Class Libraries.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=101733 NoFocusLines (by Melba23)] - Remove the dotted focus lines from buttons, sliders, radios and checkboxes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=149176 NotifyIcon (by FireFox)] - Create, delete and manage self notify icons (formerly TrayIconEx). &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=63318 PixelGetColor (by Manadar)] - Get or Read Pixel from memory.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=167024 RDC (by Yashied)] - ReadDirectoryChanges Wrapper.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51103 Resources (by Zedna)] - Embed any binary data into your AutoIt compiled EXE files.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162499 ResourcesEx (by guinness)] - Up to date version of Zedna&#039;s Resources UDF. &lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=111215 Restart (by Yashied)] - Allows to restart a script from any location with full restoration of the original command line parameters.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=51547 SciLexer (by Kip)] - Editing control, supports multiple editors.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=152093 ScriptEditor (by pandel)] - ScriptEditor with I18N support and customizable lexer completely written in AutoIt (based on SciLexer).&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=162033 Spell Checker (by iCode)] - Spell Checker functions to call Hunspell, Hyphenate and MyThes.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=164444 Synology filestation (by nend)] - Functions to interact with a Synology NAS server.&lt;br /&gt;
* [https://www.autoitscript.com/forum/index.php?showtopic=163328 TimeConvert (by orbs)] - Convert UTC to/from local time, and/or reformat the string representation.&lt;br /&gt;
[[Category:UDF]]&lt;/div&gt;</summary>
		<author><name>Nine</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Arrays&amp;diff=14882</id>
		<title>Arrays</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Arrays&amp;diff=14882"/>
		<updated>2024-01-13T13:33:05Z</updated>

		<summary type="html">&lt;p&gt;Nine: /* Comparing Arrays */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An &#039;&#039;&#039;array&#039;&#039;&#039; is a [[Data_Structures|data structure]] which stores elements (variables) aligned in a computer&#039;s memory.  Arrays are referenced by an [[identifier]] (variable name) and an index specifying a desired element.  The array concept seems complex but the concept can be easily grasped.  Why are arrays so important?  The array is a fundamental data structure found in most programming languages.  &lt;br /&gt;
&lt;br /&gt;
This tutorial targets people who are beginners.  To understand how arrays work, it is imperative to try out and modify the provided samples.  Make sure that each concept is understood before the next concept is attempted.  This tutorial assumes the use of the SciTE editor.  There is a minimal version of SciTE included in the latest stable release of AutoIt (version 3.2.0.1 and above).&lt;br /&gt;
&lt;br /&gt;
== Declaring Arrays in AutoIt ==&lt;br /&gt;
&lt;br /&gt;
An array is declared in the same manner as a variable in AutoIt.  The difference is that for an array, extra information on how many elements are to be included in the array must be specified.  This information is provided by adding brackets after the identifier and a number indicating how many elements the array will possess. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
Global $arr[4] ; Will make space for 4 elements.&lt;br /&gt;
Local  $arr[1] ; Will make space for 1 element.&lt;br /&gt;
Dim    $arr[3] ; Will make space for 3 elements.  Note: Avoid using Dim.  Use Global or Local instead.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In AutoIt, a variable may be converted to an array by either using the {{Help File|ReDim}} keyword or assigning a function which returns an array to the variable.  &lt;br /&gt;
&lt;br /&gt;
For example, the function {{Help File|StringSplit}} returns an array which will be assigned to $arr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
Local $arr = StringSplit(&amp;quot;This is my string. I want to split it in sentences.&amp;quot;, &#039;.&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now to make really certain we have an array from {{Help File|StringSplit}}, we should check it with the {{Help File|IsArray}} built-in function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
If IsArray($arr) Then &lt;br /&gt;
     ; Do work on the array&lt;br /&gt;
EndIf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Assigning Data to Array Elements ==&lt;br /&gt;
&lt;br /&gt;
When we declare the array we make some room in memory for future data.  We want to assign some data to the items in the array.  Now here is the catch. The array always starts at index zero.  So, the first element in the array will be accessed by zero, the second element in the array is accessed at by one and so on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
 Local $arr[3] ; Make room for three elements&lt;br /&gt;
 ;Assign some data&lt;br /&gt;
 $arr[0] = &amp;quot;Element 1&amp;quot;&lt;br /&gt;
 $arr[1] = &amp;quot;Element 2&amp;quot;&lt;br /&gt;
 $arr[2] = &amp;quot;Element 3&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also assign all the data in one smack like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
Local $arr[3] = [&amp;quot;element 1&amp;quot;, &amp;quot;element 2&amp;quot;, &amp;quot;element 3&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This zero-based indexing is quite common in most computer languages, but it can be a source of headaches to beginners until it becomes second nature to them.  For example, every time you want to loop through a range of elements and the range includes the last element, you have to subtract one from the number of items your array is holding, to get the index of the last item. I.E.,  An array with three elements has a last index of two.&lt;br /&gt;
&lt;br /&gt;
So if you don&#039;t take zero-based indexing into consideration in your code, you may ask for something outside the memory area set aside for the array. When you do, you get an error message (&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Array variable has incorrect number of subscripts or subscript dimension range exceeded&amp;lt;/font&amp;gt;) and your script will cease execution.&lt;br /&gt;
&lt;br /&gt;
== Accessing Data in Arrays ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s walk all elements in the previous sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
Local $arr[3] = [&amp;quot;element 1&amp;quot;, &amp;quot;element 2&amp;quot;, &amp;quot;element 3&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
For $i = 0 to 3 - 1 ; We have an array with three elements but the last index is two.&lt;br /&gt;
    ConsoleWrite($arr[$i] &amp;amp; @LF)&lt;br /&gt;
Next&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Determine Array Size With UBound ===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;3 - 1&amp;quot; construct used in the last sample looked strange.  It is not a good idea to hard-code size like that. So lets improve our sample a little. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
Local $iMax = 3&lt;br /&gt;
&lt;br /&gt;
Local $arr[$iMax] = [&amp;quot;Element 1&amp;quot;, &amp;quot;Element 2&amp;quot;, &amp;quot;Element 3&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
For $i = 0 to $iMax - 1&lt;br /&gt;
    ConsoleWrite($arr[$i] &amp;amp; @LF)&lt;br /&gt;
Next&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that&#039;s a bit cleaner. It&#039;s also a lot easier to increase or decrease the size of the array. &amp;lt;br&amp;gt;&lt;br /&gt;
But say you don&#039;t know the size of the array upfront because it may come in a variable size when created dynamically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
Local $iMax &lt;br /&gt;
&lt;br /&gt;
Local $data = &amp;quot;Element 1|Element 2|Element 3&amp;quot; &lt;br /&gt;
&lt;br /&gt;
; The string in data will be split into an array everywhere | is encountered &lt;br /&gt;
Local $arr = StringSplit($data, &amp;quot;|&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
If IsArray($arr) Then&lt;br /&gt;
     $iMax = UBound($arr); get array size&lt;br /&gt;
&lt;br /&gt;
     ConsoleWrite(&amp;quot;Items in the array: &amp;quot; &amp;amp; $iMax &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
     For $i = 0 to $iMax - 1; subtract 1 from size to prevent an out of bounds error&lt;br /&gt;
         ConsoleWrite($arr[$i] &amp;amp; @LF)&lt;br /&gt;
     Next&lt;br /&gt;
EndIf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you run the above code you will see that $iMax is four and not three as you might have expected. The reason for this is that the developer of the {{Help File|StringSplit}} function thought it was a good idea to use the first item (item zero) to keep a count of valid items in the array. This makes sense in many situations as you now have an array containing data with an index starting at one. So our sample code can now be rewritten like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
Local $iMax&lt;br /&gt;
&lt;br /&gt;
Local $data = &amp;quot;Element 1|Element 2|Element 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; The string in data will be split into an array everywhere | is encountered&lt;br /&gt;
Local $arr = StringSplit($data, &amp;quot;|&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
If IsArray($arr) Then &lt;br /&gt;
    For $i = 1 to $arr[0]&lt;br /&gt;
        ConsoleWrite($arr[$i] &amp;amp; @LF)&lt;br /&gt;
    Next&lt;br /&gt;
EndIf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is another good reason for keeping the count in $arr[0]. When you start to use arrays extensively, you will encounter situations where you have to create an array without knowing how many of the elements you will use. Resizing the array is a relatively expensive operation (in CPU cycles) in most languages.&lt;br /&gt;
&lt;br /&gt;
Now consider our example if our initial array has reserved space for ten items but we end up only using three. In this case iterating the array using {{Help File|UBound}} will force us to check for empty elements. While iterating with $arr[0] needs no other change than maintaining the correct count in $arr[0].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;autoit&#039;&amp;gt;&lt;br /&gt;
Local $iMax=10&lt;br /&gt;
&lt;br /&gt;
;NOTE: We have added the count in the first element&lt;br /&gt;
&lt;br /&gt;
Local $arr[$iMax] = [3, &amp;quot;Element 1&amp;quot;, &amp;quot;Element 2&amp;quot;, &amp;quot;Element 3&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
;NOTE: We use the count in $arr[0] to indicate the last item and we start from index=1&lt;br /&gt;
For $i = 1 to $arr[0]&lt;br /&gt;
    ConsoleWrite($arr[$i] &amp;amp; @LF)&lt;br /&gt;
Next&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing Array Sizes With ReDim ==&lt;br /&gt;
&lt;br /&gt;
As arrays are critical to algorithm implementations, and in AutoIt even more so as there is no other means of grouping data, we have to understand how to let it grow and shrink. This is where the keyword {{Help File|ReDim}} comes into the picture.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s make an example. We want our array to hold data lines but we don&#039;t know how many items we need. We make a guess, in this case five. Now, we use that array to hold data we get from a loop with a random number of iterations. If the array is too small it should automatically be increased. Before we dump the array to output, we should adjust it to the exact size it is supposed to be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local Const $iMax = 5&lt;br /&gt;
&lt;br /&gt;
; NOTE: We have added the count in the first element&lt;br /&gt;
Local $arr[$iMax] = [0] ; Initiate the array and place a counter in the first element.&lt;br /&gt;
&lt;br /&gt;
; Generate a random number between 0 and 20&lt;br /&gt;
Local Const $iRandom = Random(0, 20, 1)&lt;br /&gt;
&lt;br /&gt;
For $i = 1 to $iRandom&lt;br /&gt;
    ; Check that the array is big enough&lt;br /&gt;
    If UBound($arr) = $i Then&lt;br /&gt;
        ; Resize the array when $i is equal to the element count in the array to prevent subscript error&lt;br /&gt;
        ReDim $arr[$arr[0] + $iMax]&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    $arr[$i] = &amp;quot;Item &amp;quot; &amp;amp; $i ; safely add data to new index element&lt;br /&gt;
&lt;br /&gt;
    $arr[0] = $i ; update the index count for future reference&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
; Adjust the array size. This time it is probably downward to the size of&lt;br /&gt;
; $arr[0] + 1 (remember the first item is $arr[0])&lt;br /&gt;
ReDim $arr[$arr[0] + 1] &lt;br /&gt;
&lt;br /&gt;
; Now dump the results&lt;br /&gt;
For $i = 1 to $arr[0]&lt;br /&gt;
    ConsoleWrite(&amp;quot;$arr[&amp;quot; &amp;amp; $i &amp;amp; &amp;quot;]:=&amp;quot; &amp;amp; $arr[$i] &amp;amp;  @LF)&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
; Visually check that the values are sound&lt;br /&gt;
ConsoleWrite(&amp;quot;Ubound($arr):=&amp;quot; &amp;amp; UBound($arr) &amp;amp; &amp;quot;, $arr[0]:=&amp;quot; &amp;amp; $arr[0] &amp;amp; &amp;quot;, $iRandom:=&amp;quot; &amp;amp; $iRandom &amp;amp; @LF)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note how the array now has first been adjusted to a multiple of $iMax and in the last part adjusted down to a size matching the data items.&lt;br /&gt;
&lt;br /&gt;
== Passing Arrays to Functions ==&lt;br /&gt;
&lt;br /&gt;
There is no special syntax required to pass an array as a function argument unlike a low level language such as C.&lt;br /&gt;
The following example demonstrates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;AutoIt&amp;quot;&amp;gt;&lt;br /&gt;
Local Const $myArray[5] = [1, 2, 3, 4, 5]&lt;br /&gt;
&lt;br /&gt;
displayArray($myArray)&lt;br /&gt;
&lt;br /&gt;
Func displayArray(Const $array)&lt;br /&gt;
    Local Const $arrayLength = UBound($array)&lt;br /&gt;
&lt;br /&gt;
    For $i = 0 To $arrayLength - 1&lt;br /&gt;
        MsgBox($MB_OK, &amp;quot;displayArray&amp;quot;, $array[$i])&lt;br /&gt;
    Next&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can not declare the variable to hold the array in the function declaration as an array. So, users could pass on a variable. So you have to check that the variable holds an array before you do array specific operations on it.&lt;br /&gt;
The following code example will cause an error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;AutoIt&amp;quot;&amp;gt;&lt;br /&gt;
Local Const $myArray[5] = [1, 2, 3, 4, 5]&lt;br /&gt;
&lt;br /&gt;
displayArray($myArray)&lt;br /&gt;
&lt;br /&gt;
Func displayArray(Const $array[5])&lt;br /&gt;
    Local Const $arrayLength = UBound($array)&lt;br /&gt;
&lt;br /&gt;
    For $i = 0 To $arrayLength - 1&lt;br /&gt;
        MsgBox($MB_OK, &amp;quot;displayArray&amp;quot;, $array[$i])&lt;br /&gt;
    Next&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the tutorial you have probably noticed that there is a lot of code that is equal in each sample. I&#039;m especially thinking about the code we have used to output the array content. Let&#039;s make life easier and create a debug function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
 Func dbgArray(ByRef $arr, $msg=&amp;quot;&amp;quot;)&lt;br /&gt;
     If $msg &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then &lt;br /&gt;
         ConsoleWrite(&amp;quot;*** &amp;quot; &amp;amp; $msg &amp;amp; &amp;quot; ***&amp;quot; &amp;amp; @LF)&lt;br /&gt;
     EndIf&lt;br /&gt;
&lt;br /&gt;
     For $i = 0 to UBound($arr) - 1&lt;br /&gt;
        ConsoleWrite(&amp;quot;$arr[&amp;quot; &amp;amp; $i &amp;amp; &amp;quot;]:=&amp;quot; &amp;amp; $arr[$i] &amp;amp;  @LF)&lt;br /&gt;
     Next&lt;br /&gt;
&lt;br /&gt;
     ConsoleWrite( &amp;quot;Ubound($arr)=:=&amp;quot; &amp;amp; UBound($arr) &amp;amp; &amp;quot;, $arr[0]:=&amp;quot; &amp;amp; $arr[0] &amp;amp; @LF)   &lt;br /&gt;
 EndFunc &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And let&#039;s make a little function to fill our arrays with something. Note how the ArrayFiller makes sure it works on an array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
 Func ArrayFiller(ByRef $arr)&lt;br /&gt;
     If IsArray($arr) Then &lt;br /&gt;
         ReDim $arr[3] ; Notice we might discard content in this operation&lt;br /&gt;
     Else&lt;br /&gt;
         Local $foo[3]&lt;br /&gt;
         $arr = $foo&lt;br /&gt;
     EndIf &lt;br /&gt;
&lt;br /&gt;
     ;Fill the array&lt;br /&gt;
     $arr[0] = 2&lt;br /&gt;
     $arr[1] = &amp;quot;Fill 1&amp;quot;&lt;br /&gt;
     $arr[2] = &amp;quot;Fill 2&amp;quot;&lt;br /&gt;
 EndFunc &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally some code using the new functions&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
   Local $arr1[1]&lt;br /&gt;
   ArrayFiller($arr1)&lt;br /&gt;
   dbgArray($arr1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code is a test on what happens when we pass a regular variable.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
   Local $arr2&lt;br /&gt;
   ArrayFiller($arr2)&lt;br /&gt;
   dbgArray($arr2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Returning Arrays From Functions ==&lt;br /&gt;
&lt;br /&gt;
As you could observe, in the previous samples, an array will be passed back and forth with the ByRef keyword infront of the variable holding the array in the function declaration.&lt;br /&gt;
&lt;br /&gt;
We could also have used the Return keyword in a function.&lt;br /&gt;
Lets re-work the ArrayFiller function to do this rather than using a variable ByRef.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
 Func ArrayFiller2()&lt;br /&gt;
   Local $arr = [3, &amp;quot;Fill 1&amp;quot;, &amp;quot;Fill 2&amp;quot;]&lt;br /&gt;
   Return $arr&lt;br /&gt;
 EndFunc &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And now we can use the function like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
 Local $foo = ArrayFiller2()&lt;br /&gt;
 dbgArray($foo)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comparing Arrays ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can not compare complete arrays:&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $Array1[3] = [1, 2, 3]&lt;br /&gt;
Local $Array2[3] = [1, 2, 3]&lt;br /&gt;
Local $Array3 = $Array1&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&amp;quot;1) &amp;quot; &amp;amp; ($Array1 = $Array2 ? True : False) &amp;amp; @LF)&lt;br /&gt;
; while they contain the same data, the comparison does not work.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&amp;quot;2) &amp;quot; &amp;amp; ($Array1 = $Array3 ? True : False) &amp;amp; @LF)&lt;br /&gt;
; even though they are referencing the same array, the comparison does not work.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparing arrays will always return false since the array memory addresses are always different for different arrays.  You have to instead, compare all elements one after the other. It might be a good idea to first compare array sizes if that can vary for both the compared arrays!&lt;br /&gt;
&lt;br /&gt;
The next example creates an array from user input and then compares elements from a 1D Array to the first column of a 2D array to return the matches as words.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; sample number string split and convert to words&lt;br /&gt;
; uncomment the ConsoleWrite and _ArrayDisplay lines to see what it does&lt;br /&gt;
;# some includes&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;# some variables&lt;br /&gt;
&lt;br /&gt;
;Create 2D array to display&lt;br /&gt;
Local $aWords[10][2] = [[0, &#039;nil&#039;] _&lt;br /&gt;
		, [1, &#039;one&#039;] _&lt;br /&gt;
		, [2, &#039;two&#039;] _&lt;br /&gt;
		, [3, &#039;three&#039;] _&lt;br /&gt;
		, [4, &#039;four&#039;] _&lt;br /&gt;
		, [5, &#039;five&#039;] _&lt;br /&gt;
		, [6, &#039;six&#039;] _&lt;br /&gt;
		, [7, &#039;seven&#039;] _&lt;br /&gt;
		, [8, &#039;eight&#039;] _&lt;br /&gt;
		, [9, &#039;nine&#039;]] ; :)&lt;br /&gt;
&lt;br /&gt;
;~ _ArrayDisplay($aWords)&lt;br /&gt;
&lt;br /&gt;
; the order of the sample digits is to show that the comparison below is accurate, from left to right&lt;br /&gt;
Local $Originalinput = InputBox(&amp;quot;Type a number&amp;quot;, &amp;quot;A number?&amp;quot;,&amp;quot;97524601&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Local $userinput = $Originalinput ; pass the orginal input to a second var&lt;br /&gt;
; now parse the userinput to that we know what was submitted, then repeat in words&lt;br /&gt;
; first strip all white space&lt;br /&gt;
$userinput = StringStripWS($userinput, 8)&lt;br /&gt;
&lt;br /&gt;
If StringIsDigit($userinput) Then ; continue&lt;br /&gt;
&lt;br /&gt;
	; now get the length of the string&lt;br /&gt;
	Local $islong = StringLen($userinput)&lt;br /&gt;
&lt;br /&gt;
	; make an array with size = length to insert items into&lt;br /&gt;
	Local $aInput[1] ; create blank one dimensional array&lt;br /&gt;
;~ 	_ArrayDisplay($aInput)&lt;br /&gt;
	; eat the string one digit at a time :)&lt;br /&gt;
	Local $oneleft&lt;br /&gt;
	For $i = 1 To $islong Step 1&lt;br /&gt;
		$oneleft = StringLeft($userinput, 1)&lt;br /&gt;
		ConsoleWrite(&amp;quot;$oneleft: &amp;quot; &amp;amp; $oneleft &amp;amp; @CRLF)&lt;br /&gt;
		$userinput = StringTrimLeft($userinput, 1) ; make the $userinput one shorter on each loop&lt;br /&gt;
		_ArrayAdd($aInput, $oneleft, 1)&lt;br /&gt;
	Next&lt;br /&gt;
;~ 	_ArrayDisplay($aInput)&lt;br /&gt;
	; now write out what the user typed in words&lt;br /&gt;
&lt;br /&gt;
;~ 	ConsoleWrite(&amp;quot;How long is the string: &amp;quot; &amp;amp; $islong &amp;amp; @CRLF)&lt;br /&gt;
; compare the user input to our defined array&lt;br /&gt;
	For $k = 0 To $islong Step 1&lt;br /&gt;
		For $j = 0 To (UBound($aWords) - 1) Step 1&lt;br /&gt;
;~ 			ConsoleWrite(&amp;quot;Compare $j &amp;quot; &amp;amp; $aWords[$j][0] &amp;amp; &amp;quot; to $k &amp;quot; &amp;amp; $aInput[$k] &amp;amp; @CRLF)&lt;br /&gt;
			If $aWords[$j][0] == $aInput[$k] Then&lt;br /&gt;
				MsgBox(0, &amp;quot;Number to word&amp;quot;, $Originalinput&amp;amp;@CRLF&amp;amp;&amp;quot;User typed &amp;quot;&amp;amp; $aInput[$k]&amp;amp; @CRLF &amp;amp; $aWords[$j][1] &amp;amp; @CRLF,1)&lt;br /&gt;
			EndIf&lt;br /&gt;
;~ 			ConsoleWrite(&amp;quot;For... Next inner loops: &amp;quot; &amp;amp; $k &amp;amp; @CRLF)&lt;br /&gt;
		Next&lt;br /&gt;
;~ 		ConsoleWrite(&amp;quot;For... Next outer loops: &amp;quot; &amp;amp; $j &amp;amp; @CRLF)&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
EndIf ; if its not digits, skip&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Multi Dimensional Arrays ==&lt;br /&gt;
&lt;br /&gt;
Now what is a good explanation of a multi-dimensional array?&lt;br /&gt;
It could be a table where you access one item in the table at a time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local  $arr[3][3] = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]&lt;br /&gt;
&lt;br /&gt;
For $i = 0 to UBound( $arr, 1) - 1&lt;br /&gt;
    For $j = 0 to UBound($arr, 2) - 1&lt;br /&gt;
        ConsoleWrite(&amp;quot;$arr[&amp;quot; &amp;amp; $i &amp;amp; &amp;quot;][&amp;quot; &amp;amp; $j &amp;amp; &amp;quot;]:=&amp;quot; &amp;amp; $arr[$i][$j] &amp;amp; @LF)&lt;br /&gt;
    Next &lt;br /&gt;
&lt;br /&gt;
    ConsoleWrite(@LF)&lt;br /&gt;
Next &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can add a number of dimensions not to exceed sixty-four as stated in the help file section [http://www.autoitscript.com/autoit3/docs/appendix/LimitsDefaults.htm AutoIt3 limits/Defaults].&lt;br /&gt;
&lt;br /&gt;
Here is a four dimensional example. You tell me how that initializer is for readability.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt; &lt;br /&gt;
; NOTE: The following is supposed to be all on one line&lt;br /&gt;
; but we use the &amp;quot;_&amp;quot; character to split it into multiple lines for readability&lt;br /&gt;
&lt;br /&gt;
Local $arr[3][3][3][3] = _&lt;br /&gt;
		[ _&lt;br /&gt;
		[ _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]], _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]], _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]] _&lt;br /&gt;
		], _&lt;br /&gt;
		[ _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]], _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]], _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]] _&lt;br /&gt;
		], _&lt;br /&gt;
		[ _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]], _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]], _&lt;br /&gt;
		[[1, 2, 3], [2, 3, 4], [3, 4, 5]] _&lt;br /&gt;
		] _&lt;br /&gt;
		]&lt;br /&gt;
&lt;br /&gt;
For $i = 0 To UBound($arr, 1) - 1&lt;br /&gt;
	For $j = 0 To UBound($arr, 2) - 1&lt;br /&gt;
		For $k = 0 To UBound($arr, 3) - 1&lt;br /&gt;
			For $l = 0 To UBound($arr, 4) - 1&lt;br /&gt;
				ConsoleWrite(&amp;quot;$arr[&amp;quot; &amp;amp; $i &amp;amp; &amp;quot;][&amp;quot; &amp;amp; $j &amp;amp; &amp;quot;][&amp;quot; &amp;amp; $k &amp;amp; &amp;quot;][&amp;quot; &amp;amp; $l &amp;amp; &amp;quot;]:=&amp;quot; &amp;amp; $arr[$i][$j][$k][$l] &amp;amp; @LF)&lt;br /&gt;
			Next&lt;br /&gt;
		Next&lt;br /&gt;
	Next&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(@LF)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arrays in Arrays ==&lt;br /&gt;
&lt;br /&gt;
You may save an array in an array element (item). Remember that there may be issues if you pass an array containing arrays into a function and the embedded array is changed inside that function. So, as a general rule, try not to embed arrays within arrays unless you absolutely need to and are prepared to do rigorous testing to make sure your code will always work as expected.&lt;br /&gt;
&lt;br /&gt;
You can access the elements of these embedded arrays directly (note the additional () required):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $aContainerArray[2]&lt;br /&gt;
Local $aInternalArray_0[2] = [&amp;quot;Internal-0-0&amp;quot;,&amp;quot;Internal-0-1&amp;quot;]&lt;br /&gt;
Local $aInternalArray_1[2] = [&amp;quot;Internal-1-0&amp;quot;,&amp;quot;Internal-1-1&amp;quot;]&lt;br /&gt;
$aContainerArray[0] = $aInternalArray_0&lt;br /&gt;
$aContainerArray[1] = $aInternalArray_1&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&amp;quot;1 element of InternalArray_0: &amp;quot; &amp;amp; ($aContainerArray[0])[1] &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&amp;quot;0 element of InternalArray_1: &amp;quot; &amp;amp; ($aContainerArray[1])[0] &amp;amp; @CRLF)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
AutoIt features a large list of [http://www.autoitscript.com/autoit3/docs/libfunctions.htm User Defined Functions (UDF)], among which is a module supplying extra array functions. You can find a reference on those functions in AutoIt&#039;s Help file as the last main chapter named [http://www.autoitscript.com/autoit3/docs/libfunctions.htm User Defined Functions Reference].&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
An associative array is an array where the keys (index numbers) are string instead of integer, as they are in AutoIt. See the [[Associative Arrays]] page for more information.&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Nine</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=WebDriver&amp;diff=14472</id>
		<title>WebDriver</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=WebDriver&amp;diff=14472"/>
		<updated>2021-01-09T15:17:37Z</updated>

		<summary type="html">&lt;p&gt;Nine: /* FAQ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The W3C WebDriver API is a platform and language-neutral interface and wire protocol allowing programs or scripts to control the behavior of a web browser.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== WebDriver API ===&lt;br /&gt;
WebDriver enables developers to create automated tests that simulate user interaction. This is different from JavaScript unit tests because WebDriver has access to functionality and information that JavaScript running in the browser doesn&#039;t, and it can more accurately simulate user events or OS-level events. WebDriver can also manage testing across multiple windows, tabs and webpages in a single test session.&lt;br /&gt;
&lt;br /&gt;
=== WebDriver UDF ===&lt;br /&gt;
The WebDriver UDF allows to interact with any browser that supports the W3C WebDriver specifications. Supporting multiple browsers via the same code base is now possible with just a few configuration settings.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/10/11)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following UDFs need to be installed - &#039;&#039;&#039;independent&#039;&#039;&#039; of the Browser you try to automate:&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/148114-a-non-strict-json-udf-jsmn JSON UDF (AutoIt)] by Ward and Jos&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/84133-winhttp-functions/ WinHTTP UDF (AutoIt)] by trancexx or [https://github.com/dragana-r/autoit-winhttp autoit-winhttp (GitHub)]&lt;br /&gt;
* [https://github.com/Danp2/WebDriver/releases/latest WebDriver UDF (GitHub)] by Danp2&lt;br /&gt;
One of the following Drivers needs to be installed - &#039;&#039;&#039;depending&#039;&#039;&#039; on the Browser type and version you try to automate:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Browser !! Download Link !! Latest Version / Date !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Chrome || [https://sites.google.com/a/chromium.org/chromedriver/downloads Google] || 86.0.4240.22 / &amp;lt;br&amp;gt; 2020.09.03 || Follow this [https://sites.google.com/a/chromium.org/chromedriver/downloads/version-selection link] to select the correct version depending on the Chrome version you run!&lt;br /&gt;
|-&lt;br /&gt;
| Edge || [https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ Microsoft] || 87.0.666.0 / &amp;lt;br&amp;gt; 2020.10.09 || &lt;br /&gt;
|-&lt;br /&gt;
| Firefox || [https://github.com/mozilla/geckodriver/releases GitHub] || 0.27 / &amp;lt;br&amp;gt; 2020.07.29 || Firefox version ≥ 60 is recommended&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; You must still have the Microsoft Visual Studio redistributable runtime installed on your system for the binary to run. This is a known bug in version 0.26 which the authors weren&#039;t able fix for this release.&lt;br /&gt;
|-&lt;br /&gt;
| Opera || [https://github.com/operasoftware/operachromiumdriver/releases/latest GitHub] || 85.0.4183.102 / &amp;lt;br&amp;gt; 2020.09.15 || The versioning of OperaDriver matches the Chromium version on which Opera browser is based on.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/01/28)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
Not all WebDriver functions have been implemented by each browser. To check the status goto the corresponding website below:&lt;br /&gt;
&lt;br /&gt;
* [https://chromium.googlesource.com/chromium/src/+/master/docs/chromedriver_status.md Chrome]&lt;br /&gt;
* [https://docs.microsoft.com/en-us/microsoft-edge/webdriver#w3c-webdriver-specification-supporthttpsw3cgithubiowebdriverwebdriver-spechtml Edge]&lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver/status Firefox]&lt;br /&gt;
* [https://github.com/operasoftware/operachromiumdriver Opera]: &amp;quot;&#039;&#039;OperaChromiumDriver is a WebDriver implementation derived from ChromeDriver and adapted by Opera&#039;&#039;&amp;quot;. That&#039;s why I think it has at least the same limitations as ChromeDriver.&lt;br /&gt;
&lt;br /&gt;
=== Big Picture ===&lt;br /&gt;
How the browser independent and browser dependent parts fit together:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:WebDriver.png|800px|||Big Picture - How everything fits together]]&lt;br /&gt;
&lt;br /&gt;
=== Used Terms ===&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/03/08)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
	 &lt;br /&gt;
You will find the following terms when using WebDriver. We try to shed some light onto this subject here:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Marionette&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Marionette is an automation driver for Mozilla’s Gecko engine. It can remotely control either the UI or the internal JavaScript of a Gecko platform, such as Firefox. It can control both the chrome (i.e. menus and functions) or the content (the webpage loaded inside the browsing context), giving a high level of control and ability to replicate user actions. In addition to performing actions on the browser, Marionette can also read the properties and attributes of the DOM.&amp;lt;br&amp;gt;&lt;br /&gt;
Marionette consists of two parts: a server which takes requests and executes them in Gecko (the Marionette server ships with Firefox), and a client (the Marionette client ships with the GeckoDriver exe). The client sends commands to the server and the server executes the command inside the browser.&amp;lt;br&amp;gt;&lt;br /&gt;
For details please [https://firefox-source-docs.mozilla.org/testing/marionette/Intro.html visit this site].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ShadowRoot&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The ShadowRoot interface of the Shadow DOM API is the root node of a DOM subtree that is rendered separately from a document&#039;s main DOM tree.&amp;lt;br&amp;gt;&lt;br /&gt;
For details please [https://dom.spec.whatwg.org/#interface-shadowroot visit this site].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/09/27)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To automate your browser the following installation steps are needed:&lt;br /&gt;
* Download the files listed in section &amp;quot;[[WebDriver#Requirements|Requirements]]&amp;quot; &lt;br /&gt;
* Move the UDFs to a directory where SciTE and Autoit can find them:&lt;br /&gt;
** Json.au3 and BinaryCall.au3 from the JSON UDF&lt;br /&gt;
** wd_Core.au3 and wd_helper.au3 from the WebDriver UDF&lt;br /&gt;
** WinHttp.au3 and WinHttpConstants.au3 from the WinHttp UDF&lt;br /&gt;
* Move the browser dependent WebDriver to the same directory (with WD_Demo.au3):&lt;br /&gt;
** chromedriver.exe (Chrome)&lt;br /&gt;
** geckodriver.exe (Firefox)&lt;br /&gt;
** msedgedriver.exe (Edge - Chromium) or MicrosoftWebDriver.exe (Edge - EdgeHTML)&lt;br /&gt;
* Run WD_Demo.au3 and select &amp;quot;DemoNavigation&amp;quot; to validate the installation.&amp;lt;br&amp;gt;The result (for Firefox) displayed in the DOS window should be similar to the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1577745813519   geckodriver     DEBUG   Listening on 127.0.0.1:4444&lt;br /&gt;
1577745813744   webdriver::server       DEBUG   -&amp;gt; POST /session {&amp;quot;capabilities&amp;quot;: {&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;browserName&amp;quot;: &amp;quot;firefox&amp;quot;, &amp;quot;acceptInsecureCerts&amp;quot;:true}}}&lt;br /&gt;
1577745813746   geckodriver::capabilities       DEBUG   Trying to read firefox version from ini files&lt;br /&gt;
1577745813747   geckodriver::capabilities       DEBUG   Found version 71.0&lt;br /&gt;
1577745813757   mozrunner::runner       INFO    Running command: &amp;quot;C:\\Program Files\\Mozilla Firefox\\firefox.exe&amp;quot; &amp;quot;-marionette&amp;quot; &amp;quot;-foreground&amp;quot; &amp;quot;-no-remote&amp;quot; &amp;quot;-profile&amp;quot; &amp;quot;C:\\ ...&lt;br /&gt;
1577745813783   geckodriver::marionette DEBUG   Waiting 60s to connect to browser on 127.0.0.1:55184&lt;br /&gt;
1577745817392   geckodriver::marionette DEBUG   Connection to Marionette established on 127.0.0.1:55184.&lt;br /&gt;
1577745817464   webdriver::server       DEBUG   &amp;lt;- 200 OK {&amp;quot;value&amp;quot;:{&amp;quot;sessionId&amp;quot;:&amp;quot;925641bf-6c5d-4fe2-a985-02de9b1c7c74&amp;quot;,&amp;quot;capabilities&amp;quot;:&amp;quot;acceptInsecureCerts&amp;quot;:true,&amp;quot;browserName&amp;quot;:&amp;quot;firefox&amp;quot;, ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function reference ==&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/11/16 - based on version 0.3.1.0)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WD_CORE ===&lt;br /&gt;
The WD_Core.au3 file holds functions to implement the Webdriver W3C document.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Function !! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 450px;&amp;quot; | Description !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Action || Perform various interactions with the web driver session || Use one of the following values for parameter $sCommand:&lt;br /&gt;
 &#039;&#039;actions&#039;&#039;,&lt;br /&gt;
 &#039;&#039;back&#039;&#039;,&lt;br /&gt;
 &#039;&#039;forward&#039;&#039;,&lt;br /&gt;
 &#039;&#039;refresh&#039;&#039;,&lt;br /&gt;
 &#039;&#039;title&#039;&#039;,&lt;br /&gt;
 &#039;&#039;url&#039;&#039;.&lt;br /&gt;
For command &#039;&#039;actions&#039;&#039;: Pass the actions to be set using parameter $sOption. If $sOption is empty then the set actions will be removed.&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Alert || Respond to user prompt || Use one of the following actions to respond to the user prompt:&lt;br /&gt;
 &#039;&#039;accept&#039;&#039;,&lt;br /&gt;
 &#039;&#039;dismiss&#039;&#039;,&lt;br /&gt;
 &#039;&#039;gettext&#039;&#039;,&lt;br /&gt;
 &#039;&#039;sendtext&#039;&#039;,&lt;br /&gt;
 &#039;&#039;status&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Cookies || Gets, sets, or deletes the session&#039;s cookies || Use one of the following commands: &lt;br /&gt;
 &#039;&#039;get&#039;&#039; (Gets a single cookie)&lt;br /&gt;
 &#039;&#039;getall&#039;&#039; (Gets all cookies)&lt;br /&gt;
 &#039;&#039;add&#039;&#039; (Sets a single cookie)&lt;br /&gt;
 &#039;&#039;delete&#039;&#039; (Deletes a single cookie)&lt;br /&gt;
|-&lt;br /&gt;
| _WD_CreateSession|| Request new session from web driver || Define the capabilities of the browser with this function&lt;br /&gt;
|-&lt;br /&gt;
| _WD_DeleteSession || Delete existing session || Closes the session created by _WD_CreateSession&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ElementAction || Perform action on designated element || Use one of the following actions:&lt;br /&gt;
 &#039;&#039;Active&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Attribute&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Clear&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Click&#039;&#039;,&lt;br /&gt;
 &#039;&#039;CSS&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Displayed&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Enabled&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Name&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Property&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Rect&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Screenshot&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Selected&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Text&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Value&#039;&#039;. &lt;br /&gt;
&#039;&#039;Clear&#039;&#039;, &#039;&#039;Click&#039;&#039; and &#039;&#039;Value&#039;&#039; use POST to modify or process the element. All other actions use GET to retrieve data from the element&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ExecuteScript || Execute Javascipt commands || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_FindElement|| Find element(s) by designated strategy || You can specify whether the function should only return the first find or all of them&lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetSource || Get page source || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_Navigate || Navigate to the designated URL || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_Option || Sets and get options for the web driver UDF || The following options can be used:&lt;br /&gt;
 &#039;&#039;BaseURL&#039;&#039; (IP address used for web driver communication),&lt;br /&gt;
 &#039;&#039;BinaryFormat&#039;&#039; (format used to store binary data),&lt;br /&gt;
 &#039;&#039;Console&#039;&#039; (define destination for console output),&lt;br /&gt;
 &#039;&#039;Driver&#039;&#039; (set the full path name to web driver executable),&lt;br /&gt;
 &#039;&#039;DriverParams&#039;&#039; (parameters to pass to web driver executable),&lt;br /&gt;
 &#039;&#039;Port&#039;&#039; (port used for web driver communication).&lt;br /&gt;
If no value is passed to be set the current value is returned&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Shutdown || Kill the web driver console app || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_Startup || Launch the designated web driver console app || The PID for the WebDriver console is returned&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Status || Get current web driver state || Returns a raw JSON response from the web driver&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Timeouts || Set or retrieve the session timeout parameters || Specify the type and value of the timeout like this: &#039;{&amp;quot;type&amp;quot;:value}&#039;. Example: &#039;{&amp;quot;pageLoad&amp;quot;:2000}&#039;&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Window || Perform interactions related to the current window || One of the following actions:&lt;br /&gt;
 &#039;&#039;close&#039;&#039; (close current tab),&lt;br /&gt;
 &#039;&#039;frame&#039;&#039; (switch to frame),&lt;br /&gt;
 &#039;&#039;fullscreen&#039;&#039; (set window to fullscreen),&lt;br /&gt;
 &#039;&#039;handles&#039;&#039; (get all window handles),&lt;br /&gt;
 &#039;&#039;maximize&#039;&#039; (maximize window),&lt;br /&gt;
 &#039;&#039;minimize&#039;&#039; (minimize window), &lt;br /&gt;
 &#039;&#039;parent&#039;&#039; (switch to parent frame),&lt;br /&gt;
 &#039;&#039;rect&#039;&#039; (get or set the window&#039;s size &amp;amp; position),&lt;br /&gt;
 &#039;&#039;screenshot&#039;&#039; (take screenshot of window),&lt;br /&gt;
 &#039;&#039;switch&#039;&#039; (switch to designated tab),&lt;br /&gt;
 &#039;&#039;window&#039;&#039; (get current tab&#039;s window handle).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WD_HELPER ===&lt;br /&gt;
The WD_Helper.au3 file holds functions to help you automate a web site.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Function !! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 450px;&amp;quot; | Description !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Attach || Attach to existing browser tab || Use one of the following search modes:&lt;br /&gt;
 &#039;&#039;HTML&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Title&#039;&#039;,&lt;br /&gt;
 &#039;&#039;URL&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ConsoleVisible || Control visibility of the webdriver console app || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_DownloadFile || Download file and save to disk || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_ElementActionEx || Perform advanced action on desginated element ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ElementOptionSelect || Find and click on an option from a Select element || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_ElementSelectAction || Perform action on designated Select element || Use one of the following commands:&lt;br /&gt;
 &#039;&#039;options&#039;&#039;,&lt;br /&gt;
 &#039;&#039;value&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ExecuteCdpCommand || ChromeDriver specific function to execute &amp;quot;Chrome DevTools Protocol&amp;quot; (CDP) commands ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_FrameEnter || Will enter the specified frame for subsequent WebDriver operations || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_FrameLeave || Will leave the current frame, to its parent, not necessarily the Top, for subsequent WebDriver operations || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetElementById || Locate element by id ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetElementByName || Locate element by name ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetElementFromPoint || Retrieves reference to element descriped by x/y coordinate || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetFrameCount || Returns how many frames/iframes are in your current window/frame || It will not traverse to nested frames&lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetMouseElement || Retrieves reference to element below mouse pointer || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetShadowRoot || Retrieves the shadow root of an element || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetTable || Return all elements of a table ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_HighlightElement || Will highlight the specified element || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_HighlightElements || Will highlight multiple elements passed as an array || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_IsLatestRelease || Compares local UDF version to latest release on Github || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_IsWindowTop || Returns a boolean of the session being at the top level, or in a frame(s) || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_LastHTTPResult || Return the result of the last WinHTTP request || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_LinkClickByText || Simulate a mouse click on a link with text matching the provided string || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_LoadWait || Wait for a browser page load to complete before returning || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_NewTab || Create new tab using Javascript ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Screenshot || Will return a screenshot of the browser window or a specified element || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_SelectFiles || Select files for uploading to a website || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_SetElementValue || Set value of designated element ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_SetTimeouts || User friendly function to set webdriver session timeouts ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_UpdateDriver || Replace web driver with newer version, if available || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_WaitElement || Wait for a element to be found in the current tab before returning || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_jQuerify || Inject jQuery library into current session || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Debug the WebDriver setup ===&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/07/06)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
==== WinHTTP UDF ====&lt;br /&gt;
Make sure that you are running at least version 1.6.4.2 (currently unreleased, but can be obtained [https://raw.githubusercontent.com/dragana-r/autoit-winhttp/master/WinHttp.au3 here]).&lt;br /&gt;
==== Chrome ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-DebugChrome1&amp;quot;&amp;gt;Chrome does not start and the DOS window for chromedriver does not get displayed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-DebugChrome1&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Problem !! Solution !! Reference&lt;br /&gt;
|-&lt;br /&gt;
| When running WD_Demo.au3 it does not start up Chrome and does not display the DOS window for chromedriver.&amp;lt;br&amp;gt;When you manually run the chromedriver in a DOS window you get message &amp;quot;[0.023][SEVERE]: CreatePlatformSocket() returned an error: An invalid argument was supplied.&amp;quot;|| This could be caused by missing execution permission for the network drive. Please ask your IT admin for &amp;quot;Applocker&amp;quot; or &amp;quot;application directory whitelisting&amp;quot;. &amp;lt;br&amp;gt;Or run the chrome driver from a local HDD and call _WD_Option to set the location of the webdriver executable. Example: _WD_Option(&amp;quot;Driver&amp;quot;, &amp;quot;C:\Local\WebDriver\chromedriver.exe&amp;quot;) || [https://stackoverflow.com/questions/51056121/createplatformsocket-returned-an-error-an-invalid-argument-was-supplied-0x2 Stackoverflow]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Firefox ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-DebugFirefox1&amp;quot;&amp;gt;Firefox does not start and the DOS window for geckodriver does not get displayed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-DebugFirefox1&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Problem !! Solution !! Reference&lt;br /&gt;
|-&lt;br /&gt;
| When running WD_Demo.au3 it does not start up Firefox and does not display the DOS window for geckodriver.&amp;lt;br&amp;gt;When you manually run the geckodriver in a DOS window you get message &amp;quot;geckodriver: error: An invalid argument was supplied. (os error 10022)&amp;quot;|| This could be caused by missing execution permission for the network drive. Please ask your IT admin for &amp;quot;Applocker&amp;quot; or &amp;quot;application directory whitelisting&amp;quot;. &amp;lt;br&amp;gt;Or run the gecko driver from a local HDD and call _WD_Option to set the location of the webdriver executable. Example: _WD_Option(&amp;quot;Driver&amp;quot;, &amp;quot;C:\Local\WebDriver\geckodriver.exe&amp;quot;) || [https://stackoverflow.com/questions/51056121/createplatformsocket-returned-an-error-an-invalid-argument-was-supplied-0x2 Stackoverflow]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug your Script ===&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/10/11)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ1&amp;quot;&amp;gt;1. How to connect to a running browser instance&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: How can I connect to a running browser instance?&amp;lt;br&amp;gt;A: That&#039;s described (for Firefox, but should work similar for other browsers) in this [https://www.autoitscript.com/forum/topic/201106-webdriver-udf-help-support-ii/?do=findComment&amp;amp;comment=1444173 post].&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ2&amp;quot;&amp;gt;2. How to hide the webdriver console&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: How can I hide the webdriver console?&amp;lt;br&amp;gt;A: The console can be completely hidden from the start by adding the following line near the beginning of your script:&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$_WD_DEBUG = $_WD_DEBUG_None ; You could also use $_WD_DEBUG_Error&amp;lt;/syntaxhighlight&amp;gt;You can also control the visibility of the console with the function _WD_ConsoleVisible.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ3&amp;quot;&amp;gt;3. How to utilize an existing user profile&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: Can I use an existing user profile instead of the default behavior of using a new one?&amp;lt;br&amp;gt;A: This is controlled by your &amp;quot;capabilities&amp;quot; declaration, with each browser using a different method to implement. Here are some examples:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Chrome&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sDesiredCapabilities = &#039;{&amp;quot;capabilities&amp;quot;: {&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;goog:chromeOptions&amp;quot;: {&amp;quot;w3c&amp;quot;: true, &amp;quot;args&amp;quot;:[&amp;quot;--user-data-dir=C:\\Users\\&#039; &amp;amp; @UserName &amp;amp; &#039;\\AppData\\Local\\Google\\Chrome\\User Data\\&amp;quot;, &amp;quot;--profile-directory=Default&amp;quot;]}}}}&#039;&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;Firefox&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sDesiredCapabilities = &#039;{&amp;quot;capabilities&amp;quot;:{&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;moz:firefoxOptions&amp;quot;: {&amp;quot;args&amp;quot;: [&amp;quot;-profile&amp;quot;, &amp;quot;C:/Users/&#039; &amp;amp; @UserName &amp;amp; &#039;/AppData/Roaming/Mozilla/Firefox/Profiles/gbjaumrnd.default&amp;quot;],&amp;quot;log&amp;quot;: {&amp;quot;level&amp;quot;: &amp;quot;trace&amp;quot;}}}}}&#039;&amp;lt;/syntaxhighlight&amp;gt;You will also likely need to specify the marionette port:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;_WD_Option(&#039;DriverParams&#039;, &#039;--marionette-port 2828&#039;)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ4&amp;quot;&amp;gt;4. How to specify location of browser executable&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: Is it possible to launch a browser installed in a non-standard location?&amp;lt;br&amp;gt;A: This is controlled by your &amp;quot;capabilities&amp;quot; declaration. Here are some examples:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Chrome&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sDesiredCapabilities = &#039;{&amp;quot;capabilities&amp;quot;: {&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;goog:chromeOptions&amp;quot;: {&amp;quot;w3c&amp;quot;: true, &amp;quot;binary&amp;quot;:&amp;quot;C:\\Path\\To\\Alternate\\Browser\\chrome.exe&amp;quot; }}}}&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;Firefox&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sDesiredCapabilities = &#039;{&amp;quot;desiredCapabilities&amp;quot;:{&amp;quot;javascriptEnabled&amp;quot;:true,&amp;quot;nativeEvents&amp;quot;:true,&amp;quot;acceptInsecureCerts&amp;quot;:true,&amp;quot;moz:firefoxOptions&amp;quot;:{&amp;quot;binary&amp;quot;:&amp;quot;C:\\Path\\To\\Alternate\\Browser\\firefox.exe&amp;quot;}}}&#039;&amp;lt;/syntaxhighlight&amp;gt;Alternate Firefox method:&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
_WD_Option(&#039;DriverParams&#039;, &#039;--binary &amp;quot;C:\Program Files\Mozilla Firefox\firefox.exe&amp;quot; --log trace &#039;)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ5&amp;quot;&amp;gt;5. How to maximize the browser window&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: Is it possible to maximize the browser window?&amp;lt;br&amp;gt;A: Simply call the following function:&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;_WD_Window($sSession, &amp;quot;Maximize&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Make sure to call _WD_Window after the session has been created with _WD_CreateSession.&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ6&amp;quot;&amp;gt;6. How to specify location of WebDriver executable&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: Is it possible to launch the WebDriver executable from a specific location?&amp;lt;br&amp;gt;A: This is controlled by function &amp;quot;_WD_Option&amp;quot;. Example:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;_WD_Option(&amp;quot;Driver&amp;quot;, &amp;quot;C:\local\WebDriver\WebDriver.exe&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ7&amp;quot;&amp;gt;7. How to retrieve the values of a drop-down list&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ7&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: How to retrieve the values of a drop-down list (&amp;lt;Select&amp;gt; tag)?&amp;lt;br&amp;gt;A1: Here&#039;s a simple way to do it:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, &amp;quot;//select[@name=&#039;xxx&#039;]&amp;quot;)&lt;br /&gt;
$sText = _WD_ElementAction($sSession, $sElement, &#039;property&#039;, &#039;innerText&#039;)&lt;br /&gt;
$aOptions = StringSplit ( $sText, @LF,  $STR_NOCOUNT)&lt;br /&gt;
_ArrayDisplay($aOptions)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;xxx&#039; is the name of the drop-down list.&lt;br /&gt;
&amp;lt;br&amp;gt;A2: This can now be accomplished using the function _WD_ElementSelectAction:&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, &amp;quot;//select[@name=&#039;xxx&#039;]&amp;quot;)&lt;br /&gt;
$aOptions = _WD_ElementSelectAction ($sSession, $sElement, &#039;options&#039;)&lt;br /&gt;
_ArrayDisplay($aOptions)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ8&amp;quot;&amp;gt;8. How to run the browser in headless mode&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: How do I run the browser in &amp;quot;headless&amp;quot; mode?&amp;lt;br&amp;gt;A: This is controlled by the Capabilities string that is passed to _WD_CreateSession. Example:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sDesiredCapabilities = &#039;{&amp;quot;capabilities&amp;quot;: {&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;chromeOptions&amp;quot;: {&amp;quot;w3c&amp;quot;: true, &amp;quot;args&amp;quot;: [&amp;quot;--headless&amp;quot;, &amp;quot;--allow-running-insecure-content&amp;quot;] }}}}&#039; &amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
The following tools will help you to automate your browser:&lt;br /&gt;
* [https://autonomiq.io/chropath/ ChroPath]﻿ ﻿p﻿l﻿u﻿g﻿i﻿n: Makes finding an element by XPath, ID or CSS incredibly easy (Chrome, Firefox, Opera)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/03/01)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further information sources:&lt;br /&gt;
* W3C: https://www.w3.org/TR/webdriver/&lt;br /&gt;
* AutoIt WebDriver threads:&lt;br /&gt;
** Danp2&#039;s thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/191990-webdriver-udf-w3c-compliant-version-12242019 Example Scripts]&#039;&#039;&#039; forum - WebDriver UDF (W3C compliant version)&lt;br /&gt;
** Danp2&#039;s closed thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/192730-webdriver-udf-help-support/ General Help and Support]&#039;&#039;&#039; forum - WebDriver UDF - Help &amp;amp; Support (this is part I)&lt;br /&gt;
** Danp2&#039;s active thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/201106-webdriver-udf-help-support-ii/ General Help and Support II]&#039;&#039;&#039; forum - WebDriver UDF - Help &amp;amp; Support (II) &lt;br /&gt;
** Water&#039;s thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/201283-im-creating-a-webdriver-tutorial General Help and Support]&#039;&#039;&#039; forum - Discussion about this Wiki Page&lt;br /&gt;
** Water&#039;s thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/201537-webdriver-example-scripts-collection/ Example Scripts]&#039;&#039;&#039; forum - WebDriver example scripts collection&lt;br /&gt;
&lt;br /&gt;
* WebDriver Exe documentation:&lt;br /&gt;
** [https://sites.google.com/a/chromium.org/chromedriver/ Chrome]&lt;br /&gt;
** [https://docs.microsoft.com/en-us/microsoft-edge/webdriver Edge]&lt;br /&gt;
** [https://docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium Edge Chromium]&lt;br /&gt;
** [https://firefox-source-docs.mozilla.org/testing/geckodriver/ Firefox]&lt;br /&gt;
** [https://selenium.dev/documentation/en/webdriver/ Opera]&lt;/div&gt;</summary>
		<author><name>Nine</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=WebDriver&amp;diff=14471</id>
		<title>WebDriver</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=WebDriver&amp;diff=14471"/>
		<updated>2021-01-09T15:10:36Z</updated>

		<summary type="html">&lt;p&gt;Nine: /* FAQ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The W3C WebDriver API is a platform and language-neutral interface and wire protocol allowing programs or scripts to control the behavior of a web browser.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== WebDriver API ===&lt;br /&gt;
WebDriver enables developers to create automated tests that simulate user interaction. This is different from JavaScript unit tests because WebDriver has access to functionality and information that JavaScript running in the browser doesn&#039;t, and it can more accurately simulate user events or OS-level events. WebDriver can also manage testing across multiple windows, tabs and webpages in a single test session.&lt;br /&gt;
&lt;br /&gt;
=== WebDriver UDF ===&lt;br /&gt;
The WebDriver UDF allows to interact with any browser that supports the W3C WebDriver specifications. Supporting multiple browsers via the same code base is now possible with just a few configuration settings.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/10/11)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following UDFs need to be installed - &#039;&#039;&#039;independent&#039;&#039;&#039; of the Browser you try to automate:&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/148114-a-non-strict-json-udf-jsmn JSON UDF (AutoIt)] by Ward and Jos&lt;br /&gt;
* [https://www.autoitscript.com/forum/topic/84133-winhttp-functions/ WinHTTP UDF (AutoIt)] by trancexx or [https://github.com/dragana-r/autoit-winhttp autoit-winhttp (GitHub)]&lt;br /&gt;
* [https://github.com/Danp2/WebDriver/releases/latest WebDriver UDF (GitHub)] by Danp2&lt;br /&gt;
One of the following Drivers needs to be installed - &#039;&#039;&#039;depending&#039;&#039;&#039; on the Browser type and version you try to automate:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Browser !! Download Link !! Latest Version / Date !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Chrome || [https://sites.google.com/a/chromium.org/chromedriver/downloads Google] || 86.0.4240.22 / &amp;lt;br&amp;gt; 2020.09.03 || Follow this [https://sites.google.com/a/chromium.org/chromedriver/downloads/version-selection link] to select the correct version depending on the Chrome version you run!&lt;br /&gt;
|-&lt;br /&gt;
| Edge || [https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ Microsoft] || 87.0.666.0 / &amp;lt;br&amp;gt; 2020.10.09 || &lt;br /&gt;
|-&lt;br /&gt;
| Firefox || [https://github.com/mozilla/geckodriver/releases GitHub] || 0.27 / &amp;lt;br&amp;gt; 2020.07.29 || Firefox version ≥ 60 is recommended&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; You must still have the Microsoft Visual Studio redistributable runtime installed on your system for the binary to run. This is a known bug in version 0.26 which the authors weren&#039;t able fix for this release.&lt;br /&gt;
|-&lt;br /&gt;
| Opera || [https://github.com/operasoftware/operachromiumdriver/releases/latest GitHub] || 85.0.4183.102 / &amp;lt;br&amp;gt; 2020.09.15 || The versioning of OperaDriver matches the Chromium version on which Opera browser is based on.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/01/28)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
Not all WebDriver functions have been implemented by each browser. To check the status goto the corresponding website below:&lt;br /&gt;
&lt;br /&gt;
* [https://chromium.googlesource.com/chromium/src/+/master/docs/chromedriver_status.md Chrome]&lt;br /&gt;
* [https://docs.microsoft.com/en-us/microsoft-edge/webdriver#w3c-webdriver-specification-supporthttpsw3cgithubiowebdriverwebdriver-spechtml Edge]&lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver/status Firefox]&lt;br /&gt;
* [https://github.com/operasoftware/operachromiumdriver Opera]: &amp;quot;&#039;&#039;OperaChromiumDriver is a WebDriver implementation derived from ChromeDriver and adapted by Opera&#039;&#039;&amp;quot;. That&#039;s why I think it has at least the same limitations as ChromeDriver.&lt;br /&gt;
&lt;br /&gt;
=== Big Picture ===&lt;br /&gt;
How the browser independent and browser dependent parts fit together:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:WebDriver.png|800px|||Big Picture - How everything fits together]]&lt;br /&gt;
&lt;br /&gt;
=== Used Terms ===&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/03/08)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
	 &lt;br /&gt;
You will find the following terms when using WebDriver. We try to shed some light onto this subject here:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Marionette&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Marionette is an automation driver for Mozilla’s Gecko engine. It can remotely control either the UI or the internal JavaScript of a Gecko platform, such as Firefox. It can control both the chrome (i.e. menus and functions) or the content (the webpage loaded inside the browsing context), giving a high level of control and ability to replicate user actions. In addition to performing actions on the browser, Marionette can also read the properties and attributes of the DOM.&amp;lt;br&amp;gt;&lt;br /&gt;
Marionette consists of two parts: a server which takes requests and executes them in Gecko (the Marionette server ships with Firefox), and a client (the Marionette client ships with the GeckoDriver exe). The client sends commands to the server and the server executes the command inside the browser.&amp;lt;br&amp;gt;&lt;br /&gt;
For details please [https://firefox-source-docs.mozilla.org/testing/marionette/Intro.html visit this site].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ShadowRoot&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The ShadowRoot interface of the Shadow DOM API is the root node of a DOM subtree that is rendered separately from a document&#039;s main DOM tree.&amp;lt;br&amp;gt;&lt;br /&gt;
For details please [https://dom.spec.whatwg.org/#interface-shadowroot visit this site].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/09/27)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To automate your browser the following installation steps are needed:&lt;br /&gt;
* Download the files listed in section &amp;quot;[[WebDriver#Requirements|Requirements]]&amp;quot; &lt;br /&gt;
* Move the UDFs to a directory where SciTE and Autoit can find them:&lt;br /&gt;
** Json.au3 and BinaryCall.au3 from the JSON UDF&lt;br /&gt;
** wd_Core.au3 and wd_helper.au3 from the WebDriver UDF&lt;br /&gt;
** WinHttp.au3 and WinHttpConstants.au3 from the WinHttp UDF&lt;br /&gt;
* Move the browser dependent WebDriver to the same directory (with WD_Demo.au3):&lt;br /&gt;
** chromedriver.exe (Chrome)&lt;br /&gt;
** geckodriver.exe (Firefox)&lt;br /&gt;
** msedgedriver.exe (Edge - Chromium) or MicrosoftWebDriver.exe (Edge - EdgeHTML)&lt;br /&gt;
* Run WD_Demo.au3 and select &amp;quot;DemoNavigation&amp;quot; to validate the installation.&amp;lt;br&amp;gt;The result (for Firefox) displayed in the DOS window should be similar to the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1577745813519   geckodriver     DEBUG   Listening on 127.0.0.1:4444&lt;br /&gt;
1577745813744   webdriver::server       DEBUG   -&amp;gt; POST /session {&amp;quot;capabilities&amp;quot;: {&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;browserName&amp;quot;: &amp;quot;firefox&amp;quot;, &amp;quot;acceptInsecureCerts&amp;quot;:true}}}&lt;br /&gt;
1577745813746   geckodriver::capabilities       DEBUG   Trying to read firefox version from ini files&lt;br /&gt;
1577745813747   geckodriver::capabilities       DEBUG   Found version 71.0&lt;br /&gt;
1577745813757   mozrunner::runner       INFO    Running command: &amp;quot;C:\\Program Files\\Mozilla Firefox\\firefox.exe&amp;quot; &amp;quot;-marionette&amp;quot; &amp;quot;-foreground&amp;quot; &amp;quot;-no-remote&amp;quot; &amp;quot;-profile&amp;quot; &amp;quot;C:\\ ...&lt;br /&gt;
1577745813783   geckodriver::marionette DEBUG   Waiting 60s to connect to browser on 127.0.0.1:55184&lt;br /&gt;
1577745817392   geckodriver::marionette DEBUG   Connection to Marionette established on 127.0.0.1:55184.&lt;br /&gt;
1577745817464   webdriver::server       DEBUG   &amp;lt;- 200 OK {&amp;quot;value&amp;quot;:{&amp;quot;sessionId&amp;quot;:&amp;quot;925641bf-6c5d-4fe2-a985-02de9b1c7c74&amp;quot;,&amp;quot;capabilities&amp;quot;:&amp;quot;acceptInsecureCerts&amp;quot;:true,&amp;quot;browserName&amp;quot;:&amp;quot;firefox&amp;quot;, ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function reference ==&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/11/16 - based on version 0.3.1.0)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WD_CORE ===&lt;br /&gt;
The WD_Core.au3 file holds functions to implement the Webdriver W3C document.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Function !! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 450px;&amp;quot; | Description !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Action || Perform various interactions with the web driver session || Use one of the following values for parameter $sCommand:&lt;br /&gt;
 &#039;&#039;actions&#039;&#039;,&lt;br /&gt;
 &#039;&#039;back&#039;&#039;,&lt;br /&gt;
 &#039;&#039;forward&#039;&#039;,&lt;br /&gt;
 &#039;&#039;refresh&#039;&#039;,&lt;br /&gt;
 &#039;&#039;title&#039;&#039;,&lt;br /&gt;
 &#039;&#039;url&#039;&#039;.&lt;br /&gt;
For command &#039;&#039;actions&#039;&#039;: Pass the actions to be set using parameter $sOption. If $sOption is empty then the set actions will be removed.&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Alert || Respond to user prompt || Use one of the following actions to respond to the user prompt:&lt;br /&gt;
 &#039;&#039;accept&#039;&#039;,&lt;br /&gt;
 &#039;&#039;dismiss&#039;&#039;,&lt;br /&gt;
 &#039;&#039;gettext&#039;&#039;,&lt;br /&gt;
 &#039;&#039;sendtext&#039;&#039;,&lt;br /&gt;
 &#039;&#039;status&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Cookies || Gets, sets, or deletes the session&#039;s cookies || Use one of the following commands: &lt;br /&gt;
 &#039;&#039;get&#039;&#039; (Gets a single cookie)&lt;br /&gt;
 &#039;&#039;getall&#039;&#039; (Gets all cookies)&lt;br /&gt;
 &#039;&#039;add&#039;&#039; (Sets a single cookie)&lt;br /&gt;
 &#039;&#039;delete&#039;&#039; (Deletes a single cookie)&lt;br /&gt;
|-&lt;br /&gt;
| _WD_CreateSession|| Request new session from web driver || Define the capabilities of the browser with this function&lt;br /&gt;
|-&lt;br /&gt;
| _WD_DeleteSession || Delete existing session || Closes the session created by _WD_CreateSession&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ElementAction || Perform action on designated element || Use one of the following actions:&lt;br /&gt;
 &#039;&#039;Active&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Attribute&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Clear&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Click&#039;&#039;,&lt;br /&gt;
 &#039;&#039;CSS&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Displayed&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Enabled&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Name&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Property&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Rect&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Screenshot&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Selected&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Text&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Value&#039;&#039;. &lt;br /&gt;
&#039;&#039;Clear&#039;&#039;, &#039;&#039;Click&#039;&#039; and &#039;&#039;Value&#039;&#039; use POST to modify or process the element. All other actions use GET to retrieve data from the element&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ExecuteScript || Execute Javascipt commands || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_FindElement|| Find element(s) by designated strategy || You can specify whether the function should only return the first find or all of them&lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetSource || Get page source || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_Navigate || Navigate to the designated URL || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_Option || Sets and get options for the web driver UDF || The following options can be used:&lt;br /&gt;
 &#039;&#039;BaseURL&#039;&#039; (IP address used for web driver communication),&lt;br /&gt;
 &#039;&#039;BinaryFormat&#039;&#039; (format used to store binary data),&lt;br /&gt;
 &#039;&#039;Console&#039;&#039; (define destination for console output),&lt;br /&gt;
 &#039;&#039;Driver&#039;&#039; (set the full path name to web driver executable),&lt;br /&gt;
 &#039;&#039;DriverParams&#039;&#039; (parameters to pass to web driver executable),&lt;br /&gt;
 &#039;&#039;Port&#039;&#039; (port used for web driver communication).&lt;br /&gt;
If no value is passed to be set the current value is returned&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Shutdown || Kill the web driver console app || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_Startup || Launch the designated web driver console app || The PID for the WebDriver console is returned&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Status || Get current web driver state || Returns a raw JSON response from the web driver&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Timeouts || Set or retrieve the session timeout parameters || Specify the type and value of the timeout like this: &#039;{&amp;quot;type&amp;quot;:value}&#039;. Example: &#039;{&amp;quot;pageLoad&amp;quot;:2000}&#039;&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Window || Perform interactions related to the current window || One of the following actions:&lt;br /&gt;
 &#039;&#039;close&#039;&#039; (close current tab),&lt;br /&gt;
 &#039;&#039;frame&#039;&#039; (switch to frame),&lt;br /&gt;
 &#039;&#039;fullscreen&#039;&#039; (set window to fullscreen),&lt;br /&gt;
 &#039;&#039;handles&#039;&#039; (get all window handles),&lt;br /&gt;
 &#039;&#039;maximize&#039;&#039; (maximize window),&lt;br /&gt;
 &#039;&#039;minimize&#039;&#039; (minimize window), &lt;br /&gt;
 &#039;&#039;parent&#039;&#039; (switch to parent frame),&lt;br /&gt;
 &#039;&#039;rect&#039;&#039; (get or set the window&#039;s size &amp;amp; position),&lt;br /&gt;
 &#039;&#039;screenshot&#039;&#039; (take screenshot of window),&lt;br /&gt;
 &#039;&#039;switch&#039;&#039; (switch to designated tab),&lt;br /&gt;
 &#039;&#039;window&#039;&#039; (get current tab&#039;s window handle).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WD_HELPER ===&lt;br /&gt;
The WD_Helper.au3 file holds functions to help you automate a web site.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Function !! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 450px;&amp;quot; | Description !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Attach || Attach to existing browser tab || Use one of the following search modes:&lt;br /&gt;
 &#039;&#039;HTML&#039;&#039;,&lt;br /&gt;
 &#039;&#039;Title&#039;&#039;,&lt;br /&gt;
 &#039;&#039;URL&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ConsoleVisible || Control visibility of the webdriver console app || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_DownloadFile || Download file and save to disk || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_ElementActionEx || Perform advanced action on desginated element ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ElementOptionSelect || Find and click on an option from a Select element || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_ElementSelectAction || Perform action on designated Select element || Use one of the following commands:&lt;br /&gt;
 &#039;&#039;options&#039;&#039;,&lt;br /&gt;
 &#039;&#039;value&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| _WD_ExecuteCdpCommand || ChromeDriver specific function to execute &amp;quot;Chrome DevTools Protocol&amp;quot; (CDP) commands ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_FrameEnter || Will enter the specified frame for subsequent WebDriver operations || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_FrameLeave || Will leave the current frame, to its parent, not necessarily the Top, for subsequent WebDriver operations || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetElementById || Locate element by id ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetElementByName || Locate element by name ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetElementFromPoint || Retrieves reference to element descriped by x/y coordinate || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetFrameCount || Returns how many frames/iframes are in your current window/frame || It will not traverse to nested frames&lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetMouseElement || Retrieves reference to element below mouse pointer || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetShadowRoot || Retrieves the shadow root of an element || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_GetTable || Return all elements of a table ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_HighlightElement || Will highlight the specified element || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_HighlightElements || Will highlight multiple elements passed as an array || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_IsLatestRelease || Compares local UDF version to latest release on Github || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_IsWindowTop || Returns a boolean of the session being at the top level, or in a frame(s) || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_LastHTTPResult || Return the result of the last WinHTTP request || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_LinkClickByText || Simulate a mouse click on a link with text matching the provided string || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_LoadWait || Wait for a browser page load to complete before returning || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_NewTab || Create new tab using Javascript ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_Screenshot || Will return a screenshot of the browser window or a specified element || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_SelectFiles || Select files for uploading to a website || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_SetElementValue || Set value of designated element ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_SetTimeouts || User friendly function to set webdriver session timeouts ||&lt;br /&gt;
|-&lt;br /&gt;
| _WD_UpdateDriver || Replace web driver with newer version, if available || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_WaitElement || Wait for a element to be found in the current tab before returning || &lt;br /&gt;
|-&lt;br /&gt;
| _WD_jQuerify || Inject jQuery library into current session || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Debug the WebDriver setup ===&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/07/06)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
==== WinHTTP UDF ====&lt;br /&gt;
Make sure that you are running at least version 1.6.4.2 (currently unreleased, but can be obtained [https://raw.githubusercontent.com/dragana-r/autoit-winhttp/master/WinHttp.au3 here]).&lt;br /&gt;
==== Chrome ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-DebugChrome1&amp;quot;&amp;gt;Chrome does not start and the DOS window for chromedriver does not get displayed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-DebugChrome1&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Problem !! Solution !! Reference&lt;br /&gt;
|-&lt;br /&gt;
| When running WD_Demo.au3 it does not start up Chrome and does not display the DOS window for chromedriver.&amp;lt;br&amp;gt;When you manually run the chromedriver in a DOS window you get message &amp;quot;[0.023][SEVERE]: CreatePlatformSocket() returned an error: An invalid argument was supplied.&amp;quot;|| This could be caused by missing execution permission for the network drive. Please ask your IT admin for &amp;quot;Applocker&amp;quot; or &amp;quot;application directory whitelisting&amp;quot;. &amp;lt;br&amp;gt;Or run the chrome driver from a local HDD and call _WD_Option to set the location of the webdriver executable. Example: _WD_Option(&amp;quot;Driver&amp;quot;, &amp;quot;C:\Local\WebDriver\chromedriver.exe&amp;quot;) || [https://stackoverflow.com/questions/51056121/createplatformsocket-returned-an-error-an-invalid-argument-was-supplied-0x2 Stackoverflow]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Firefox ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-DebugFirefox1&amp;quot;&amp;gt;Firefox does not start and the DOS window for geckodriver does not get displayed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-DebugFirefox1&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Problem !! Solution !! Reference&lt;br /&gt;
|-&lt;br /&gt;
| When running WD_Demo.au3 it does not start up Firefox and does not display the DOS window for geckodriver.&amp;lt;br&amp;gt;When you manually run the geckodriver in a DOS window you get message &amp;quot;geckodriver: error: An invalid argument was supplied. (os error 10022)&amp;quot;|| This could be caused by missing execution permission for the network drive. Please ask your IT admin for &amp;quot;Applocker&amp;quot; or &amp;quot;application directory whitelisting&amp;quot;. &amp;lt;br&amp;gt;Or run the gecko driver from a local HDD and call _WD_Option to set the location of the webdriver executable. Example: _WD_Option(&amp;quot;Driver&amp;quot;, &amp;quot;C:\Local\WebDriver\geckodriver.exe&amp;quot;) || [https://stackoverflow.com/questions/51056121/createplatformsocket-returned-an-error-an-invalid-argument-was-supplied-0x2 Stackoverflow]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug your Script ===&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/10/11)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ1&amp;quot;&amp;gt;1. How to connect to a running browser instance&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: How can I connect to a running browser instance?&amp;lt;br&amp;gt;A: That&#039;s described (for Firefox, but should work similar for other browsers) in this [https://www.autoitscript.com/forum/topic/201106-webdriver-udf-help-support-ii/?do=findComment&amp;amp;comment=1444173 post].&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ2&amp;quot;&amp;gt;2. How to hide the webdriver console&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: How can I hide the webdriver console?&amp;lt;br&amp;gt;A: The console can be completely hidden from the start by adding the following line near the beginning of your script:&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$_WD_DEBUG = $_WD_DEBUG_None ; You could also use $_WD_DEBUG_Error&amp;lt;/syntaxhighlight&amp;gt;You can also control the visibility of the console with the function _WD_ConsoleVisible.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ3&amp;quot;&amp;gt;3. How to utilize an existing user profile&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: Can I use an existing user profile instead of the default behavior of using a new one?&amp;lt;br&amp;gt;A: This is controlled by your &amp;quot;capabilities&amp;quot; declaration, with each browser using a different method to implement. Here are some examples:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Chrome&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sDesiredCapabilities = &#039;{&amp;quot;capabilities&amp;quot;: {&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;goog:chromeOptions&amp;quot;: {&amp;quot;w3c&amp;quot;: true, &amp;quot;args&amp;quot;:[&amp;quot;--user-data-dir=C:\\Users\\&#039; &amp;amp; @UserName &amp;amp; &#039;\\AppData\\Local\\Google\\Chrome\\User Data\\&amp;quot;, &amp;quot;--profile-directory=Default&amp;quot;]}}}}&#039;&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;Firefox&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sDesiredCapabilities = &#039;{&amp;quot;capabilities&amp;quot;:{&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;moz:firefoxOptions&amp;quot;: {&amp;quot;args&amp;quot;: [&amp;quot;-profile&amp;quot;, &amp;quot;C:/Users/&amp;quot; &amp;amp; @UserName &amp;amp; &amp;quot;/AppData/Roaming/Mozilla/Firefox/Profiles/gbjaumrnd.default&amp;quot;],&amp;quot;log&amp;quot;: {&amp;quot;level&amp;quot;: &amp;quot;trace&amp;quot;}}}}}&#039;&amp;lt;/syntaxhighlight&amp;gt;You will also likely need to specify the marionette port:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;_WD_Option(&#039;DriverParams&#039;, &#039;--marionette-port 2828&#039;)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ4&amp;quot;&amp;gt;4. How to specify location of browser executable&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: Is it possible to launch a browser installed in a non-standard location?&amp;lt;br&amp;gt;A: This is controlled by your &amp;quot;capabilities&amp;quot; declaration. Here are some examples:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Chrome&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sDesiredCapabilities = &#039;{&amp;quot;capabilities&amp;quot;: {&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;goog:chromeOptions&amp;quot;: {&amp;quot;w3c&amp;quot;: true, &amp;quot;binary&amp;quot;:&amp;quot;C:\\Path\\To\\Alternate\\Browser\\chrome.exe&amp;quot; }}}}&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;Firefox&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sDesiredCapabilities = &#039;{&amp;quot;desiredCapabilities&amp;quot;:{&amp;quot;javascriptEnabled&amp;quot;:true,&amp;quot;nativeEvents&amp;quot;:true,&amp;quot;acceptInsecureCerts&amp;quot;:true,&amp;quot;moz:firefoxOptions&amp;quot;:{&amp;quot;binary&amp;quot;:&amp;quot;C:\\Path\\To\\Alternate\\Browser\\firefox.exe&amp;quot;}}}&#039;&amp;lt;/syntaxhighlight&amp;gt;Alternate Firefox method:&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
_WD_Option(&#039;DriverParams&#039;, &#039;--binary &amp;quot;C:\Program Files\Mozilla Firefox\firefox.exe&amp;quot; --log trace &#039;)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ5&amp;quot;&amp;gt;5. How to maximize the browser window&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: Is it possible to maximize the browser window?&amp;lt;br&amp;gt;A: Simply call the following function:&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;_WD_Window($sSession, &amp;quot;Maximize&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Make sure to call _WD_Window after the session has been created with _WD_CreateSession.&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ6&amp;quot;&amp;gt;6. How to specify location of WebDriver executable&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: Is it possible to launch the WebDriver executable from a specific location?&amp;lt;br&amp;gt;A: This is controlled by function &amp;quot;_WD_Option&amp;quot;. Example:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;_WD_Option(&amp;quot;Driver&amp;quot;, &amp;quot;C:\local\WebDriver\WebDriver.exe&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ7&amp;quot;&amp;gt;7. How to retrieve the values of a drop-down list&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ7&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: How to retrieve the values of a drop-down list (&amp;lt;Select&amp;gt; tag)?&amp;lt;br&amp;gt;A1: Here&#039;s a simple way to do it:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, &amp;quot;//select[@name=&#039;xxx&#039;]&amp;quot;)&lt;br /&gt;
$sText = _WD_ElementAction($sSession, $sElement, &#039;property&#039;, &#039;innerText&#039;)&lt;br /&gt;
$aOptions = StringSplit ( $sText, @LF,  $STR_NOCOUNT)&lt;br /&gt;
_ArrayDisplay($aOptions)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;xxx&#039; is the name of the drop-down list.&lt;br /&gt;
&amp;lt;br&amp;gt;A2: This can now be accomplished using the function _WD_ElementSelectAction:&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, &amp;quot;//select[@name=&#039;xxx&#039;]&amp;quot;)&lt;br /&gt;
$aOptions = _WD_ElementSelectAction ($sSession, $sElement, &#039;options&#039;)&lt;br /&gt;
_ArrayDisplay($aOptions)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;usermessage mw-customtoggle-FAQ8&amp;quot;&amp;gt;8. How to run the browser in headless mode&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-FAQ8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible-content&amp;quot;&amp;gt;Q: How do I run the browser in &amp;quot;headless&amp;quot; mode?&amp;lt;br&amp;gt;A: This is controlled by the Capabilities string that is passed to _WD_CreateSession. Example:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;$sDesiredCapabilities = &#039;{&amp;quot;capabilities&amp;quot;: {&amp;quot;alwaysMatch&amp;quot;: {&amp;quot;chromeOptions&amp;quot;: {&amp;quot;w3c&amp;quot;: true, &amp;quot;args&amp;quot;: [&amp;quot;--headless&amp;quot;, &amp;quot;--allow-running-insecure-content&amp;quot;] }}}}&#039; &amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
The following tools will help you to automate your browser:&lt;br /&gt;
* [https://autonomiq.io/chropath/ ChroPath]﻿ ﻿p﻿l﻿u﻿g﻿i﻿n: Makes finding an element by XPath, ID or CSS incredibly easy (Chrome, Firefox, Opera)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;small&amp;gt;(Last modified: 2020/03/01)&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further information sources:&lt;br /&gt;
* W3C: https://www.w3.org/TR/webdriver/&lt;br /&gt;
* AutoIt WebDriver threads:&lt;br /&gt;
** Danp2&#039;s thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/191990-webdriver-udf-w3c-compliant-version-12242019 Example Scripts]&#039;&#039;&#039; forum - WebDriver UDF (W3C compliant version)&lt;br /&gt;
** Danp2&#039;s closed thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/192730-webdriver-udf-help-support/ General Help and Support]&#039;&#039;&#039; forum - WebDriver UDF - Help &amp;amp; Support (this is part I)&lt;br /&gt;
** Danp2&#039;s active thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/201106-webdriver-udf-help-support-ii/ General Help and Support II]&#039;&#039;&#039; forum - WebDriver UDF - Help &amp;amp; Support (II) &lt;br /&gt;
** Water&#039;s thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/201283-im-creating-a-webdriver-tutorial General Help and Support]&#039;&#039;&#039; forum - Discussion about this Wiki Page&lt;br /&gt;
** Water&#039;s thread in the &#039;&#039;&#039;[https://www.autoitscript.com/forum/topic/201537-webdriver-example-scripts-collection/ Example Scripts]&#039;&#039;&#039; forum - WebDriver example scripts collection&lt;br /&gt;
&lt;br /&gt;
* WebDriver Exe documentation:&lt;br /&gt;
** [https://sites.google.com/a/chromium.org/chromedriver/ Chrome]&lt;br /&gt;
** [https://docs.microsoft.com/en-us/microsoft-edge/webdriver Edge]&lt;br /&gt;
** [https://docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium Edge Chromium]&lt;br /&gt;
** [https://firefox-source-docs.mozilla.org/testing/geckodriver/ Firefox]&lt;br /&gt;
** [https://selenium.dev/documentation/en/webdriver/ Opera]&lt;/div&gt;</summary>
		<author><name>Nine</name></author>
	</entry>
</feed>