<?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=IEvKI3gv9Wrkd41u</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=IEvKI3gv9Wrkd41u"/>
	<link rel="alternate" type="text/html" href="https://www.autoitscript.com/wiki/Special:Contributions/IEvKI3gv9Wrkd41u"/>
	<updated>2026-05-08T13:06:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User:MvGulik&amp;diff=11979</id>
		<title>User:MvGulik</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User:MvGulik&amp;diff=11979"/>
		<updated>2013-11-10T01:14:53Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;sup style=&amp;quot;color:#448&amp;quot;&amp;gt;&#039;&#039;&#039;Hijacked by Wiki user: &#039;&#039;IEvKI3gv9Wrkd41u&#039;&#039; &amp;lt;=&amp;gt; Forum: &#039;&#039;MvGulik&#039;&#039;&#039;&#039;&#039;.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
= Heading 1 text =&lt;br /&gt;
== Heading 2 text ==&lt;br /&gt;
=== Heading 3 text ===&lt;br /&gt;
==== Heading 4 text ====&lt;br /&gt;
===== Heading 5 text =====&lt;br /&gt;
====== Heading 6 text ======&lt;br /&gt;
======= Heading 7 text ======= [x]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Category:Contents]]&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Tutorials]] [[Category:Samples]] [[Category:SciTE]] [[Category:UDF]]&lt;br /&gt;
[[Category:AutoIt Wiki]]&lt;br /&gt;
[[Category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Temp_Unsure]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
AutoIt forum slowly assimilated into Big Grothers framework. lol.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;... First you follow by choice. Later, because the lack of one. ...&#039;&#039;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki:Community_portal&amp;diff=11978</id>
		<title>AutoIt Wiki:Community portal</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki:Community_portal&amp;diff=11978"/>
		<updated>2013-11-10T01:00:31Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Current Category Tree. */ updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;General AutoIt Wiki Info page.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;(Use [[AutoIt_Wiki_talk:Community_portal|Community portal discussion]] page for general AutoIt Wiki talk)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== General Wiki Stuff ==&lt;br /&gt;
&lt;br /&gt;
For general wiki information see [http://www.mediawiki.org/wiki/Help:Contents MediaWiki Help].&lt;br /&gt;
&lt;br /&gt;
When writing personal text (generally on Talk pages), don&#039;t forget to add a [http://www.mediawiki.org/wiki/Help:Signatures signature] to your comment.&lt;br /&gt;
&lt;br /&gt;
When not needed, don&#039;t load the whole page for an edit, but use the section edit feature when available. (add&#039;s the section header to your edit reason. Making it easier for others to see whats going on.)&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== General AutoIt Wiki Stuff ==&lt;br /&gt;
&lt;br /&gt;
When posting AutoIt code see [[Posting_Code]] for how to apply syntax highlighting to it.&lt;br /&gt;
&lt;br /&gt;
General page Tagging. ...&lt;br /&gt;
* Stub: ... &amp;lt;nowiki&amp;gt;{{Stub}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Work in progress: ... &amp;lt;nowiki&amp;gt;{{WIP}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Delete (nomination): ... &amp;lt;nowiki&amp;gt;{{Delete}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Category Tree. ==&lt;br /&gt;
&#039;&#039;[[Special:Categories]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[:Category:Contents|Contents]]&lt;br /&gt;
**[[:Category:AutoIt Wiki|AutoIt Wiki]]&lt;br /&gt;
**[[:Category:Samples|Samples]]&lt;br /&gt;
**[[:Category:SciTE|SciTE]]&lt;br /&gt;
**[[:Category:Script|Script]]&lt;br /&gt;
**[[:Category:Snippets|Snippets]]&lt;br /&gt;
**[[:Category:Tutorials|Tutorials]]&lt;br /&gt;
**[[:Category:UDF|UDF]]&lt;br /&gt;
**[[:Category:Wiki Management|Wiki Management]]&lt;br /&gt;
***[[:Category:Candidates for deletion|Candidates for deletion]]&lt;br /&gt;
***[[:Category:Stub|Stub]]&lt;br /&gt;
***[[:Category:Templates|Templates]]&lt;br /&gt;
***[[:Category:Work in progress|Work in progress]]&lt;br /&gt;
&lt;br /&gt;
*[[:Category:GUI|GUI]]&lt;br /&gt;
&lt;br /&gt;
*[[:Category:OutlookEX UDF|OutlookEX UDF]] &#039;&#039;(wip)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[:Category:Computer Science series‏‎|Computer Science series‏‎]] &#039;&#039;(wip)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#88F&amp;quot;&amp;gt;&amp;lt;sub&amp;gt;Nov 2013&amp;lt;/sub&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=CommAPI&amp;diff=11977</id>
		<title>CommAPI</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommAPI&amp;diff=11977"/>
		<updated>2013-11-10T00:35:26Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Skripts */ spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CommAPI translates the communications functions of Windows API to AutoIt functions.&lt;br /&gt;
&lt;br /&gt;
== Scripts ==&lt;br /&gt;
* [[CommAPIStructures.au3]]&lt;br /&gt;
* [[CommAPI.au3]]&lt;br /&gt;
* [[CommAPIHelper.au3]]&lt;br /&gt;
* [[CommUtilities.au3]]&lt;br /&gt;
* [[CommInterface.au3]]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* No need to install DLL&#039;s&lt;br /&gt;
* Using Windows API calls (kernel32.dll)&lt;br /&gt;
* Possibility of serial communication (serial port, COM port, RS-232)&lt;br /&gt;
* Possibility of parallel communication (parallel port, LPT port)&lt;br /&gt;
* No use of global variables&lt;br /&gt;
* Uniform namespace _CommAPI_XXX&lt;br /&gt;
* Modular organization into files&lt;br /&gt;
* A lot of additional utility and helper functions&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
* 2008-09-12 Creation of cfx.au3 [http://www.autoitscript.com/forum/topic/80344-serial-communication-using-kernel32dll/#entry578111 (V1.0)]&lt;br /&gt;
* 2011-02-18 Conversation of cfx.au3 into cfxUDF.au3 [http://www.autoitscript.com/forum/topic/80344-serial-communication-using-kernel32dll/page-2#entry872154 (V2.0)]&lt;br /&gt;
* 2011-02-28 Update V2.0to [http://www.autoitscript.com/forum/topic/80344-serial-communication-using-kernel32dll/page-2#entry874547 V2.1]&lt;br /&gt;
* 2011-04-27 Update V2.1 to [http://www.autoit.de/index.php?page=Thread&amp;amp;postID=217993#post217993 V2.2] (german forum)&lt;br /&gt;
* 2013-07-10 Modify V2.1 to [http://www.autoitscript.com/forum/topic/80344-serial-communication-using-kernel32dll/page-2#entry1094288 V2.1mod]&lt;br /&gt;
* 2013-10-24 Creation of CommAPI.au3&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/aa363194(v=vs.85).aspx MSDN Library of communications functions]&lt;br /&gt;
* [http://www.hpcc.ecs.soton.ac.uk/software/Win32API.Txt WIN32API.TXT]&lt;br /&gt;
* cfxUDF.au3 (see section above)&lt;br /&gt;
* [http://www.autoit.de/index.php?page=Thread&amp;amp;postID=198669#post198669 GetCOMPorts] (german forum)&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/19713-problem-with-struct/#entry136466 ParseCommState]&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== Implemented API functions ===&lt;br /&gt;
* BuildCommDCB&lt;br /&gt;
* BuildCommDCBAndTimeouts&lt;br /&gt;
* ClearCommBreak&lt;br /&gt;
* ClearCommError&lt;br /&gt;
* EscapeCommFunction&lt;br /&gt;
* GetCommMask&lt;br /&gt;
* GetCommModemStatus&lt;br /&gt;
* GetCommProperties&lt;br /&gt;
* GetCommState&lt;br /&gt;
* GetCommTimeouts&lt;br /&gt;
* PurgeComm&lt;br /&gt;
* SetCommBreak&lt;br /&gt;
* SetCommMask&lt;br /&gt;
* SetCommState&lt;br /&gt;
* SetCommTimeouts&lt;br /&gt;
* SetupComm&lt;br /&gt;
* TransmitCommChar&lt;br /&gt;
* WaitCommEvent&lt;br /&gt;
&lt;br /&gt;
=== Unimplemented API functions ===&lt;br /&gt;
* CommConfigDialog&lt;br /&gt;
* GetCommConfig&lt;br /&gt;
* GetDefaultCommConfig&lt;br /&gt;
* SetCommConfig&lt;br /&gt;
* SetDefaultCommConfig&lt;br /&gt;
&lt;br /&gt;
=== API helper functions ===&lt;br /&gt;
* ChangeCommStateElement&lt;br /&gt;
* ChangeCommTimeoutsElement&lt;br /&gt;
* GetCommStateElement&lt;br /&gt;
* GetCommTimeoutsElement&lt;br /&gt;
* IsOnCTS&lt;br /&gt;
* IsOnDCD&lt;br /&gt;
* IsOnDSR&lt;br /&gt;
* IsOnRI&lt;br /&gt;
* SetCommStateElement&lt;br /&gt;
* SetCommTimeoutsElement&lt;br /&gt;
* SetOnDTR&lt;br /&gt;
* SetOnRTS&lt;br /&gt;
&lt;br /&gt;
=== Utility functions ===&lt;br /&gt;
* CommStateToString&lt;br /&gt;
* CommTimeoutsToString&lt;br /&gt;
* CreateModeString&lt;br /&gt;
* GetCOMPorts&lt;br /&gt;
&lt;br /&gt;
=== Interface functions ===&lt;br /&gt;
* ClosePort&lt;br /&gt;
* OpenCOMPort&lt;br /&gt;
* OpenPort&lt;br /&gt;
* ReceiveData&lt;br /&gt;
* TransmitData&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Category:Script&amp;diff=11976</id>
		<title>Category:Script</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Category:Script&amp;diff=11976"/>
		<updated>2013-11-10T00:33:41Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: pagename -&amp;gt; target filename&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Intended for project support scripts.&#039;&#039;&lt;br /&gt;
* &#039;&#039;Page name using target filename. (including extension)&#039;&#039;&lt;br /&gt;
* &#039;&#039;Page containing only script source.&#039;&#039;&lt;br /&gt;
* &#039;&#039;Script containing documented function headers.&#039;&#039;&lt;br /&gt;
&amp;lt;!-- Adjust if/when needed --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(This category and [[:Category:Samples]] are very similar. Adjust/Discuss if needed.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Contents]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Category:Script&amp;diff=11975</id>
		<title>Category:Script</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Category:Script&amp;diff=11975"/>
		<updated>2013-11-10T00:30:54Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: link fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Intended for project support scripts.&#039;&#039;&lt;br /&gt;
* &#039;&#039;Page name ending with &amp;quot;.au3&amp;quot;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Page containing only script source.&#039;&#039;&lt;br /&gt;
* &#039;&#039;Script containing documented function headers.&#039;&#039;&lt;br /&gt;
&amp;lt;!-- Adjust if/when needed --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(This category and [[:Category:Samples]] are very similar. Adjust/Discuss if needed.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Contents]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=CommUtilities.au3&amp;diff=11974</id>
		<title>CommUtilities.au3</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommUtilities.au3&amp;diff=11974"/>
		<updated>2013-11-10T00:30:14Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: add to Category:Script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Script]]&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; #INDEX# =======================================================================================================================&lt;br /&gt;
; Name ..........: CommUtilities.au3&lt;br /&gt;
; Title .........: Communications Functions of Windows API&lt;br /&gt;
; Description ...: Communications Functions of Windows API calls that have been translated to AutoIt functions.&lt;br /&gt;
; Version Date ..: 2013-10-24&lt;br /&gt;
; AutoIt Version : 3.3.8.1&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363194(v=vs.85).aspx&lt;br /&gt;
; Tag(s) ........: RS-232, serial port, COM port&lt;br /&gt;
; Author(s) .....:&lt;br /&gt;
; Dll(s) ........: kernel32.dll&lt;br /&gt;
; Error handling : Everytime @extended is set, it is filled with @ScriptLineNumber of the error in CommAPI.au3.&lt;br /&gt;
;                  Everytime @extended is set, you can call _WinAPI_GetLastError or _WinAPI_GetLastErrorMessage.&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
#include-once&lt;br /&gt;
#NoAutoIt3Execute&lt;br /&gt;
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_CommStateToString&lt;br /&gt;
; Description ...: Create a string representation of a DCB structure.&lt;br /&gt;
; Syntax ........: _CommAPI_CommStateToString(Const $tDCB)&lt;br /&gt;
; Parameters ....: $tDCB                - [in] A DCB structure.&lt;br /&gt;
; Return values .: Success - A string representation of a DCB structure.&lt;br /&gt;
;                  Failure - Empty string&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: $tagDCB&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_CommStateToString(Const $tDCB)&lt;br /&gt;
	Local $sResult = &amp;quot;&amp;quot;&lt;br /&gt;
	Local $vValue = 0&lt;br /&gt;
	For $i = 1 To 15&lt;br /&gt;
		$vValue = DllStructGetData($tDCB, $i)&lt;br /&gt;
		If @error Then Return &amp;quot;&amp;quot;&lt;br /&gt;
		Switch $i&lt;br /&gt;
			Case 1&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;DCBlength = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
			Case 2&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;Baudrate = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
			Case 3&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;fBitFields = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fBinary = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 0)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fParity = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 1)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fOutxCTSFlow = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 2)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fOutxDSRFlow = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 3)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fDTRControl = &amp;quot; &amp;amp; BitAND(0x3, BitShift($vValue, 4)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fDsrSensitivity = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 6)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fTXContinueOnXoff = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 7)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fOutX = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 8)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fInX = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 9)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fErrorChar = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 10)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fNull = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 11)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fRTSControl = &amp;quot; &amp;amp; BitAND(0x3, BitShift($vValue, 12)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;fAbortOnError = &amp;quot; &amp;amp; BitAND(0x1, BitShift($vValue, 14)) &amp;amp; @CRLF&lt;br /&gt;
				$sResult &amp;amp;= @TAB &amp;amp; &amp;quot;Dymmy2 = &amp;quot; &amp;amp; BitAND(0x1FFFF, BitShift($vValue, 15)) &amp;amp; @CRLF&lt;br /&gt;
			Case 4&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;wReserved = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
			Case 5&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;XonLim = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
			Case 6&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;XoffLim = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
			Case 7&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;ByteSize = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
			Case 8&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;Parity = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
			Case 1&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;Stopbits = &amp;quot; &amp;amp; $vValue &amp;amp; @CRLF&lt;br /&gt;
			Case 10&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;XonChar = &amp;quot; &amp;amp; Binary($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 11&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;XoffChar = &amp;quot; &amp;amp; Binary($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 12&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;ErrorChar = &amp;quot; &amp;amp; Binary($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 13&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;EofChar = &amp;quot; &amp;amp; Binary($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 14&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;EvtChar = &amp;quot; &amp;amp; Binary($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 15&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;wReserved = &amp;quot; &amp;amp; $vValue&lt;br /&gt;
		EndSwitch&lt;br /&gt;
	Next&lt;br /&gt;
	Return $sResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_CommStateToString&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_CommTimeoutsToString&lt;br /&gt;
; Description ...: Create s string representation of a COMMTIMEOUTS structure.&lt;br /&gt;
; Syntax ........: _CommAPI_CommTimeoutsToString(Const $tCommTimeouts)&lt;br /&gt;
; Parameters ....: $tCommTimeouts       - [in] A COMMTIMEOUTS structure.&lt;br /&gt;
; Return values .: Success - A string representation of a COMMTIMEOUTS structure.&lt;br /&gt;
;                  Failure - Empty string&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: $tagCOMMTIMEOUTS&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363190(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_CommTimeoutsToString(Const $tCommTimeouts)&lt;br /&gt;
	Local $sResult = &amp;quot;&amp;quot;&lt;br /&gt;
	Local $vValue = 0&lt;br /&gt;
	For $i = 1 To 5&lt;br /&gt;
		$vValue = DllStructGetData($tCommTimeouts, $i)&lt;br /&gt;
		If @error Then Return &amp;quot;&amp;quot;&lt;br /&gt;
		Switch $i&lt;br /&gt;
			Case 1&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;ReadIntervalTimeout = &amp;quot; &amp;amp; String($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 2&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;ReadTotalTimeoutMultiplier = &amp;quot; &amp;amp; String($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 3&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;ReadTotalTimeoutConstant = &amp;quot; &amp;amp; String($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 4&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;WriteTotalTimeoutMultiplier = &amp;quot; &amp;amp; String($vValue) &amp;amp; @CRLF&lt;br /&gt;
			Case 5&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot;WriteTotalTimeoutConstant = &amp;quot; &amp;amp; String($vValue)&lt;br /&gt;
		EndSwitch&lt;br /&gt;
	Next&lt;br /&gt;
	Return $sResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_CommTimeoutsToString&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_CreateModeString&lt;br /&gt;
; Description ...: Create definition string&lt;br /&gt;
; Syntax ........: _CommAPI_CreateModeString(Const $iPort[, $iBaudRate = Default[, $iParity = Default[, $iByteSize = Default[,&lt;br /&gt;
;                  $iStopBits = Default[, $iTimeouts = Default[, $iXON = Default[, $iDSR = Default[, $iCTS = Default[,&lt;br /&gt;
;                  $iDTR = Default[, $iRTS = Default[, $iIDSR = Default]]]]]]]]]]])&lt;br /&gt;
; Parameters ....: $iPort               - [in] A port number.&lt;br /&gt;
;                  $iBaudRate           - [in] The baud rate at which the communications device operates.&lt;br /&gt;
;                  $iParity             - [in] The parity scheme to be used.&lt;br /&gt;
;                  $iByteSize           - [in] Specifies the number of data bits in a character.&lt;br /&gt;
;                  $iStopBits           - [in] Specifies the number of stop bits that define the end of a character: 1, 1.5, or 2.&lt;br /&gt;
;                  $iTimeouts           - [in] Specifies whether infinite time-out processing is on or off.&lt;br /&gt;
;                  $iXON                - [in] Specifies whether the xon or xoff protocol for data-flow control is on or off.&lt;br /&gt;
;                  $iDSR                - [in] Specifies whether output handshaking that uses the Data Set Ready (DSR) circuit is on or off.&lt;br /&gt;
;                  $iCTS                - [in] Specifies whether output handshaking that uses the Clear To Send (CTS) circuit is on or off.&lt;br /&gt;
;                  $iDTR                - [in] Specifies whether the Data Terminal Ready (DTR) circuit is on or off or set to handshake.&lt;br /&gt;
;                  $iRTS                - [in] Specifies whether the Request To Send (RTS) circuit is set to on, off, handshake, or toggle.&lt;br /&gt;
;                  $iIDSR               - [in] Specifies whether the DSR circuit sensitivity is on or off.&lt;br /&gt;
; Return values .: Device-control String&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_OpenPort&lt;br /&gt;
; Link ..........: http://technet.microsoft.com/en-us/library/cc732236.aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_CreateModeString(Const $iPort, Const $iBaudRate = Default, Const $iParity = Default, Const $iByteSize = Default, Const $iStopBits = Default, Const $iTimeouts = Default, Const $iXON = Default, $iDSR = Default, $iCTS = Default, $iDTR = Default, $iRTS = Default, $iIDSR = Default)&lt;br /&gt;
	Local $sResult = &amp;quot;&amp;quot;&lt;br /&gt;
	Switch Number($iPort)&lt;br /&gt;
		Case 1 To 256&lt;br /&gt;
			$sResult = &amp;quot;COM&amp;quot; &amp;amp; $iPort &amp;amp; &amp;quot;:&amp;quot;&lt;br /&gt;
		Case Else&lt;br /&gt;
			Return &amp;quot;COM1:&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch Number($iBaudRate)&lt;br /&gt;
		Case 11 To 256000&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; BAUD=&amp;quot; &amp;amp; $iBaudRate&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch StringUpper($iParity)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;N&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; PARITY=N&amp;quot;&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;O&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; PARITY=O&amp;quot;&lt;br /&gt;
		Case &amp;quot;2&amp;quot;, &amp;quot;E&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; PARITY=E&amp;quot;&lt;br /&gt;
		Case &amp;quot;3&amp;quot;, &amp;quot;M&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; PARITY=M&amp;quot;&lt;br /&gt;
		Case &amp;quot;4&amp;quot;, &amp;quot;S&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; PARITY=S&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch Number($iByteSize)&lt;br /&gt;
		Case 5 To 8&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; DATA=&amp;quot; &amp;amp; $iByteSize&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	If IsNumber($iStopBits) Then&lt;br /&gt;
		Switch $iStopBits&lt;br /&gt;
			Case 0&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot; STOP=1&amp;quot;&lt;br /&gt;
			Case 1&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot; STOP=1.5&amp;quot;&lt;br /&gt;
			Case 2&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot; STOP=2&amp;quot;&lt;br /&gt;
		EndSwitch&lt;br /&gt;
	Else&lt;br /&gt;
		Switch StringUpper($iStopBits)&lt;br /&gt;
			Case &amp;quot;1&amp;quot;, &amp;quot;O&amp;quot;&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot; STOP=1&amp;quot;&lt;br /&gt;
			Case &amp;quot;1.5&amp;quot;, &amp;quot;F&amp;quot;&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot; STOP=1.5&amp;quot;&lt;br /&gt;
			Case &amp;quot;2&amp;quot;, &amp;quot;T&amp;quot;&lt;br /&gt;
				$sResult &amp;amp;= &amp;quot; STOP=2&amp;quot;&lt;br /&gt;
		EndSwitch&lt;br /&gt;
	EndIf&lt;br /&gt;
	Switch StringUpper($iTimeouts)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; TO=OFF&amp;quot;&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; TO=ON&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch StringUpper($iXON)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; XON=OFF&amp;quot;&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; XON=ON&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch StringUpper($iDSR)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; ODSR=OFF&amp;quot;&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; ODSR=ON&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch StringUpper($iCTS)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; OCTS=OFF&amp;quot;&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; OCTS=ON&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch StringUpper($iDTR)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; DTR=OFF&amp;quot;&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; DTR=ON&amp;quot;&lt;br /&gt;
		Case &amp;quot;2&amp;quot;, &amp;quot;HS&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; DTR=HS&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch StringUpper($iRTS)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; RTS=OFF&amp;quot;&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; RTS=ON&amp;quot;&lt;br /&gt;
		Case &amp;quot;2&amp;quot;, &amp;quot;HS&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; RTS=HS&amp;quot;&lt;br /&gt;
		Case &amp;quot;3&amp;quot;, &amp;quot;TG&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; RTS=TG&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Switch StringUpper($iIDSR)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; IDSR=OFF&amp;quot;&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$sResult &amp;amp;= &amp;quot; IDSR=ON&amp;quot;&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Return $sResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_CreateModeString&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_GetCOMPorts&lt;br /&gt;
; Description ...:&lt;br /&gt;
; Syntax ........: _CommAPI_GetCOMPorts()&lt;br /&gt;
; Parameters ....:&lt;br /&gt;
; Return values .: Success - A string with all COM Ports.&lt;br /&gt;
;                  Failure - Empty string&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_GetCOMPorts()&lt;br /&gt;
	Local $sResult&lt;br /&gt;
	Local $oWMIService = ObjGet(&amp;quot;winmgmts:\\localhost\root\CIMV2&amp;quot;)&lt;br /&gt;
	If @error Then Return SetError(@error, 0, &amp;quot;&amp;quot;)&lt;br /&gt;
	Local $oItems = $oWMIService.ExecQuery(&amp;quot;SELECT * FROM Win32_PnPEntity WHERE Name LIKE &#039;%(COM%)&#039;&amp;quot;, &amp;quot;WQL&amp;quot;, 48)&lt;br /&gt;
	For $oItem In $oItems&lt;br /&gt;
		$sResult &amp;amp;= $oItem.Name &amp;amp; @CRLF&lt;br /&gt;
	Next&lt;br /&gt;
	Return $sResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_GetCOMPorts&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=CommInterface.au3&amp;diff=11973</id>
		<title>CommInterface.au3</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommInterface.au3&amp;diff=11973"/>
		<updated>2013-11-10T00:30:09Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: add to Category:Script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Script]]&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; #INDEX# =======================================================================================================================&lt;br /&gt;
; Name ..........: CommInterface.au3&lt;br /&gt;
; Title .........: Communications Functions of Windows API&lt;br /&gt;
; Description ...: Communications Functions of Windows API calls that have been translated to AutoIt functions.&lt;br /&gt;
; Version Date ..: 2013-10-24&lt;br /&gt;
; AutoIt Version : 3.3.8.1&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363194(v=vs.85).aspx&lt;br /&gt;
; Tag(s) ........: RS-232, serial port, COM port&lt;br /&gt;
; Author(s) .....:&lt;br /&gt;
; Dll(s) ........: kernel32.dll&lt;br /&gt;
; Error handling : Everytime @extended is set, it is filled with @ScriptLineNumber of the error in CommAPI.au3.&lt;br /&gt;
;                  Everytime @extended is set, you can call _WinAPI_GetLastError or _WinAPI_GetLastErrorMessage.&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
#include-once&lt;br /&gt;
#include &amp;quot;CommAPIHelper.au3&amp;quot;&lt;br /&gt;
#include &amp;quot;CommUtilities.au3&amp;quot;&lt;br /&gt;
#include &amp;lt;WinAPI.au3&amp;gt;&lt;br /&gt;
#NoAutoIt3Execute&lt;br /&gt;
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_ClosePort&lt;br /&gt;
; Description ...: CLoses a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_ClosePort(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_OpenPort&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_ClosePort(Const $hFile)&lt;br /&gt;
	Local $fResult = _WinAPI_CloseHandle($hFile)&lt;br /&gt;
	If @error Then Return SetError(@error, 0, False)&lt;br /&gt;
	Return $fResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_ClosePort&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_OpenCOMPort&lt;br /&gt;
; Description ...: Opens a COM Port.&lt;br /&gt;
; Syntax ........: _CommAPI_OpenCOMPort(Const $iPort[, $iBaudRate = Default[, $iParity = Default[, $iByteSize = Default[,&lt;br /&gt;
;                  $iStopBits = Default[, $iReadTotalTimeout = 100]]]]])&lt;br /&gt;
; Parameters ....: $iPort               - [in] A port number.&lt;br /&gt;
;                  $iBaudRate           - [in] The baud rate at which the communications device operates.&lt;br /&gt;
;                  $iParity             - [in] The parity scheme to be used.&lt;br /&gt;
;                  $iByteSize           - [in] Specifies the number of data bits in a character.&lt;br /&gt;
;                  $iStopBits           - [in] Specifies the number of stop bits that define the end of a character: 1, 1.5, or 2.&lt;br /&gt;
;                  $iReadTotalTimeout   - [in] An integer value for total read timeout in milliseconds.&lt;br /&gt;
; Return values .: Success - The open handle to a specified communications device.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_OpenPort, _CommAPI_ClosePort, _CommAPI_CreateModeString&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_OpenCOMPort(Const $iPort, Const $iBaudRate = Default, Const $iParity = Default, Const $iByteSize = Default, Const $iStopBits = Default, Const $iReadTotalTimeout = 100)&lt;br /&gt;
	Local $sMode = _CommAPI_CreateModeString($iPort, $iBaudRate, $iParity, $iByteSize, $iStopBits)&lt;br /&gt;
	Local $hFile = _CommAPI_OpenPort($sMode, $iReadTotalTimeout)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, 0)&lt;br /&gt;
	Return $hFile&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_OpenCOMPort&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_OpenPort&lt;br /&gt;
; Description ...: Opens a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_OpenPort(Const $sMode[, $iReadTotalTimeout = 100])&lt;br /&gt;
; Parameters ....: $sMode               - [in] A device-definition string.&lt;br /&gt;
;                  $iReadTotalTimeout   - [in] An integer value for total read timeout in milliseconds.&lt;br /&gt;
; Return values .: Success - The open handle to a specified communications device.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_OpenCOMPort, _CommAPI_ClosePort, _CommAPI_SetCommState&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_OpenPort(Const $sMode, Const $iReadTotalTimeout = 100)&lt;br /&gt;
	Local $sFileName = &amp;quot;\\.\&amp;quot; &amp;amp; StringLeft($sMode, StringInStr($sMode, &amp;quot;:&amp;quot;) - 1)&lt;br /&gt;
	Local $hFile = _WinAPI_CreateFile($sFileName, 2, 6)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, 0)&lt;br /&gt;
	If $hFile &amp;lt;= 0 Then Return SetError(-1, @ScriptLineNumber, 0)&lt;br /&gt;
&lt;br /&gt;
	Local $tDCB = DllStructCreate($tagDCB)&lt;br /&gt;
	Local $tCommTimeouts = DllStructCreate($tagCOMMTIMEOUTS)&lt;br /&gt;
&lt;br /&gt;
	_CommAPI_BuildCommDCBAndTimeouts($sMode, $tDCB, $tCommTimeouts)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, 0)&lt;br /&gt;
&lt;br /&gt;
	_CommAPI_SetCommTimeoutsElement($tCommTimeouts, &amp;quot;ReadTotalTimeoutConstant&amp;quot;, $iReadTotalTimeout)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, 0)&lt;br /&gt;
&lt;br /&gt;
	If Not _CommAPI_SetCommState($hFile, $tDCB) Then Return SetError(@error, @extended, 0)&lt;br /&gt;
	If Not _CommAPI_SetCommTimeouts($hFile, $tCommTimeouts) Then Return SetError(@error, @extended, 0)&lt;br /&gt;
&lt;br /&gt;
	Return $hFile&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_OpenPort&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_ReceiveData&lt;br /&gt;
; Description ...: Receives data (RxD/RX/RD) to a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_ReceiveData(Const $hFile[, $iMinBufferSize = 1[, $iMaxWaitTime = 100]])&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - Received string&lt;br /&gt;
;                  Failure - Empty string&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......: If the result contains Chr(0), you should convert the result with function Binary().&lt;br /&gt;
; Related .......: _CommAPI_TransmitData&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_ReceiveData(Const $hFile)&lt;br /&gt;
	Local $tBuffer = DllStructCreate(&amp;quot;char&amp;quot;)&lt;br /&gt;
	Local $iWritten = 0&lt;br /&gt;
	Local $sResult = &amp;quot;&amp;quot;&lt;br /&gt;
	Do&lt;br /&gt;
		_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 1, $iWritten)&lt;br /&gt;
		If @error Then Return SetError(@error, 0, $sResult)&lt;br /&gt;
		If $iWritten Then $sResult &amp;amp;= DllStructGetData($tBuffer, 1)&lt;br /&gt;
	Until Not $iWritten&lt;br /&gt;
	Return $sResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_ReceiveData&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_TransmitData&lt;br /&gt;
; Description ...: Transmits data (TxD/TX/TD) to a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_TransmitData(Const $hFile, Const $sData)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $sData               - [in] A string value to transmit.&lt;br /&gt;
; Return values .: Success - The number of bytes written.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_ReceiveData&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_TransmitData(Const $hFile, Const $sData)&lt;br /&gt;
	Local $iWritten = 0&lt;br /&gt;
	Local $tBuffer = DllStructCreate(&amp;quot;byte[&amp;quot; &amp;amp; StringLen($sData) &amp;amp; &amp;quot;]&amp;quot;)&lt;br /&gt;
	DllStructSetData($tBuffer, 1, $sData)&lt;br /&gt;
	If @error Then Return SetError(@error)&lt;br /&gt;
	_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sData), $iWritten)&lt;br /&gt;
	If @error Then Return SetError(@error)&lt;br /&gt;
	Return $iWritten&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_TransmitData&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=CommAPIStructures.au3&amp;diff=11972</id>
		<title>CommAPIStructures.au3</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommAPIStructures.au3&amp;diff=11972"/>
		<updated>2013-11-10T00:30:04Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: add to Category:Script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Script]]&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; #INDEX# =======================================================================================================================&lt;br /&gt;
; Name ..........: CommAPIStructures.au3&lt;br /&gt;
; Title .........: Communications structures of Windows API&lt;br /&gt;
; Description ...: Communications structures of Windows API calls that have been translated to AutoIt structures.&lt;br /&gt;
; Version Date ..: 2013-10-24&lt;br /&gt;
; AutoIt Version : 3.3.8.1&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363199(v=vs.85).aspx&lt;br /&gt;
; Tag(s) ........: RS-232, serial port, COM port&lt;br /&gt;
; Author(s) .....:&lt;br /&gt;
; Dll(s) ........: kernel32.dll&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
#include-once&lt;br /&gt;
#NoAutoIt3Execute&lt;br /&gt;
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7&lt;br /&gt;
&lt;br /&gt;
Global Const $tagCOMMPROP = _&lt;br /&gt;
		&amp;quot;WORD  wPacketLength;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;WORD  wPacketVersion;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwServiceMask;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwReserved1;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwMaxTxQueue;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwMaxRxQueue;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwMaxBaud;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwProvSubType;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwProvCapabilities;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwSettableParams;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwSettableBaud;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;WORD  wSettableData;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;WORD  wSettableStopParity;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwCurrentTxQueue;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwCurrentRxQueue;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwProvSpec1;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwProvSpec2;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;WCHAR wcProvChar[1];&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Global Const $tagCOMMTIMEOUTS = _&lt;br /&gt;
		&amp;quot;DWORD ReadIntervalTimeout;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD ReadTotalTimeoutMultiplier;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD ReadTotalTimeoutConstant;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD WriteTotalTimeoutMultiplier;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD WriteTotalTimeoutConstant;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#cs&lt;br /&gt;
	http://msdn.microsoft.com/en-us/library/aa363200(v=vs.85).aspx&lt;br /&gt;
	The eight actual COMSTAT bit-sized data fields within the four bytes of fBitFields can be manipulated by bitwise logical And/Or operations.&lt;br /&gt;
	FieldName           Bits    Description&lt;br /&gt;
	-----------------   -----   ---------------------------&lt;br /&gt;
	fCtsHold             1      Tx waiting for CTS signal&lt;br /&gt;
	fDsrHold             2      Tx waiting for DSR signal&lt;br /&gt;
	fRlsdHold            3      Tx waiting for RLSD signal&lt;br /&gt;
	fXoffHold            4      Tx waiting, XOFF char rec&#039;d&lt;br /&gt;
	fXoffSent            5      Tx waiting, XOFF char sent&lt;br /&gt;
	fEof                 6      EOF character sent&lt;br /&gt;
	fTxim                7      character waiting for Tx&lt;br /&gt;
	fReserved            8-32   reserved (25 bits)&lt;br /&gt;
#ce&lt;br /&gt;
&lt;br /&gt;
Global Const $tagCOMSTAT = _&lt;br /&gt;
		&amp;quot;DWORD fBitFields;&amp;quot; &amp;amp; _ ; see comment above&lt;br /&gt;
		&amp;quot;DWORD cbInQue;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD cbOutQue;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#cs&lt;br /&gt;
	http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
	The fourteen actual DCB bit-sized data fields within the four bytes of fBitFields can be manipulated by bitwise logical And/Or operations.&lt;br /&gt;
	FieldName           Bits    Description&lt;br /&gt;
	-----------------   -----   ---------------------------&lt;br /&gt;
	fBinary              1      binary mode, no EOF check&lt;br /&gt;
	fParity              2      enable parity checking&lt;br /&gt;
	fOutxCtsFlow         3      CTS output flow control&lt;br /&gt;
	fOutxDsrFlow         4      DSR output flow control&lt;br /&gt;
	fDtrControl          5-6    DTR flow control type&lt;br /&gt;
	fDsrSensitivity      7      DSR sensitivity&lt;br /&gt;
	fTXContinueOnXoff    8      XOFF continues Tx&lt;br /&gt;
	fOutX                9      XON/XOFF out flow control&lt;br /&gt;
	fInX                10      XON/XOFF in flow control&lt;br /&gt;
	fErrorCHAR          11      enable error replacement&lt;br /&gt;
	fNull               12      enable null stripping&lt;br /&gt;
	fRtsControl         13-14   RTS flow control&lt;br /&gt;
	fAbortOnError       15      abort reads/writes on error&lt;br /&gt;
	fDummy2             16-32   reserved (17 bits)&lt;br /&gt;
#ce&lt;br /&gt;
&lt;br /&gt;
Global Const $tagDCB = _&lt;br /&gt;
		&amp;quot;DWORD DCBlength;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD BaudRate;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD fBitFields;&amp;quot; &amp;amp; _ ; see comment above&lt;br /&gt;
		&amp;quot;WORD  wReserved;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;WORD  XonLim;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;WORD  XoffLim;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;BYTE  ByteSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;BYTE  Parity;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;BYTE  StopBits;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;CHAR  XonChar;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;CHAR  XoffChar;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;CHAR  ErrorChar;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;CHAR  EofChar;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;CHAR  EvtChar;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;WORD  wReserved1;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Global Const $tagMODEMDEVCAPS = _&lt;br /&gt;
		&amp;quot;DWORD dwActualSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwRequiredSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwDevSpecificOffset;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwDevSpecificSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwModemProviderVersion;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwModemManufacturerOffset;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwModemManufacturerSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwModemModelOffset;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwModemModelSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwModemVersionOffset;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwModemVersionSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwDialOptions;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwCallSetupFailTimer;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwInactivityTimeout;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwSpeakerVolume;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwSpeakerMode;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwModemOptions;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwMaxDTERate;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwMaxDCERate;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;BYTE  abVariablePortion[1];&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Global Const $tagMODEMSETTINGS = _&lt;br /&gt;
		&amp;quot;DWORD dwActualSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwRequiredSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwDevSpecificOffset;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwDevSpecificSize;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwCallSetupFailTimer;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwInactivityTimeout;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwSpeakerVolume;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwSpeakerMode;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwPreferredModemOptions;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwNegotiatedModemOptions;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;DWORD dwNegotiatedDCERate;&amp;quot; &amp;amp; _&lt;br /&gt;
		&amp;quot;BYTE  abVariablePortion[1];&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=CommAPIHelper.au3&amp;diff=11971</id>
		<title>CommAPIHelper.au3</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommAPIHelper.au3&amp;diff=11971"/>
		<updated>2013-11-10T00:29:59Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: add to Category:Script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Script]]&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; #INDEX# =======================================================================================================================&lt;br /&gt;
; Name ..........: CommAPIHelper.au3&lt;br /&gt;
; Title .........: Communications Functions of Windows API&lt;br /&gt;
; Description ...: Communications Functions of Windows API calls that have been translated to AutoIt functions.&lt;br /&gt;
; Version Date ..: 2013-10-24&lt;br /&gt;
; AutoIt Version : 3.3.8.1&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363194(v=vs.85).aspx&lt;br /&gt;
; Tag(s) ........: RS-232, serial port, COM port&lt;br /&gt;
; Author(s) .....:&lt;br /&gt;
; Dll(s) ........: kernel32.dll&lt;br /&gt;
; Error handling : Everytime @extended is set, it is filled with @ScriptLineNumber of the error in CommAPI.au3.&lt;br /&gt;
;                  Everytime @extended is set, you can call _WinAPI_GetLastError or _WinAPI_GetLastErrorMessage.&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
#include-once&lt;br /&gt;
#include &amp;quot;CommAPI.au3&amp;quot;&lt;br /&gt;
#NoAutoIt3Execute&lt;br /&gt;
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_ChangeCommStateElement&lt;br /&gt;
; Description ...: Change one control setting for an element of a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_ChangeCommStateElement(Const $hFile, Const $sElement, Const $vValue)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $sElement            - [in] A element name of DCB structure.&lt;br /&gt;
;                  $vValue              - [in] A new value for the element.&lt;br /&gt;
; Return values .: Success - Previous data in the element of the struct.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_SetCommStateElement, $tagDCB&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_ChangeCommStateElement(Const $hFile, Const $sElement, Const $vValue)&lt;br /&gt;
	Local $tDCB = DllStructCreate($tagDCB)&lt;br /&gt;
	If Not _CommAPI_GetCommState($hFile, $tDCB) Then Return SetError(@error, @extended, 0)&lt;br /&gt;
	Local $vResult = _CommAPI_SetCommStateElement($tDCB, $sElement, $vValue)&lt;br /&gt;
	If Not _CommAPI_SetCommState($hFile, $tDCB) Then Return SetError(@error, @extended, 0)&lt;br /&gt;
	Return $vResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_ChangeCommStateElement&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_ChangeCommTimeoutsElement&lt;br /&gt;
; Description ...: Change one time-out parameter for an element off a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_ChangeCommTimeoutsElement(Const $hFile, Const $sElement, Const $vValue)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $sElement            - [in] A element name of COMMTIMEOUTS structure.&lt;br /&gt;
;                  $vValue              - [in] A new value for the element.&lt;br /&gt;
; Return values .: Success - Previous data in the element of the struct.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_SetCommTimeoutsElement, $tagCOMMTIMEOUTS&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363190(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_ChangeCommTimeoutsElement(Const $hFile, Const $sElement, Const $vValue)&lt;br /&gt;
	Local $tCommTimeouts = DllStructCreate($tagCOMMTIMEOUTS)&lt;br /&gt;
	If Not _CommAPI_GetCommTimeouts($hFile, $tCommTimeouts) Then Return SetError(@error, @extended, 0)&lt;br /&gt;
	Local $vResult = _CommAPI_SetCommTimeoutsElement($tCommTimeouts, $sElement, $vValue)&lt;br /&gt;
	If Not _CommAPI_SetCommTimeouts($hFile, $tCommTimeouts) Then Return SetError(@error, @extended, 0)&lt;br /&gt;
	Return $vResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_ChangeCommTimeoutsElement&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_GetCommStateElement&lt;br /&gt;
; Description ...: Retrieves one control setting for an element of a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_GetCommStateElement(Const $tDCB, Const $sElement)&lt;br /&gt;
; Parameters ....: $tDCB                - [in] A DCB structure.&lt;br /&gt;
;                  $sElement            - [in] A element name of DCB structure.&lt;br /&gt;
; Return values .: Success - Data in the element of the struct.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_GetCommState, _CommAPI_SetCommStateElement, $tagDCB&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_GetCommStateElement(Const $tDCB, Const $sElement)&lt;br /&gt;
	Switch $sElement&lt;br /&gt;
		Case &amp;quot;fBinary&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 0))&lt;br /&gt;
		Case &amp;quot;fParity&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 1))&lt;br /&gt;
		Case &amp;quot;fOutxCTSFlow&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 2))&lt;br /&gt;
		Case &amp;quot;fOutxDSRFlow&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 3))&lt;br /&gt;
		Case &amp;quot;fDTRControl&amp;quot;&lt;br /&gt;
			Return BitAND(0x3, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 4))&lt;br /&gt;
		Case &amp;quot;fDsrSensitivity&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 6))&lt;br /&gt;
		Case &amp;quot;fTXContinueOnXoff&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 7))&lt;br /&gt;
		Case &amp;quot;fOutX&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 8))&lt;br /&gt;
		Case &amp;quot;fInX&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 9))&lt;br /&gt;
		Case &amp;quot;fErrorChar&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 10))&lt;br /&gt;
		Case &amp;quot;fNull&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 11))&lt;br /&gt;
		Case &amp;quot;fRTSControl&amp;quot;&lt;br /&gt;
			Return BitAND(0x3, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 12))&lt;br /&gt;
		Case &amp;quot;fAbortOnError&amp;quot;&lt;br /&gt;
			Return BitAND(0x1, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 14))&lt;br /&gt;
		Case &amp;quot;Dymmy2&amp;quot;&lt;br /&gt;
			Return BitAND(0x1FFFF, BitShift(DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;), 15))&lt;br /&gt;
		Case Else&lt;br /&gt;
			Return DllStructGetData($tDCB, $sElement)&lt;br /&gt;
	EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_GetCommStateElement&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_GetCommTimeoutsElement&lt;br /&gt;
; Description ...: Retrieves one time-out parameter for an element of a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_GetCommTimeoutsElement(Const $tCommTimeouts, Const $sElement)&lt;br /&gt;
; Parameters ....: $tCommTimeouts       - [in] A COMMTIMEOUTS structure.&lt;br /&gt;
;                  $sElement            - [in] A element name of DCB structure.&lt;br /&gt;
; Return values .: Success - Data in the element of the struct.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_GetCommTimeouts, _CommAPI_SetCommTimeoutsElement, $tagCOMMTIMEOUTS&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363190(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_GetCommTimeoutsElement(Const $tCommTimeouts, Const $sElement)&lt;br /&gt;
	Return DllStructGetData($tCommTimeouts, $sElement)&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_GetCommTimeoutsElement&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_IsOnCTS&lt;br /&gt;
; Description ...: The CTS (clear-to-send) signal is on.&lt;br /&gt;
; Syntax ........: _CommAPI_IsOnCTS(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_GetCommModemStatus&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363258(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_IsOnCTS(Const $hFile)&lt;br /&gt;
	Local $iModemStatus = _CommAPI_GetCommModemStatus($hFile)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, False)&lt;br /&gt;
	If BitAND($iModemStatus, 0x10) Then Return True&lt;br /&gt;
	Return False&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_IsOnCTS&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_IsOnDSR&lt;br /&gt;
; Description ...: The DSR (data-set-ready) signal is on.&lt;br /&gt;
; Syntax ........: _CommAPI_IsOnDSR(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_GetCommModemStatus&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363258(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_IsOnDSR(Const $hFile)&lt;br /&gt;
	Local $iModemStatus = _CommAPI_GetCommModemStatus($hFile)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, False)&lt;br /&gt;
	If BitAND($iModemStatus, 0x20) Then Return True&lt;br /&gt;
	Return False&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_IsOnDSR&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_IsOnRI&lt;br /&gt;
; Description ...: The RI (ring indicator) signal is on.&lt;br /&gt;
; Syntax ........: _CommAPI_IsOnRI(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_GetCommModemStatus&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363258(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_IsOnRI(Const $hFile)&lt;br /&gt;
	Local $iModemStatus = _CommAPI_GetCommModemStatus($hFile)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, False)&lt;br /&gt;
	If BitAND($iModemStatus, 0x40) Then Return True&lt;br /&gt;
	Return False&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_IsOnRI&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_IsOnDCD&lt;br /&gt;
; Description ...: The DCD/CD/RLSD (Data Carrier Detect/Carrier Detect/receive-line-signal-detect) signal is on.&lt;br /&gt;
; Syntax ........: _CommAPI_IsOnDCD(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_GetCommModemStatus&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363258(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_IsOnDCD(Const $hFile)&lt;br /&gt;
	Local $iModemStatus = _CommAPI_GetCommModemStatus($hFile)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, False)&lt;br /&gt;
	If BitAND($iModemStatus, 0x80) Then Return True&lt;br /&gt;
	Return False&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_IsOnDCD&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetCommStateElement&lt;br /&gt;
; Description ...: Set one control setting for an element of a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_SetCommStateElement(ByRef $tDCB, Const $sElement, Const $vValue)&lt;br /&gt;
; Parameters ....: $tDCB                - [in/out] A DCB structure.&lt;br /&gt;
;                  $sElement            - [in] A element name of DCB structure.&lt;br /&gt;
;                  $vValue              - [in] A new value for the element.&lt;br /&gt;
; Return values .: Success - Previous data in the element of the struct.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_SetCommState, _CommAPI_GetCommStateElement, $tagDCB&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetCommStateElement(ByRef $tDCB, Const $sElement, Const $vValue)&lt;br /&gt;
	Local $vResult = 0&lt;br /&gt;
	Switch $sElement&lt;br /&gt;
		Case &amp;quot;fBinary&amp;quot;, &amp;quot;fParity&amp;quot;, &amp;quot;fOutxCTSFlow&amp;quot;, &amp;quot;fOutxDSRFlow&amp;quot;, &amp;quot;fDTRControl&amp;quot;, &amp;quot;fDsrSensitivity&amp;quot;, &amp;quot;fTXContinueOnXoff&amp;quot;, &amp;quot;fOutX&amp;quot;, &amp;quot;fInX&amp;quot;, &amp;quot;fErrorChar&amp;quot;, &amp;quot;fNull&amp;quot;, &amp;quot;fRTSControl&amp;quot;, &amp;quot;fAbortOnError&amp;quot;, &amp;quot;Dymmy2&amp;quot;&lt;br /&gt;
			$vResult = DllStructGetData($tDCB, &amp;quot;fBitFields&amp;quot;)&lt;br /&gt;
			If @error Then Return SetError(@error)&lt;br /&gt;
			Switch $sElement&lt;br /&gt;
				Case &amp;quot;fBinary&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -0), BitAND($vResult, 0xFFFFFFFE))&lt;br /&gt;
				Case &amp;quot;fParity&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -1), BitAND($vResult, 0xFFFFFFFD))&lt;br /&gt;
				Case &amp;quot;fOutxCTSFlow&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -2), BitAND($vResult, 0xFFFFFFFB))&lt;br /&gt;
				Case &amp;quot;fOutxDSRFlow&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -3), BitAND($vResult, 0xFFFFFFF7))&lt;br /&gt;
				Case &amp;quot;fDTRControl&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x3), -4), BitAND($vResult, 0xFFFFFFCF))&lt;br /&gt;
				Case &amp;quot;fDsrSensitivity&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -6), BitAND($vResult, 0xFFFFFFBF))&lt;br /&gt;
				Case &amp;quot;fTXContinueOnXoff&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -7), BitAND($vResult, 0xFFFFFF7F))&lt;br /&gt;
				Case &amp;quot;fOutX&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -8), BitAND($vResult, 0xFFFFFEFF))&lt;br /&gt;
				Case &amp;quot;fInX&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -9), BitAND($vResult, 0xFFFFFDFF))&lt;br /&gt;
				Case &amp;quot;fErrorChar&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -10), BitAND($vResult, 0xFFFFFBFF))&lt;br /&gt;
				Case &amp;quot;fNull&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -11), BitAND($vResult, 0xFFFFF7FF))&lt;br /&gt;
				Case &amp;quot;fRTSControl&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x3), -12), BitAND($vResult, 0xFFFFCFFF))&lt;br /&gt;
				Case &amp;quot;fAbortOnError&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1), -14), BitAND($vResult, 0xFFFFBFFF))&lt;br /&gt;
				Case &amp;quot;Dymmy2&amp;quot;&lt;br /&gt;
					$vResult = BitXOR(BitShift(BitAND($vValue, 0x1FFFF), -15), BitAND($vResult, 0x7FFF))&lt;br /&gt;
			EndSwitch&lt;br /&gt;
			$vResult = DllStructSetData($tDCB, &amp;quot;fBitFields&amp;quot;, $vResult)&lt;br /&gt;
			If @error Then Return SetError(@error)&lt;br /&gt;
		Case Else&lt;br /&gt;
			$vResult = DllStructSetData($tDCB, $sElement, $vValue)&lt;br /&gt;
			If @error Then Return SetError(@error)&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Return $vResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetCommStateElement&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetCommTimeoutsElement&lt;br /&gt;
; Description ...: Sets one time-out parameter for an element off a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_SetCommTimeoutsElement(Byref $tCommTimeouts, Const $sElement, Const $vValue)&lt;br /&gt;
; Parameters ....: $tCommTimeouts       - [in/out] A COMMTIMEOUTS structure.&lt;br /&gt;
;                  $sElement            - [in] A element name of COMMTIMEOUTS structure.&lt;br /&gt;
;                  $vValue              - [in] A new value for the element.&lt;br /&gt;
; Return values .: Success - Previous data in the element of the struct.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_ChangeCommTimeoutsElement, _CommAPI_SetCommTimeouts, _CommAPI_GetCommTimeoutsElement, $tagCOMMTIMEOUTS&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363190(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetCommTimeoutsElement(ByRef $tCommTimeouts, Const $sElement, Const $vValue)&lt;br /&gt;
	Local $vResult = DllStructSetData($tCommTimeouts, $sElement, $vValue)&lt;br /&gt;
	If @error Then Return SetError(@error)&lt;br /&gt;
	Return $vResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetCommTimeoutsElement&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetOnDTR&lt;br /&gt;
; Description ...: Sends or clears the DTR (data-terminal-ready) signal.&lt;br /&gt;
; Syntax ........: _CommAPI_SetOnDTR(Const $hFile, Const $iDTR)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $iDTR                - [in] A boolean value: True  - Sends the DTR (data-terminal-ready) signal.&lt;br /&gt;
;                                                               False - Clears the DTR (data-terminal-ready) signal.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_EscapeCommFunction&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363254(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetOnDTR(Const $hFile, Const $iDTR)&lt;br /&gt;
	Local $iFunction = 0&lt;br /&gt;
	Switch StringUpper($iDTR)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$iFunction = 6&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$iFunction = 5&lt;br /&gt;
		Case Else&lt;br /&gt;
			Return False&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	_CommAPI_EscapeCommFunction($hFile, $iFunction)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetOnDTR&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetOnRTS&lt;br /&gt;
; Description ...: Sends or clears the RTS (request-to-send) signal.&lt;br /&gt;
; Syntax ........: _CommAPI_SetOnRTS(Const $hFile, Const $iRTS)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $iRTS                - [in] A boolean value: True  - Sends the RTS (request-to-send) signal.&lt;br /&gt;
;                                                               False - Clears the RTS (request-to-send) signal.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_EscapeCommFunction&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363254(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetOnRTS(Const $hFile, Const $iRTS)&lt;br /&gt;
	Local $iFunction = 0&lt;br /&gt;
	Switch StringUpper($iRTS)&lt;br /&gt;
		Case &amp;quot;0&amp;quot;, &amp;quot;OFF&amp;quot;, &amp;quot;FALSE&amp;quot;&lt;br /&gt;
			$iFunction = 4&lt;br /&gt;
		Case &amp;quot;1&amp;quot;, &amp;quot;ON&amp;quot;, &amp;quot;TRUE&amp;quot;&lt;br /&gt;
			$iFunction = 3&lt;br /&gt;
		Case Else&lt;br /&gt;
			Return False&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	_CommAPI_EscapeCommFunction($hFile, $iFunction)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetOnRTS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=CommAPI.au3&amp;diff=11970</id>
		<title>CommAPI.au3</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommAPI.au3&amp;diff=11970"/>
		<updated>2013-11-10T00:29:50Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: add to Category:Script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Script]]&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; #INDEX# =======================================================================================================================&lt;br /&gt;
; Name ..........: CommAPI.au3&lt;br /&gt;
; Title .........: Communications Functions of Windows API&lt;br /&gt;
; Description ...: Communications Functions of Windows API calls that have been translated to AutoIt functions.&lt;br /&gt;
; Version Date ..: 2013-10-24&lt;br /&gt;
; AutoIt Version : 3.3.8.1&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363194(v=vs.85).aspx&lt;br /&gt;
; Tag(s) ........: RS-232, serial port, COM port&lt;br /&gt;
; Author(s) .....:&lt;br /&gt;
; Dll(s) ........: kernel32.dll&lt;br /&gt;
; Error handling : Everytime @extended is set, it is filled with @ScriptLineNumber of the error in CommAPI.au3.&lt;br /&gt;
;                  Everytime @extended is set, you can call _WinAPI_GetLastError or _WinAPI_GetLastErrorMessage.&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
#include-once&lt;br /&gt;
#include &amp;quot;CommAPIStructures.au3&amp;quot;&lt;br /&gt;
#NoAutoIt3Execute&lt;br /&gt;
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_BuildCommDCB&lt;br /&gt;
; Description ...: Fills a specified DCB structure with values specified in a device-control string.&lt;br /&gt;
; Syntax ........: _CommAPI_BuildCommDCB(Const $sMode, Byref $tDBC)&lt;br /&gt;
; Parameters ....: $sMode               - [in] A device-definition string.&lt;br /&gt;
;                  $tDBC                - [out] A DCB structure.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_BuildCommDCBAndTimeouts, $tagDCB&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363143(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_BuildCommDCB(Const $sMode, ByRef $tDBC)&lt;br /&gt;
	Local $aResult = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;BuildCommDCB&amp;quot;, &amp;quot;str&amp;quot;, $sMode, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tDBC))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	If Not $aResult[0] Then Return SetError(6, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_BuildCommDCB&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_BuildCommDCBAndTimeouts&lt;br /&gt;
; Description ...: Translates a device-definition string into appropriate device-control block codes and places them into a device control block.&lt;br /&gt;
;                  The function can also set up time-out values for a device.&lt;br /&gt;
; Syntax ........: _CommAPI_BuildCommDCBAndTimeouts(Const $sMode, Byref $tDBC, Byref $tCommTimeouts)&lt;br /&gt;
; Parameters ....: $sMode               - [in] A device-definition string.&lt;br /&gt;
;                  $tDBC                - [out] A DCB structure.&lt;br /&gt;
;                  $tCommTimeouts       - [out] A COMMTIMEOUTS structure.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_BuildCommDCB, $tagDCB, $tagCOMMTIMEOUTS&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363145(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_BuildCommDCBAndTimeouts(Const $sMode, ByRef $tDBC, ByRef $tCommTimeouts)&lt;br /&gt;
	Local $aResult = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;BuildCommDCBAndTimeouts&amp;quot;, &amp;quot;str&amp;quot;, $sMode, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tDBC), &amp;quot;ptr&amp;quot;, DllStructGetPtr($tCommTimeouts))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	If Not $aResult[0] Then Return SetError(6, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_BuildCommDCBAndTimeouts&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_ClearCommBreak&lt;br /&gt;
; Description ...: Restores character transmission for a specified communications device and places the transmission line in a nonbreak state.&lt;br /&gt;
; Syntax ........: _CommAPI_ClearCommBreak(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_ClearCommError&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363179(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_ClearCommBreak(Const $hFile)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;ClearCommBreak&amp;quot;, &amp;quot;handle&amp;quot;, $hFile)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_ClearCommBreak&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_ClearCommError&lt;br /&gt;
; Description ...: Retrieves information about a communications error and reports the current status of a communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_ClearCommError(Const $hFile[, $tComStat = 0])&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $tComStat            - [out] A COMSTAT structure in which the device&#039;s status information is returned.&lt;br /&gt;
; Return values .: Success - A mask indicating the type of error.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_ClearCommBreak, $tagCOMSTAT&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363180(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_ClearCommError(Const $hFile, $tComStat = 0)&lt;br /&gt;
	Local $aResult = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;ClearCommError&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;dword*&amp;quot;, 0, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tComStat))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, 0)&lt;br /&gt;
	Return $aResult[2]&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_ClearCommError&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_EscapeCommFunction&lt;br /&gt;
; Description ...: Directs the specified communications device to perform an extended function.&lt;br /&gt;
; Syntax ........: _CommAPI_EscapeCommFunction(Const $hFile, Const $iFunction)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $iFunction           - [in] The extended function to be performed.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_SetOnDTR, _CommAPI_SetOnRTS&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363254(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_EscapeCommFunction(Const $hFile, Const $iFunction)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;EscapeCommFunction&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;dword&amp;quot;, $iFunction)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_EscapeCommFunction&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_GetCommMask&lt;br /&gt;
; Description ...: Retrieves the value of the event mask for a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_GetCommMask(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - A mask of events that are currently enabled.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363257(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_GetCommMask(Const $hFile)&lt;br /&gt;
	Local $aResult = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;GetCommMask&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;dword*&amp;quot;, 0)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, 0)&lt;br /&gt;
	Return $aResult[2]&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_GetCommMask&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_GetCommModemStatus&lt;br /&gt;
; Description ...: Retrieves the modem control-register values.&lt;br /&gt;
; Syntax ........: _CommAPI_GetCommModemStatus(Const $hFile, Byref $pModemStatus)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - The current state of the modem control-register values.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_IsOnCTS, _CommAPI_IsOnDSR, _CommAPI_IsOnRI, _CommAPI_IsOnDCD, _CommAPI_WaitCommEvent&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363258(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_GetCommModemStatus(Const $hFile)&lt;br /&gt;
	Local $aResult = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;GetCommModemStatus&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;dword*&amp;quot;, 0)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, 0)&lt;br /&gt;
	Return $aResult[2]&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_GetCommModemStatus&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_GetCommProperties&lt;br /&gt;
; Description ...: Retrieves information about the communications properties for a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_GetCommProperties(Const $hFile[, $tCOMMPROP = 0])&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $tCOMMPROP           - [out] A COMMPROP structure in which the communications properties information is returned.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363259(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_GetCommProperties(Const $hFile, $tCOMMPROP = 0)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;GetCommProperties&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tCOMMPROP))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_GetCommProperties&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_GetCommState&lt;br /&gt;
; Description ...: Retrieves the current control settings for a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_GetCommState(Const $hFile, $tDCB = 0)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $tDCB                - [out] A DCB structure that receives the control settings information.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_SetCommState, $tagDCB&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363260(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_GetCommState(Const $hFile, $tDCB = 0)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;GetCommState&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tDCB))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_GetCommState&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_GetCommTimeouts&lt;br /&gt;
; Description ...: Retrieves the time-out parameters for all read and write operations on a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_GetCommTimeouts(Const $hFile, $tCommTimeouts = 0)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $tCommTimeouts       - [out] A COMMTIMEOUTS structure in which the time-out information is returned.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_SetCommTimeouts, $tagCOMMTIMEOUTS&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363261(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_GetCommTimeouts(Const $hFile, $tCommTimeouts = 0)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;GetCommTimeouts&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tCommTimeouts))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_GetCommTimeouts&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_PurgeComm&lt;br /&gt;
; Description ...: Discards all characters from the output or input buffer of a specified communications resource.&lt;br /&gt;
;                  It can also terminate pending read or write operations on the resource.&lt;br /&gt;
; Syntax ........: _CommAPI_PurgeComm(Const $hFile, Const $iFlags)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $iFlags              - [in] An integer value.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363428(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_PurgeComm(Const $hFile, Const $iFlags)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;PurgeComm&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;dword&amp;quot;, $iFlags)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_PurgeComm&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetCommBreak&lt;br /&gt;
; Description ...: Suspends character transmission for a specified communications device and places the transmission line in a break state until the ClearCommBreak function is called.&lt;br /&gt;
; Syntax ........: _CommAPI_SetCommBreak(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363433(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetCommBreak(Const $hFile)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;SetCommBreak&amp;quot;, &amp;quot;handle&amp;quot;, $hFile)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetCommBreak&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetCommMask&lt;br /&gt;
; Description ...: Specifies a set of events to be monitored for a communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_SetCommMask(Const $hFile, Const $iEventMask)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $iEventMask          - [in] The events to be enabled. A value of zero disables all events.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363435(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetCommMask(Const $hFile, Const $iEventMask)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;SetCommMask&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;dword&amp;quot;, $iEventMask)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetCommMask&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetCommState&lt;br /&gt;
; Description ...: Configures a communications device according to the specifications in a device-control block.&lt;br /&gt;
;                  The function reinitializes all hardware and control settings, but it does not empty output or input queues.&lt;br /&gt;
; Syntax ........: _CommAPI_SetCommState(Const $hFile, Const $tDCB)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $tDCB                - [in] A DCB structure that contains the configuration information for the specified communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_GetCommState, $tagDCB&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363436(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetCommState(Const $hFile, Const $tDCB)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;SetCommState&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tDCB))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetCommState&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetCommTimeouts&lt;br /&gt;
; Description ...: Sets the time-out parameters for all read and write operations on a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_SetCommTimeouts(Const $hFile, Const $tCommTimeouts)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $tCommTimeouts       - [in] A COMMTIMEOUTS structure that contains the new time-out values.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_GetCommTimeouts, $tagCOMMTIMEOUTS&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363437(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetCommTimeouts(Const $hFile, Const $tCommTimeouts)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;SetCommTimeouts&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tCommTimeouts))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetCommTimeouts&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_SetupComm&lt;br /&gt;
; Description ...: Initializes the communications parameters for a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_SetupComm(Const $hFile, Const $iInQueue, Const $iOutQueue)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $iInQueue            - [in] The recommended size of the device&#039;s internal input buffer, in bytes.&lt;br /&gt;
;                  $iOutQueue           - [in] The recommended size of the device&#039;s internal output buffer, in bytes.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363439(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_SetupComm(Const $hFile, Const $iInQueue, Const $iOutQueue)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;SetupComm&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;dword&amp;quot;, $iInQueue, &amp;quot;dword&amp;quot;, $iOutQueue)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_SetupComm&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_TransmitCommChar&lt;br /&gt;
; Description ...: Transmits a specified character ahead of any pending data in the output buffer of the specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_TransmitCommChar(Const $hFile, Const $cChar)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $sChar               - [in] The character to be transmitted.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363473(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_TransmitCommChar(Const $hFile, Const $cChar)&lt;br /&gt;
	Local $tChar = DllStructCreate(&amp;quot;char&amp;quot;)&lt;br /&gt;
	DllStructSetData($tChar, 1, $cChar)&lt;br /&gt;
	DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;TransmitCommChar&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;char&amp;quot;, $tChar)&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, False)&lt;br /&gt;
	Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_TransmitCommChar&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_WaitCommEvent&lt;br /&gt;
; Description ...: Waits for an event to occur for a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_WaitCommEvent(Const $hFile [, Const $tOverlapped = 0])&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $tOverlapped         - [in] An OVERLAPPED structure.&lt;br /&gt;
; Return values .: Success - A mask indicating the type of event that occurred.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_EscapeCommFunction, _CommAPI_GetCommModemStatus&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363479(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_WaitCommEvent(Const $hFile, Const $tOverlapped = 0)&lt;br /&gt;
	Local $aResult = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;WaitCommEvent&amp;quot;, &amp;quot;handle&amp;quot;, $hFile, &amp;quot;dword*&amp;quot;, 0, &amp;quot;ptr&amp;quot;, DllStructGetPtr($tOverlapped))&lt;br /&gt;
	If @error Then Return SetError(@error, @ScriptLineNumber, 0)&lt;br /&gt;
	Return $aResult[2]&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_WaitCommEvent&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Category:Script&amp;diff=11969</id>
		<title>Category:Script</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Category:Script&amp;diff=11969"/>
		<updated>2013-11-10T00:29:42Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: Create: Category:Script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Intended for project support scripts.&#039;&#039;&lt;br /&gt;
* &#039;&#039;Page name ending with &amp;quot;.au3&amp;quot;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Page containing only script source.&#039;&#039;&lt;br /&gt;
* &#039;&#039;Script containing documented function headers.&#039;&#039;&lt;br /&gt;
&amp;lt;!-- Adjust if/when needed --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(This category and [:Category:Samples] are very similar. Adjust/Discuss if needed.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Contents]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Talk:User_Defined_Functions&amp;diff=11968</id>
		<title>Talk:User Defined Functions</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Talk:User_Defined_Functions&amp;diff=11968"/>
		<updated>2013-11-09T23:53:54Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Migrated UDF List here */ cleared(SoftDelete), page/data not available anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page should really be a spin-off from: http://www.autoitscript.com/forum/index.php?showtopic=19370&lt;br /&gt;
[[User:Manadar|Manadar]] 13:12, 27 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Changes to AutoIt wrappers ==&lt;br /&gt;
&lt;br /&gt;
Currently the old wrappers forum thread by valuator is locked and is being migrated to the wiki (link?). I have just removed the outdated link for now.&lt;br /&gt;
--[[User:Mat|Mat]] 19:28, 24 September 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
== Internet protocol suite ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=64051 POP3 SSL] - A POP3 library that&#039;s compatible with Gmail. It uses an external executable that must be supplied with your script.&lt;br /&gt;
&lt;br /&gt;
Are we sure we should link this topic in here?&lt;br /&gt;
I&#039;ve looked through it and the &#039;&#039;user who made the topic never posted anything that works&#039;&#039;, they just explained how their script worked and &#039;&#039;never actually provided code...&#039;&#039;&lt;br /&gt;
--[[User:FlutterShy|FlutterShy]] 13 Nov 2012&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Talk:UDF_List&amp;diff=11967</id>
		<title>Talk:UDF List</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Talk:UDF_List&amp;diff=11967"/>
		<updated>2013-11-09T23:52:35Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: add: delete|old lingering talk page (or turn it into a auto-redirect page if deemed needed)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{delete|old lingering talk page}}&lt;br /&gt;
This page needs to be merged with [[User Defined Functions]]. This page is being found on Google very well, so everything is probably going this way.&lt;br /&gt;
[[User:Manadar|Manadar]] 12:33, 26 February 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Talk:User_Defined_Functions&amp;diff=11966</id>
		<title>Talk:User Defined Functions</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Talk:User_Defined_Functions&amp;diff=11966"/>
		<updated>2013-11-09T23:44:32Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Internet protocol suite */ add: (missing user signature)+date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page should really be a spin-off from: http://www.autoitscript.com/forum/index.php?showtopic=19370&lt;br /&gt;
[[User:Manadar|Manadar]] 13:12, 27 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Migrated UDF List here ==&lt;br /&gt;
&lt;br /&gt;
The old page can still be seen here: http://www.autoitscript.com/w/index.php?title=UDF_List&amp;amp;action=edit&lt;br /&gt;
&lt;br /&gt;
== Changes to AutoIt wrappers ==&lt;br /&gt;
&lt;br /&gt;
Currently the old wrappers forum thread by valuator is locked and is being migrated to the wiki (link?). I have just removed the outdated link for now.&lt;br /&gt;
--[[User:Mat|Mat]] 19:28, 24 September 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
== Internet protocol suite ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=64051 POP3 SSL] - A POP3 library that&#039;s compatible with Gmail. It uses an external executable that must be supplied with your script.&lt;br /&gt;
&lt;br /&gt;
Are we sure we should link this topic in here?&lt;br /&gt;
I&#039;ve looked through it and the &#039;&#039;user who made the topic never posted anything that works&#039;&#039;, they just explained how their script worked and &#039;&#039;never actually provided code...&#039;&#039;&lt;br /&gt;
--[[User:FlutterShy|FlutterShy]] 13 Nov 2012&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Template:Help_File&amp;diff=11965</id>
		<title>Template:Help File</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Template:Help_File&amp;diff=11965"/>
		<updated>2013-11-09T23:26:11Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: added to template category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.autoitscript.com/autoit3/docs/functions/{{{1}}}.htm {{{1}}}]&amp;lt;noinclude&amp;gt;[[Category:Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Template:Snippet_Header&amp;diff=11964</id>
		<title>Template:Snippet Header</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Template:Snippet_Header&amp;diff=11964"/>
		<updated>2013-11-09T23:16:56Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: fix: Category:Templates (wrong location)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;blockquote style=&amp;quot;width: 60%; background-color:#FAEBD7; padding: 5px; padding-bottom: 3px; border-bottom: 2px solid #aaa; margin-bottom: 1ex;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{AuthorURL|}}}&lt;br /&gt;
 | &#039;&#039;&#039;Author: [http://www.autoitscript.com/forum/user/{{{AuthorURL}}} {{{AuthorName}}}]&#039;&#039;&#039;&lt;br /&gt;
 | &#039;&#039;&#039;{{{AuthorName}}}&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{AuthorURL2|}}}&lt;br /&gt;
 | &#039;&#039;&#039;Author: [http://www.autoitscript.com/forum/user/{{{AuthorURL2}}} {{{AuthorName2}}}]&#039;&#039;&#039;&lt;br /&gt;
 | {{ #if: {{{AuthorName2|}}} &lt;br /&gt;
    | &#039;&#039;&#039;{{{AuthorName2}}}&#039;&#039;&#039;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{AuthorURL3|}}}&lt;br /&gt;
 | &#039;&#039;&#039;Author: [http://www.autoitscript.com/forum/user/{{{AuthorURL2}}} {{{AuthorName3}}}]&#039;&#039;&#039;&lt;br /&gt;
 | {{ #if: {{{AuthorName3|}}} &lt;br /&gt;
    | &#039;&#039;&#039;{{{AuthorName3}}}&#039;&#039;&#039;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{ModifierURL|}}}&lt;br /&gt;
 | &amp;lt;br&amp;gt; &#039;&#039;&#039;Modified: [http://www.autoitscript.com/forum/user/{{{ModifierURL}}} {{{ModifierName}}}]&#039;&#039;&#039;&lt;br /&gt;
 | {{ #if: {{{ModifierName|}}} &lt;br /&gt;
    | &amp;lt;br&amp;gt; &#039;&#039;&#039;Modified: {{{ModifierName}}}&#039;&#039;&#039;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{ModifierURL2|}}}&lt;br /&gt;
 | &#039;&#039;&#039;[http://www.autoitscript.com/forum/user/{{{ModifierURL2}}} {{{ModifierName2}}}]&#039;&#039;&#039;&lt;br /&gt;
 | {{ #if: {{{ModifierName2|}}} &lt;br /&gt;
    | &#039;&#039;&#039;{{{ModifierName2}}}&#039;&#039;&#039;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{ModifierURL3|}}}&lt;br /&gt;
 | &#039;&#039;&#039;[http://www.autoitscript.com/forum/user/{{{ModifierURL3}}} {{{ModifierName3}}}]&#039;&#039;&#039;&lt;br /&gt;
 | {{ #if: {{{ModifierName3|}}} &lt;br /&gt;
    | &#039;&#039;&#039;{{{ModifierName3}}}&#039;&#039;&#039;&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{Desc|}}}&lt;br /&gt;
 | &amp;lt;br&amp;gt; {{{Desc}}} &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#FAEBD7; padding: 15px; padding-bottom: 3px; border-bottom: 2px; solid #aaa; margin-bottom: 1ex;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the entire Author URL is not needed.&lt;br /&gt;
&lt;br /&gt;
Unlimited authors and modifiers.  If more are needed then edit this template accordingly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
| AuthorURL = 35302-guinness Optional.&lt;br /&gt;
| AuthorName = guinness&lt;br /&gt;
| ModifiedURL =  Optional.&lt;br /&gt;
| ModifiedName = Optional.&lt;br /&gt;
| ModifiedURL2 = Optional.&lt;br /&gt;
| ModifiedName2 = Optional.&lt;br /&gt;
| ModifiedName3 = Optional.&lt;br /&gt;
| Desc = This is a short description of the snippet. Optional.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see this link for more information: [[Posting Code]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User_Defined_Functions&amp;diff=11963</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=11963"/>
		<updated>2013-11-09T23:09:51Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: normalized links (title part irrelevant, only adds to maintenance)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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.&lt;br /&gt;
&lt;br /&gt;
== Automation ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=87956 Java UDF] - Creates an access bridge between your application and a Java application. Allowing you to automate some Java applications.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=86574 SAP] - SAP business management automation.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=42776 PDFCreator] - Automation of PDFCreator allows you to create and manipulate PDF files.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=91018 WiFi] - Low level control over your wireless LAN &lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=106163 Active Directory] - Extensive library to control and manipulate the Windows active directory. Link to the [[Active_Directory_UDF_-_General|documentation]] pages. &lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=28436 Windows Events] - Create your own Windows events.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=80201 Service] - Build your own service with AutoIt code.&lt;br /&gt;
&lt;br /&gt;
===Browsers===&lt;br /&gt;
* Internet Explorer - Everything about Internet explorer can be automated with the IE library supplied with a standard AutoIt install.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=95595 FireFox] - A little less support for automation than IE, but still very good.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=61090 Opera] - The same as above for Opera. Automate the most common tasks in Opera with the Opera UDF.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Office Automation===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=32144 Microsoft Office Access] - Automation of Access.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=34302 Microsoft Office Excel] - Large automation library for Excel.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=135312 Microsoft Office Excel Charts] - Creating charts using Excel.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=126305 Microsoft Office Outlook] - Extended Outlook UDF. Link to the [[OutlookEX_UDF_-_General|documentation]] pages.&lt;br /&gt;
* Microsoft Office Word UDF - A way to automate Office Word is included with AutoIt.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=45842 Serial port (COM port)] - Requires my comMG.dll (included)&lt;br /&gt;
* [[CommAPI]] - Serial and parallel communication (COM port, RS-232, LPT port) - without installing DLL&#039;s (using Windows API calls)&lt;br /&gt;
&lt;br /&gt;
== Information gathering ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=29404 Computer information] - A general purpose library to get various details about a Windows machine.&lt;br /&gt;
&lt;br /&gt;
== Databases and web connections ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=17099 SQLite] - &amp;quot;SQLite is a library that implements a self-contained, embeddable, zero-configuration SQL database engine&amp;quot;&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=19848 XML DOM Wrapper] - Supports CRUD operations on XML. Including XSL and XPath.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=20814 MySQL] - MySQL relational database management system UDF.&lt;br /&gt;
&lt;br /&gt;
== Internet protocol suite ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=84133 WinHTTP] - Enables scripts to access the HTTP protocol for creating GET and POST requests and submitting them with conforming standards, cookies not supported.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=77503 WinInet] - Enables scripts to access standard Internet protocols, such as FTP, Gopher and HTTP. Also supports creating GET and POST requests and submitting them with conforming standards, cookies supported.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=22838 POP3] - POP3 library for retrieving email messages. Not compatible with Gmail because it uses SSL.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=64051 POP3 SSL] - A POP3 library that&#039;s compatible with Gmail. It uses an external executable that must be supplied with your script.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=43515 IRC] - A lightweight library for communicating with IRC servers.&lt;br /&gt;
&lt;br /&gt;
== Data compression ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=116565 zip] - Create ZIP files and unpack ZIP files.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=85094 7z, zip, gzip, bzip2, tar] - More extensive library than the one above. Uses a external DLL that must be provided with the script.&lt;br /&gt;
&lt;br /&gt;
== Encryption and hash ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=76976 MD5,SHA1,CRC32,RC4,BASE64,XXTEA] - Several encryption and hash functions.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=78745 AES Rijndael] - Very fast AES UDF. Support ECB/CBC/CFB/OFB block cipher mode.&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=94834 Simple DirectMedia Layer UDF] - Adds support for joysticks, CDs, 2D graphics, timers. See [http://www.libsdl.org/ SDL website] for more information.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=95357 FreeImage library] - Various operations on images, such as rotate, resize, flip.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=51054 Printer controller] - 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;
&lt;br /&gt;
===Sound===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=83481 BASS Function Library] - Sound and Music via wrappers for Bass, BassEnc, Bass FX, BassSFX, BassAsio and BassCd DLLs&lt;br /&gt;
&lt;br /&gt;
===3D graphics===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=70506 IrrLicht] - A 3D graphics engine suitable for creating games.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=113881 au3Irrlicht2] - Another UDF bringing Irrlicht and au3 together. Historically some kind of a follower of the UDF above, technically with a complete different approach.&lt;br /&gt;
&lt;br /&gt;
== GUI Additions ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=32494 XSkin] - A large library that allows skinning of your GUI and to apply custom skins.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=132864 Uskin] - A library that allows a user to skin their application GUI using the Windows &#039;&#039;.MSstyles&#039;&#039; files.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=20967 Modern tray menu] - Allows the creation of modern, fancy GUI and tray menus with icons.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=71811 SetOnEvent] - Provides an easy way for an event to call functions with parameters.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=119505 GUIFrame] - Divide a GUI into adjustable frames.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=113723 Easy Scrollbars] - Easily create scrollable sections in your GUI&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=105582 GUICtrlOnChangeRegister] - Call a function when an edits content is changed.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=96258 ContextHelp.au3] - Management of context help ([http://www.autoitscript.com/forum/index.php?showtopic=72152-contexthelp/ original])&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=145149 GUIExtender] - Expand and contract sections of your GUI. ([http://www.autoitscript.com/forum/index.php?showtopic=117909 original])&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=109096 ExtMsgBox] - A very customisable replacement for MsgBox&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=108445 Toast] - Small message GUIs which pop out of the Systray&lt;br /&gt;
&lt;br /&gt;
=== Controls ===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=79412 Graph control UDF] - Easily create and show bar chart and line charts.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=105682 GUICtrlCreateFinder] - Allows you to create a window finder control like the one seen in AutoIt Window Info.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=111438 GUIPager] - Create and control native pager controls.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=90598 Hotkey input control] - Hotkeys Input Control UDF Library (Non-native)&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=107965 GUIHotkey] - UDF for using native hotkey controls.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=103904&amp;amp;p=735769 Marquees] - Make tickertape info bars&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=96464 Colorpicker] - Create a button for the user to select a color.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=126958 Syslink] - Provides a convenient way to embed hypertext links in a window&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=74649 Progressbar with GDIplus] - You even can use full textured images&lt;br /&gt;
&lt;br /&gt;
== Maths ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=83091 Primes UDF] - Many functions dealing with prime number generation and calculations.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=83529 Big number UDF] - Make calculations with extremely large numbers that AutoIt normally is not able to support.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=81189 Number base conversion] - From, to and between positive bases less than 63 (decimals supported)&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=106551 Decimal To fraction] - Converts any decimal number to a fraction. Example: 1.2 to 6/5&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=82722 Trigonometry math functions] - _ATan2(), _Cosh(), _Frexp(), _Hypot(), _Ldexp(), _Logb(), _Sinh(), _Tanh()&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=108803 Polynomials] - Functions for using polynomials.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=117156 NumToWord] - Convert numerals to a human readable string.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=98160 Root function] - Working out real roots of numbers.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=102686 Advanced rounding] - Support for different measures of accuracy and 8 ways to resolve tie breaks.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=90492 Hotkey.au3] - Management of Hotkeys UDF, with several advantages over HotkeySet().&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=97826 Animated tray icons] - Make animated tray icons easily.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=101733 NoFocusLines] - Remove the dotted focus lines from buttons, sliders, radios and checkboxes which spoil the look of your GUI&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=114034 StringSize] - Automatically size controls to fit the text you want to put in them&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=104150 JSON] - RFC4627 compliant JSON encode/decode&lt;br /&gt;
&lt;br /&gt;
[[Category:UDF]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User_talk:MvGulik&amp;diff=11615</id>
		<title>User talk:MvGulik</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User_talk:MvGulik&amp;diff=11615"/>
		<updated>2013-02-17T20:29:45Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Snippets */ Cleared, No way around TOC-line issue.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;sup style=&amp;quot;color:#448&amp;quot;&amp;gt;&#039;&#039;&#039;Hijacked by Wiki user: &#039;&#039;IEvKI3gv9Wrkd41u&#039;&#039; &amp;lt;=&amp;gt; Forum: &#039;&#039;MvGulik&#039;&#039;&#039;&#039;&#039;.&amp;lt;/sup&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User:MvGulik&amp;diff=11614</id>
		<title>User:MvGulik</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User:MvGulik&amp;diff=11614"/>
		<updated>2013-02-17T20:25:16Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;sup style=&amp;quot;color:#448&amp;quot;&amp;gt;&#039;&#039;&#039;Hijacked by Wiki user: &#039;&#039;IEvKI3gv9Wrkd41u&#039;&#039; &amp;lt;=&amp;gt; Forum: &#039;&#039;MvGulik&#039;&#039;&#039;&#039;&#039;.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
= Heading 1 text =&lt;br /&gt;
== Heading 2 text ==&lt;br /&gt;
=== Heading 3 text ===&lt;br /&gt;
==== Heading 4 text ====&lt;br /&gt;
===== Heading 5 text =====&lt;br /&gt;
====== Heading 6 text ======&lt;br /&gt;
======= Heading 7 text ======= [x]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Category:Contents]]&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Tutorials]] [[Category:Samples]] [[Category:SciTE]] [[Category:UDF]]&lt;br /&gt;
[[Category:AutoIt Wiki]]&lt;br /&gt;
[[Category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Temp_Unsure]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Category:Pages_with_broken_file_links&amp;diff=11613</id>
		<title>Category:Pages with broken file links</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Category:Pages_with_broken_file_links&amp;diff=11613"/>
		<updated>2013-02-17T20:24:46Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This is a maintenance category which sometimes contains pages that are in need of attention.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Management]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Category:Pages_with_broken_file_links&amp;diff=11612</id>
		<title>Category:Pages with broken file links</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Category:Pages_with_broken_file_links&amp;diff=11612"/>
		<updated>2013-02-17T20:24:19Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: Created page with &amp;quot;__HIDDENCAT__ &amp;#039;&amp;#039;This is a maintenance category which sometimes contains pages that are in need of attention.&amp;#039;&amp;#039;  Category:Wiki Management&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__HIDDENCAT__&lt;br /&gt;
&#039;&#039;This is a maintenance category which sometimes contains pages that are in need of attention.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Management]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User:MvGulik&amp;diff=11611</id>
		<title>User:MvGulik</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User:MvGulik&amp;diff=11611"/>
		<updated>2013-02-17T20:21:18Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;sup style=&amp;quot;color:#448&amp;quot;&amp;gt;&#039;&#039;&#039;Hijacked by Wiki user: &#039;&#039;IEvKI3gv9Wrkd41u&#039;&#039; &amp;lt;=&amp;gt; Forum: &#039;&#039;MvGulik&#039;&#039;&#039;&#039;&#039;.&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
= Heading 1 text =&lt;br /&gt;
== Heading 2 text ==&lt;br /&gt;
=== Heading 3 text ===&lt;br /&gt;
==== Heading 4 text ====&lt;br /&gt;
===== Heading 5 text =====&lt;br /&gt;
====== Heading 6 text ======&lt;br /&gt;
======= Heading 7 text ======= [x]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Category:Contents]]&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Tutorials]] [[Category:Samples]] [[Category:SciTE]] [[Category:UDF]]&lt;br /&gt;
[[Category:AutoIt Wiki]]&lt;br /&gt;
[[Category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Temp_Unsure]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[file:FileNotFound1.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:FileNotFound2.gif]]&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=File:Using-helpfile.png&amp;diff=11610</id>
		<title>File:Using-helpfile.png</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=File:Using-helpfile.png&amp;diff=11610"/>
		<updated>2013-02-17T19:57:35Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: Undo revision 11607 by IEvKI3gv9Wrkd41u (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An image that shows basic operation of the help file.&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Documentation&amp;diff=11609</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Documentation&amp;diff=11609"/>
		<updated>2013-02-17T19:56:53Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Using the help file */ image swap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There is extensive AutoIt documentation available and this documentation is your recommended reference. If you have AutoIt installed then you can find it in the SciTE editor if you press F1, or in the start menu under AutoIt &amp;gt; AutoIt Help File. Many developers keep the documentation or &#039;&#039;AutoIt Help File&#039;&#039;, as it is better known, constantly open to look up functions and keywords.&lt;br /&gt;
&lt;br /&gt;
=Offline=&lt;br /&gt;
An offline copy of the help file is available for download on the official AutoIt home page. You download the [[AutoIt Full Installation]] or the [[AutoIt Self Extracting Archive]] which both contain the AutoIt help file.&lt;br /&gt;
&lt;br /&gt;
==Using the help file==&lt;br /&gt;
[[File:Using-helpfile.png|300x226px|frame|Help file showing index]]&lt;br /&gt;
&lt;br /&gt;
There are three common methods of using the help file. You can use either the categories to browse the help file, use the index to search for document titles and use the search function to look in the entire page.&lt;br /&gt;
&lt;br /&gt;
Either one method is good and works well for a variety of situations. As an alternative to the search method, you can use Google to search in the online documentation which generally works better.&lt;br /&gt;
&lt;br /&gt;
Still can not find an answer to your problem? Use the [[forums]].&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The source code for the help file is available to anyone so that they can expand, modify or translate the original. After editing, the help file source code can be submitted to the development team.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt; &amp;lt;!-- clears the image above --&amp;gt;&lt;br /&gt;
=Online=&lt;br /&gt;
There is also online documentation available if you do not have or want to download the offline version. This is less convenient to use for regular development since some features that the offline help file offers are not supported.&lt;br /&gt;
&lt;br /&gt;
The online copy can be found here: [http://www.autoitscript.com/autoit3/docs/ Online documentation]&lt;br /&gt;
&lt;br /&gt;
If you like to try AutoIt Online in your Webbrowser you can use [http://www.script-example.com/themen/AutoIT-Online-Compiler.php script-example.com free AutoIt Web Compiler]&lt;br /&gt;
&lt;br /&gt;
==Searching==&lt;br /&gt;
Similar to the forums, you can use Google or your search engine of choice as a valuable searching tool. You start your query with &#039;&#039;site:http://www.autoitscript.com/autoit3/docs/&#039;&#039; and then your search query.&lt;br /&gt;
&lt;br /&gt;
A finished query may look like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
site:http://www.autoitscript.com/autoit3/docs/ GUICtrlCreateButton&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Function list==&lt;br /&gt;
Additionally, a list of all the functions exists on this Wiki. It is not maintained as regularly, and is redundant to the previously mentioned methods. You can find it on the [[Function list]] page.&lt;br /&gt;
&lt;br /&gt;
=Other languages=&lt;br /&gt;
The AutoIt help file is available in a few other languages beside English. Almost constantly translations in other languages are being written. &lt;br /&gt;
&lt;br /&gt;
You can find these help files here: &lt;br /&gt;
[http://www.autoitscript.com/autoit3/docs.shtml Non-english documentation]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Category:Templates&amp;diff=11608</id>
		<title>Category:Templates</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Category:Templates&amp;diff=11608"/>
		<updated>2013-02-17T19:34:02Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;General templates category.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Intended for actively used templates. (excluding special mini-templates)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See also [[Special:AllPages/Template:]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Management]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=File:Using-helpfile.png&amp;diff=11607</id>
		<title>File:Using-helpfile.png</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=File:Using-helpfile.png&amp;diff=11607"/>
		<updated>2013-02-17T19:28:58Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: +del, orphan .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An image that shows basic operation of the help file.&lt;br /&gt;
{{delete|not used anymore}}&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User_talk:Jaberwocky6669&amp;diff=11606</id>
		<title>User talk:Jaberwocky6669</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User_talk:Jaberwocky6669&amp;diff=11606"/>
		<updated>2013-02-17T19:19:14Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Just in case. This might be of some extra use. [http://www.mediawiki.org/wiki/Help:Extension:ParserFunctions www.mediawiki.org/wiki/Help:Extension:ParserFunctions] --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 18:03, 11 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
There is a little issue with the Snippet Header template. When you click on edit to edit a snippet section ([[Snippets_(_AutoIt_Array_)]]), your ending up in edit mode for the [[Template:Snippet Header]] page instead of editing the section text. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 17:16, 12 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:Crap.  Well, That sucks.  I don&#039;t know what to do about it.  Any ideas? [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 19:19, 12 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Meh, I&#039;ll get around to reverting my edits soon enough then. [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 20:03, 12 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::I have looked around some wiki docs, but so far I have not found anything about this. Not how to do it, or that it is not possible. My gut feeling says its not possible. One solution would be to just ditch the section header part from the template, and re-add it on the top of the snippets. (will look some more tomorrow) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 21:23, 12 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::Amazing what a short nap can do for my ability to think.  I think I understand why it happens.  When the template is included on the page then the template becomes a page in a page.  I guess.  But yeah, your solution is probably about the only way around it short of reverting. [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 22:23, 12 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::I also found out that when a section of code has a | then other problems come up too so this idea of mine is counting its last days. [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 22:52, 12 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::Mmm, Yea that &amp;quot;|&amp;quot; character, if used in the AutoIt code, is going to screw things up to. So the code snipped also has to go outside the template code (&#039;&#039;unless the AutoIt-code is in a separate page I think. But I don&#039;t think we should go that way (yet, if ever)&#039;&#039;). Don&#039;t think that also moving the AutoIt code out of the template is a really big deal. The header template seems still useful as additional snippet data input box (and in keeping things clean: Header/Title, Template/Data, Script.). --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 10:26, 13 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::&amp;lt;del&amp;gt;PS: I&#039;m not sure yet. But keeping the snipped title as template input field might have some additional wiki search benefits. (have to check this, but I&#039;m not sure when I get to it.) Your call. I can always add the title again if I find some useful use for it. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 10:37, 13 November 2012 (GMT)&amp;lt;/del&amp;gt; Nevermind this. AutoIt wiki is not using &amp;quot;Semantic MediaWiki&amp;quot;. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 11:08, 13 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
Ps: Did a little template versus header test. Use what you find useful. &amp;lt;del&amp;gt;[[Sandbox/HeaderTest]]&amp;lt;/del&amp;gt; --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 15:22, 14 November 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jaberwocky6669, would you like me to finish the snippets pages? (I probably will look at including the section header(text/title) into the template to.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 20:22, 17 November 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
:So, it isn&#039;t a problem to have a big long description in the TOC?&lt;br /&gt;
::Not sure, but don&#039;t think it is a problem.&lt;br /&gt;
__TOC__&lt;br /&gt;
== Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test ==&lt;br /&gt;
== TestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTest ==&lt;br /&gt;
::seems ok. What did you had in mind?&lt;br /&gt;
::O wait, I think I get it. When using all snipped data inside the header. Mmm, not checked that (yet) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 17:40, 18 November 2012 (UTC)&lt;br /&gt;
::Yep. Problem. All data is glued together inside the TOC line. That not really useful. (ditching that idea) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 18:15, 18 November 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Category:Candidates_for_deletion&amp;diff=11605</id>
		<title>Category:Candidates for deletion</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Category:Candidates_for_deletion&amp;diff=11605"/>
		<updated>2013-02-17T19:11:04Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Article management page: Candidates for deletion.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Management]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Category:Candidates_for_deletion&amp;diff=11604</id>
		<title>Category:Candidates for deletion</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Category:Candidates_for_deletion&amp;diff=11604"/>
		<updated>2013-02-17T19:10:30Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Article management page: Candidates for deletion.&lt;br /&gt;
&lt;br /&gt;
Note: check later, &amp;quot;Main Page:about&amp;quot;, still showing in category. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 19:10, 17 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Management]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=FAQ&amp;diff=11603</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=FAQ&amp;diff=11603"/>
		<updated>2013-02-17T17:34:51Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: +linebreak&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;
[[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;
=== 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;Func dbg($msg)&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;, $msg)&lt;br /&gt;
 EndFunc&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;dbg(&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;
&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 (BETA ONLY):&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 (except on Windows 2000).&lt;br /&gt;
&lt;br /&gt;
==How can I prevent more than one copy of my script from running at once / 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;
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(16, &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(64, &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(64, &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;&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(0, &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;
&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;
&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(0, &amp;quot;You clicked on&amp;quot;, &amp;quot;Yes&amp;quot;)&lt;br /&gt;
		Case $msg = $NoID&lt;br /&gt;
			MsgBox(0, &amp;quot;You clicked on&amp;quot;, &amp;quot;No&amp;quot;)&lt;br /&gt;
		Case $msg = $ExitID&lt;br /&gt;
			MsgBox(0, &amp;quot;You clicked on&amp;quot;, &amp;quot;Exit&amp;quot;)&lt;br /&gt;
		Case $msg = $GUI_EVENT_CLOSE&lt;br /&gt;
			MsgBox(0, &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 2000 or Windows XP Pro 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;
&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 &lt;br /&gt;
&lt;br /&gt;
done:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func testme($param1, $param2 = &amp;quot;nothing&amp;quot;, $param3 = 5)&lt;br /&gt;
	MsgBox(0, &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;
&lt;br /&gt;
&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] 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;&lt;br /&gt;
$aTSR = _GetTotalScreenResolution()&lt;br /&gt;
MsgBox(0, &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;&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(0, &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(0, &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;
=== 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 look like a doofus.&lt;br /&gt;
* Use proper punctuation. Complete sentences need only one trailing punctuation mark -- not three!!! Writing a sentance without simple punctuation such as commas or other punctuation is considered lazy, which is considered a good judge of the poster&#039;s coding style. If you cannot summon the strength 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;
Make sure you are not giving the impression of breaking forum rules, http://www.autoitscript.com/forum/forum-2/announcement-15-forum-rules-7-nov-2012/. Make sure you are not doing anything that can be perceived as breaking the law.&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;
;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;
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(262144, &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;
=== 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;
&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;&lt;br /&gt;
Local $PixelCheck, $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 now it has changed.  Change this to what you want to happen when the colour in the region changes.&lt;br /&gt;
		Msgbox(48,&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;; Find a pure red pixel in the range 0,0-20,300&lt;br /&gt;
$coord = PixelSearch( 0, 0, 20, 300, 0xFF0000 )&lt;br /&gt;
If Not @error Then&lt;br /&gt;
	MsgBox(0, &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(0, &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.  This way you may have your script resistive against another active windows.  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;
To learn AutoIt you have two main options available to you:&lt;br /&gt;
&lt;br /&gt;
AutoIt 1-2-3, an interactive classroom by Valuater. You may find it here:&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;
There is also updated LxP&#039;s AutoIt tutorial by BrettF. You can find it here:&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;
There is also a book; AutoIt v3: Your Quick Guide by Andy Flessner.&lt;br /&gt;
You can buy the book from here:&lt;br /&gt;
[http://oreilly.com/catalog/9780596515126/ http://oreilly.com/catalog/9780596515126/]&lt;br /&gt;
&lt;br /&gt;
On YouTube there are many 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 http://www.youtube.com/results?search_query=autoit+tutorial&amp;amp;search_type=&amp;amp;aq=0&amp;amp;oq=AutoIt]&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, but search the forums for more information.  Posting topics like this will usually get the topic locked.&lt;br /&gt;
&lt;br /&gt;
Also posting the source (if a hacked decompiler was used) of other compiled scripts, or otherwise mentioning these hacked decompilers will probably get you banned.  It is also in violation of the AutoIt EULA (End-User-License-Agreement).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You may not reverse engineer or disassemble the SOFTWARE PRODUCT or compiled scripts that were created with the SOFTWARE PRODUCT.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the [[Decompiling FAQ]] for more information.&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;$var = &amp;quot;I am a &#039;quote&#039; inside the string&amp;quot;&lt;br /&gt;
MsgBox (0, &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 (0, &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;$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 (0, &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 prevent decompiled code from being usable to the person that decompiled.  The first step is to obfuscate your code.  This causes the code to become unreadable.  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;
If you wish to simulate decompilation for your script, you can do this using the following simple example:&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 exe with the following command line parameters your source will be installed.&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;
&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;
*#** AutoIt Specific&lt;br /&gt;
*#*** General Help and Support (Most support questions)&lt;br /&gt;
*#*** GUI Support (Support for the Graphical User Interface)&lt;br /&gt;
*#** Non-AutoIT&lt;br /&gt;
*#*** Chat&lt;br /&gt;
*#*** Developer Chat (Usually for C++ questions.)&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.   Most of us would rather that you learn rather than just having a script written for 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 likes of [SOLVED] into the title, and redirecting people to the answer that helped you.  It can make the lives of people searching easier.&lt;br /&gt;
* Finally follow the rules:&lt;br /&gt;
** [http://www.autoitscript.com/forum/forum-6/announcement-13-forum-rules/ Forum rules]&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=37739 General policies and forum settings]&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.de/ German Forums]&lt;br /&gt;
* [http://www.autoit.fr/  French Forums]&lt;br /&gt;
* [http://www.autoit.es/ Spanish Forums]&lt;br /&gt;
* [http://autoit-script.ru/ Russian Forums]&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;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Talk:Helpfile-Changes&amp;diff=11602</id>
		<title>Talk:Helpfile-Changes</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Talk:Helpfile-Changes&amp;diff=11602"/>
		<updated>2013-02-14T17:20:15Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is just to keep track of all the large, and part-completed projects on the helpfile and UDFs.&lt;br /&gt;
&lt;br /&gt;
If you update an item on this page, there is a good chance the user concerned won&#039;t notice unless you pm them about it too.&lt;br /&gt;
:Note: Presuming your meaning a AutoIt Forum PM. That&#039;s not really a (general) option when the user is using a other displayed name than his/her AutoIt forum login name. (I at least could not find a user named &amp;quot;&#039;&#039;IEvKI3gv9Wrkd41u&#039;&#039;&amp;quot; on the forum.)&lt;br /&gt;
:To keep track of wiki changes, without having to take a peek at the wiki, there is the option of subscribing to the &amp;quot;&#039;&#039;AutoIt Wiki - Recent changes [en]&#039;&#039;&amp;quot; RSS feed. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 17:18, 14 February 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Talk:Helpfile-Changes&amp;diff=11601</id>
		<title>Talk:Helpfile-Changes</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Talk:Helpfile-Changes&amp;diff=11601"/>
		<updated>2013-02-14T17:18:04Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is just to keep track of all the large, and part-completed projects on the helpfile and UDFs.&lt;br /&gt;
&lt;br /&gt;
If you update an item on this page, there is a good chance the user concerned won&#039;t notice unless you pm them about it too.&lt;br /&gt;
:Note: Presuming your meaning a AutoIt Forum PM. That&#039;s not really a option when the user is using a other displayed name than his/her AutoIt forum login name. (I at least could not find a user named &amp;quot;&#039;&#039;IEvKI3gv9Wrkd41u&#039;&#039;&amp;quot; on the forum.)&lt;br /&gt;
:To keep track of wiki changes, without having to take a peek at the wiki, there is the option of subscribing to the &amp;quot;&#039;&#039;AutoIt Wiki - Recent changes [en]&#039;&#039;&amp;quot; RSS feed. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 17:18, 14 February 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Active_Directory_UDF_-_GetObjectsInOU&amp;diff=11585</id>
		<title>Active Directory UDF - GetObjectsInOU</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Active_Directory_UDF_-_GetObjectsInOU&amp;diff=11585"/>
		<updated>2013-02-01T17:33:27Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: BR tag cleanup (BR best avoided when not needed. Generally not needed.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP}}&lt;br /&gt;
&lt;br /&gt;
The function _AD_GetObjectsInOU is the swiss army knife of the Active Directory UDF.&amp;lt;br&amp;gt;It allows to search for whatever criteria you specify and returns whatever properties you want.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The following parameters define what is searched for and what properties are returned by the function:&lt;br /&gt;
&lt;br /&gt;
;$sAD_OU&lt;br /&gt;
:The Active Directory container where to begin the search.&lt;br /&gt;
&lt;br /&gt;
;$sAD_Filter&lt;br /&gt;
:The LDAP filter defines what to search for. More details can be found in the next section.&lt;br /&gt;
&lt;br /&gt;
;$iAD_SearchScope&lt;br /&gt;
:Defines the search constraints. The following constraints are supported:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;Base&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
:You search only the so-called “base” object (that is, the Active Directory container where you begin your search as defined by $sAD_OU); child containers are not searched. The base search is useful when you want to pull out information for a single OU (for example, a list of all the user accounts in the Finance OU).&lt;br /&gt;
:Set the parameter to 0 to use this contraint.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;One Level&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
:A one-level search is restricted to the immediate children of a base object, but excludes the base object itself. A one-level search can be used to enumerate all children of an object.&lt;br /&gt;
:Set the parameter to 1 to use this contraint.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;Subtree&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
:The entire subtree is searched: that includes the base container, all sub-containers and any containers contained within those sub-containers. A subtree search is normally used to search objects for a given scope. For example, search for all users with accounts that will expire in 30 days or less.&lt;br /&gt;
:Set the parameter to 2 to use this contraint. This is the default value.&lt;br /&gt;
&lt;br /&gt;
:For more information please check this site [http://technet.microsoft.com/en-us/library/ee692830.aspx#EFAA].&lt;br /&gt;
&lt;br /&gt;
;$sAD_DataToRetrieve&lt;br /&gt;
:A comma separated list of properties to be returned for each object that matches the search criteria.&lt;br /&gt;
&lt;br /&gt;
;$sAD_SortBy&lt;br /&gt;
:A single property the resulting records will be sorted by. This has to be one of the properties specified in $sAD_DataToRetrieve.&lt;br /&gt;
&lt;br /&gt;
==LDAP filter==&lt;br /&gt;
The best description how to create a LDAP filter can be found here [http://www.selfadsi.org/ldap-filter.htm].&lt;br /&gt;
&lt;br /&gt;
==Remarks==&lt;br /&gt;
* Multi-value attributes are returned as a string with the pipe character (|) as separator.&lt;br /&gt;
* To make sure that all properties you specify in $sAD_DataToRetrieve exist in the AD you can use _AD_ObjectExistsInSchema.&lt;br /&gt;
* This function returns the selected properties &amp;quot;as is&amp;quot;. To &amp;quot;decode&amp;quot; unreadable properties you need to use function _AD_GetObjectProperties.&lt;br /&gt;
* If you need a single property of a single object you can use function _AD_GetObjectAttribute.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
List all Group Policies&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$aObjects = _AD_GetObjectsInOU(&amp;quot;&amp;quot;, &amp;quot;(objectClass=groupPolicyContainer)&amp;quot;, 2, &amp;quot;displayName,gPCFileSysPath&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users that never logged on before&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$aObjects = _AD_GetObjectsInOU(&amp;quot;&amp;quot;, &amp;quot;(&amp;amp;(&amp;amp;(objectCategory=person)(objectClass=user))(|(lastLogon=0)(!(lastLogon=*))))&amp;quot;, 2, &amp;quot;sAMAccountName,distinguishedName,displayname&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users that must change their password the next time they logon&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$aObjects = _AD_GetObjectsInOU(&amp;quot;&amp;quot;, &amp;quot;(&amp;amp;(objectCategory=person)(objectClass=user)(pwdLastSet=0))&amp;quot;, 2, &amp;quot;sAMAccountName,distinguishedName,displayname&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11564</id>
		<title>AutoIt Wiki talk:Community portal</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11564"/>
		<updated>2013-01-21T15:06:29Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Homepage talk page */ cleanup (cleared), empty and obsolete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FAQ, Cookbook, Examples ==&lt;br /&gt;
&lt;br /&gt;
Provide one centralised area with a list of examples instead of three separate places where questions are answered on the front page. Preferably categorized like the cookbook is at the moment.&lt;br /&gt;
[[User:Manadar|Manadar]] 11:49, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:http://www.autoitscript.com/autoit3/docs/history.htm [[User:Manadar|Manadar]] 13:33, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I put it on the main page. The old page can be seen here: [[http://www.autoitscript.com/w/index.php?title=Main_Page&amp;amp;oldid=8084]] [[User:Manadar|Manadar]] 16:15, 17 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== mdiesel wrapper ==&lt;br /&gt;
&lt;br /&gt;
I am considering adding a Wrapper page, and copy + paste that thread into here. It would be much easier than constntly having to find the thread (I&#039;m not sure how it didn&#039;t get sticky). I am busy compiling the page now, so that&#039;ll get done. I think it will be too long to put in examples or udf&#039;s.&lt;br /&gt;
&lt;br /&gt;
: There is already a wrapper page created and maintained by Valuater: http://www.autoitscript.com/forum/index.php?showtopic=19370 . It would be good to have that ported to the Wiki. Oh, and please sign your posts with four tilde (~) signs. [[User:Manadar|Manadar]] 11:02, 28 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Article management ==&lt;br /&gt;
&lt;br /&gt;
Adjusted the Delete template a bit. So a optional reason can be added to the Delete tag (see doc: [[Template:Delete]]).  Also added a auto category to it ([[:Category:Candidates for deletion]]) for easier management by admins. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 23:34, 8 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Wiki headers (Jaberwocky6669) ==&lt;br /&gt;
&lt;br /&gt;
Just in case. Wiki headers are not just text headers, but also serve as edit blocks. Or: Two or more users can edit the same page without conflicts when they all are editing a different section. (they are also useful as additional edit description when only editing a header/section instead of the whole page.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:12, 9 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
Is this a response to some question I had forgotten about?  [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 20:31, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:No. It was in responds to this [http://www.autoitscript.com/w/index.php?title=SciTE4AutoIt3&amp;amp;diff=prev&amp;amp;oldid=10877 this] edit. Was just wondering if you already knew those facts about headers. (You can delete this section, as its just a informational note.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 21:17, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
I see.  Thanks for the heads up and I&#039;ll keep that in mind. [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 00:27, 11 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Forum links ==&lt;br /&gt;
&lt;br /&gt;
Looked at normalizing all forum links on some wiki page. But it turns out that there are more ways than I initially expected. (intended to remove addition forum topic title part from links, but that seems not needed.)&lt;br /&gt;
:The following ways all work.&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;&lt;br /&gt;
*../forum/index.php?findpost=&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for post that are not the first in a topic)&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for keeping the related topic number with the post-link.)&lt;br /&gt;
*../forum/topic/&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;-/#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (note the lonely &#039;-&#039; character. That&#039;s the only part that&#039;s needed. The rest of what would be the topic title text is ignored.)&lt;br /&gt;
Rendering the title part on forum links down to additional, none critical, information (edit mode).&amp;lt;br&amp;gt;&lt;br /&gt;
Personally favor the two first one&#039;s (as general standard). But there is no real/direct need for any change.&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:39, 15 December 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11563</id>
		<title>AutoIt Wiki talk:Community portal</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11563"/>
		<updated>2013-01-21T15:01:39Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Targeted for termination: Function_list pages */ cleanup (cleared), Conversion was implemented.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Homepage talk page ==&lt;br /&gt;
&lt;br /&gt;
== FAQ, Cookbook, Examples ==&lt;br /&gt;
&lt;br /&gt;
Provide one centralised area with a list of examples instead of three separate places where questions are answered on the front page. Preferably categorized like the cookbook is at the moment.&lt;br /&gt;
[[User:Manadar|Manadar]] 11:49, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:http://www.autoitscript.com/autoit3/docs/history.htm [[User:Manadar|Manadar]] 13:33, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I put it on the main page. The old page can be seen here: [[http://www.autoitscript.com/w/index.php?title=Main_Page&amp;amp;oldid=8084]] [[User:Manadar|Manadar]] 16:15, 17 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== mdiesel wrapper ==&lt;br /&gt;
&lt;br /&gt;
I am considering adding a Wrapper page, and copy + paste that thread into here. It would be much easier than constntly having to find the thread (I&#039;m not sure how it didn&#039;t get sticky). I am busy compiling the page now, so that&#039;ll get done. I think it will be too long to put in examples or udf&#039;s.&lt;br /&gt;
&lt;br /&gt;
: There is already a wrapper page created and maintained by Valuater: http://www.autoitscript.com/forum/index.php?showtopic=19370 . It would be good to have that ported to the Wiki. Oh, and please sign your posts with four tilde (~) signs. [[User:Manadar|Manadar]] 11:02, 28 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Article management ==&lt;br /&gt;
&lt;br /&gt;
Adjusted the Delete template a bit. So a optional reason can be added to the Delete tag (see doc: [[Template:Delete]]).  Also added a auto category to it ([[:Category:Candidates for deletion]]) for easier management by admins. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 23:34, 8 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Wiki headers (Jaberwocky6669) ==&lt;br /&gt;
&lt;br /&gt;
Just in case. Wiki headers are not just text headers, but also serve as edit blocks. Or: Two or more users can edit the same page without conflicts when they all are editing a different section. (they are also useful as additional edit description when only editing a header/section instead of the whole page.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:12, 9 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
Is this a response to some question I had forgotten about?  [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 20:31, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:No. It was in responds to this [http://www.autoitscript.com/w/index.php?title=SciTE4AutoIt3&amp;amp;diff=prev&amp;amp;oldid=10877 this] edit. Was just wondering if you already knew those facts about headers. (You can delete this section, as its just a informational note.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 21:17, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
I see.  Thanks for the heads up and I&#039;ll keep that in mind. [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 00:27, 11 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Forum links ==&lt;br /&gt;
&lt;br /&gt;
Looked at normalizing all forum links on some wiki page. But it turns out that there are more ways than I initially expected. (intended to remove addition forum topic title part from links, but that seems not needed.)&lt;br /&gt;
:The following ways all work.&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;&lt;br /&gt;
*../forum/index.php?findpost=&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for post that are not the first in a topic)&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for keeping the related topic number with the post-link.)&lt;br /&gt;
*../forum/topic/&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;-/#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (note the lonely &#039;-&#039; character. That&#039;s the only part that&#039;s needed. The rest of what would be the topic title text is ignored.)&lt;br /&gt;
Rendering the title part on forum links down to additional, none critical, information (edit mode).&amp;lt;br&amp;gt;&lt;br /&gt;
Personally favor the two first one&#039;s (as general standard). But there is no real/direct need for any change.&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:39, 15 December 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Talk:Function_list&amp;diff=11562</id>
		<title>Talk:Function list</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Talk:Function_list&amp;diff=11562"/>
		<updated>2013-01-21T14:56:19Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Link convertion */ cleanup (cleared), Conversion was implemented.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (Old question) ==&lt;br /&gt;
&lt;br /&gt;
This page appears to be a direct copy of the doc page. I&#039;d like to organize these items by categories like &amp;quot;math&amp;quot;, &amp;quot;IO&amp;quot;, and &amp;quot;UI&amp;quot; in order to improve searching for a specific function. Is there any opposition to this? [[User:Mythobeast|Mythobeast]] 05:17, 30 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki:Community_portal&amp;diff=11561</id>
		<title>AutoIt Wiki:Community portal</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki:Community_portal&amp;diff=11561"/>
		<updated>2013-01-21T14:46:55Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Current Category Tree. */ update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;General AutoIt Wiki Info page.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;(Use [[AutoIt_Wiki_talk:Community_portal|Community portal discussion]] page for general AutoIt Wiki talk)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== General Wiki Stuff ==&lt;br /&gt;
&lt;br /&gt;
For general wiki information see [http://www.mediawiki.org/wiki/Help:Contents MediaWiki Help].&lt;br /&gt;
&lt;br /&gt;
When writing personal text (generally on Talk pages), don&#039;t forget to add a [http://www.mediawiki.org/wiki/Help:Signatures signature] to your comment.&lt;br /&gt;
&lt;br /&gt;
When not needed, don&#039;t load the whole page for an edit, but use the section edit feature when available. (add&#039;s the section header to your edit reason. Making it easier for others to see whats going on.)&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== General AutoIt Wiki Stuff ==&lt;br /&gt;
&lt;br /&gt;
When posting AutoIt code see [[Posting_Code]] for how to apply syntax highlighting to it.&lt;br /&gt;
&lt;br /&gt;
General page Tagging. ...&lt;br /&gt;
* Stub: ... &amp;lt;nowiki&amp;gt;{{Stub}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Work in progress: ... &amp;lt;nowiki&amp;gt;{{WIP}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Delete (nomination): ... &amp;lt;nowiki&amp;gt;{{Delete}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Category Tree. ==&lt;br /&gt;
&lt;br /&gt;
[[Special:Categories]]&lt;br /&gt;
&lt;br /&gt;
*Contents&lt;br /&gt;
**AutoIt Wiki&lt;br /&gt;
**Snippets&lt;br /&gt;
**Tutorials&lt;br /&gt;
**Samples&lt;br /&gt;
**SciTE&lt;br /&gt;
**UDF&lt;br /&gt;
**Wiki Management&lt;br /&gt;
***Candidates for deletion&lt;br /&gt;
***Stub&lt;br /&gt;
***Templates&lt;br /&gt;
***Work in progress&lt;br /&gt;
&lt;br /&gt;
*OutlookEX UDF&lt;br /&gt;
&lt;br /&gt;
*Computer Science series‏‎&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#88F&amp;quot;&amp;gt;&amp;lt;sub&amp;gt;Jan 2013&amp;lt;/sub&amp;gt;&amp;lt;/font&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_Meeting_Item&amp;diff=11558</id>
		<title>OutlookEX UDF - Meeting Item</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_Meeting_Item&amp;diff=11558"/>
		<updated>2013-01-21T12:58:16Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: +Category:OutlookEX_UDF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OutlookEX_UDF]]{{WIP}}&lt;br /&gt;
Here you&#039;ll find detailed description if you work with Meeting items. &lt;br /&gt;
== Wrapper functions ==&lt;br /&gt;
The following functions are &amp;quot;&#039;&#039;wrappers&#039;&#039;&amp;quot; that combine multiple function calls to mimic functions available in the &amp;quot;&#039;&#039;original&#039;&#039;&amp;quot; Outlook UDF.&amp;lt;br /&amp;gt;&lt;br /&gt;
This should make your scripts a bit shorter and live a bit easier.&lt;br /&gt;
=== CreateAppointment ===&lt;br /&gt;
The wrapper function &#039;&#039;CreateAppointment&#039;&#039; allows to create an appointment, setting subject, body, start and end date, duration, location, reminder, recurrence information etc. in one go. This wrapper function mimics the function of &#039;&#039;_OutlookCreateAppointment&#039;&#039; of the original UDF.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;OutlookEx.au3&amp;gt;&lt;br /&gt;
$oOL = _OL_Open()&lt;br /&gt;
Global $sStart = StringLeft(_Nowcalc(),16)&lt;br /&gt;
Global $sEnd   = StringLeft(_DateAdd(&amp;quot;h&amp;quot;, 3, _NowCalc()), 16)&lt;br /&gt;
_OL_Wrapper_CreateAppointment($oOutlook, &amp;quot;Test Appointment&amp;quot;, $sStart, $sEnd, &amp;quot;My office&amp;quot;, False, &amp;quot;Testbody&amp;quot;, _&lt;br /&gt;
    15, $olBusy, $olImportanceHigh, $olPrivate, $olRecursWeekly, $sStart, _DateAdd(&amp;quot;w&amp;quot;, 3, $sEnd), 1)&lt;br /&gt;
_OL_Close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates an appointment and sets subject, start and end date/time of the first occurence, location, body, importance, sensitivity, recurrence type to weekly and end of recurrence to 3 weeks later.&lt;br /&gt;
&lt;br /&gt;
== Tips &amp;amp; Tricks ==&lt;br /&gt;
=== Send a meeting invitation ===&lt;br /&gt;
Set property &#039;&#039;MeetingStatus&#039;&#039; to value &#039;1&#039; (the meeting has been scheduled) and send the item to the attendees.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;OutlookEx.au3&amp;gt;&lt;br /&gt;
; Open the connection to Outlook&lt;br /&gt;
Global $oOL = _OL_Open()&lt;br /&gt;
; Create an appointment and set some properties&lt;br /&gt;
$oItem = _OL_ItemCreate($oOutlook, $olAppointmentItem, &amp;quot;*\Calendar&amp;quot;, &amp;quot;&amp;quot;, _&lt;br /&gt;
  &amp;quot;Subject=Meeting&amp;quot;, &amp;quot;Start=&amp;quot; &amp;amp; _DateAdd(&amp;quot;D&amp;quot;, 3, _NowCalcDate() &amp;amp; &amp;quot; 08:00:00&amp;quot;), &amp;quot;Duration=60&amp;quot;, _&lt;br /&gt;
  &amp;quot;Location=Building A, Room 10&amp;quot;, &amp;quot;RequiredAttendees=&amp;lt;Name Firstname&amp;gt;&amp;quot;, &amp;quot;MeetingStatus=1&amp;quot;)&lt;br /&gt;
; Send the meeting request&lt;br /&gt;
_OL_ItemSend($oOL, $oItem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates an appointment in the senders calendar and sends a meeting request to attendee &amp;lt;Name Firstname&amp;gt;. The meeting starts in 3 days from today at eight o&#039;clock and lasts an hour.&lt;br /&gt;
&lt;br /&gt;
=== Cancel a meeting and send cancel requests to the attendees ===&lt;br /&gt;
Set property &#039;&#039;MeetingStatus&#039;&#039; to value &#039;5&#039; (the scheduled meeting has been cancelled) and re-send the item to the attendees.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;OutlookEx.au3&amp;gt;&lt;br /&gt;
; Open the connection to Outlook&lt;br /&gt;
Global $oOL = _OL_Open()&lt;br /&gt;
; Get the appointment you want to cancel&lt;br /&gt;
$aResult = _OL_ItemFind($oOL, &amp;quot;*\Calendar&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;[Subject]=&#039;Meeting&#039;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;EntryID&amp;quot;)&lt;br /&gt;
$oItem = _OL_ItemModify($oOL, $aResult[1][0], Default, &amp;quot;MeetingStatus=5&amp;quot;)&lt;br /&gt;
; Send the meeting request&lt;br /&gt;
_OL_ItemSend($oOL, $oItem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This removes the appointment from the senders calendar and sends a cancel request to every attendee.&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_Mail_Item&amp;diff=11557</id>
		<title>OutlookEX UDF - Mail Item</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_Mail_Item&amp;diff=11557"/>
		<updated>2013-01-21T12:58:07Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: +Category:OutlookEX_UDF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OutlookEX_UDF]]&lt;br /&gt;
Here you&#039;ll find detailed description if you work with Mail items. &lt;br /&gt;
== Wrapper functions ==&lt;br /&gt;
The following functions are &amp;quot;&#039;&#039;wrappers&#039;&#039;&amp;quot; that combine multiple function calls to mimic functions available in the &amp;quot;&#039;&#039;original&#039;&#039;&amp;quot; Outlook UDF.&amp;lt;br /&amp;gt;&lt;br /&gt;
This should make your scripts a bit shorter and live a bit easier.&lt;br /&gt;
=== SendMail ===&lt;br /&gt;
The wrapper function &#039;&#039;_OL_Wrapper_SendMail&#039;&#039; allows to send a mail to multiple recipients (&#039;&#039;To&#039;&#039;, &#039;&#039;Cc&#039;&#039; and &#039;&#039;BCc&#039;&#039;), add attachments, set some properties and send the mail in one go. The body can either be normal text or html. This wrapper function mimics the function of &#039;&#039;_OutlookSendMail&#039;&#039; of the original UDF.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;OutlookEx.au3&amp;gt;&lt;br /&gt;
$oOL = _OL_Open()&lt;br /&gt;
_OL_Wrapper_SendMail($oOL, &amp;quot;John Doe&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Testmail&amp;quot;, &amp;quot;&amp;amp;lt;b&amp;gt;Test&amp;amp;lt;/b&amp;gt;&amp;quot;, &amp;quot;&amp;quot;, $olFormatHTML, $olImportanceHigh)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sends a mail to &#039;John Doe&#039; with Subject &#039;Testmail&#039;, body as HTML and high importance.&lt;br /&gt;
&lt;br /&gt;
== Tips &amp;amp; Tricks ==&lt;br /&gt;
=== Send a mail on behalf of another user ===&lt;br /&gt;
Set property &#039;&#039;SentOnBehalfOfName&#039;&#039; to the displayname of the intended sender.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;OutlookEx.au3&amp;gt;&lt;br /&gt;
; Open the connection to Outlook&lt;br /&gt;
Global $oOL = _OL_Open()&lt;br /&gt;
; Create a mail item and set some properties&lt;br /&gt;
Global $oItem = _OL_ItemCreate($oOL, $olMailItem, &amp;quot;*\Outlook-UDF-Test\TargetFolder\Mail&amp;quot;, &amp;quot;&amp;quot;, _&lt;br /&gt;
  &amp;quot;Subject=TestMail&amp;quot;, &amp;quot;BodyFormat=&amp;quot; &amp;amp; $olFormatHTML, &amp;quot;HTMLBody=Bodytext in &amp;amp;lt;b&amp;gt;Test&amp;amp;lt;/b&amp;gt;.&amp;quot;, &amp;quot;SentOnBehalfOfName=Doe Jane&amp;quot;)&lt;br /&gt;
; Add a recipient and resolve it&lt;br /&gt;
_OL_ItemRecipientAdd($oOL, $oItem, Default, $olTo, &amp;quot;Doe John&amp;quot;)&lt;br /&gt;
; Send the mail&lt;br /&gt;
_OL_ItemSend($oOL, $oItem)&lt;br /&gt;
If @extended = -2147352567 Then _&lt;br /&gt;
  MsgBox(16, &amp;quot;OutlookEX UDF - Example Script&amp;quot;, &amp;quot;You don&#039;t have permission to send the mail on behalf of the specified person!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates a mail in your folder &#039;&#039;Outlook-UDF-Test\TargetFolder\Mail&#039;&#039;, recipient is &#039;&#039;John Doe&#039;&#039;, subject is &#039;&#039;Testmail&#039;&#039;, body as HTML. &#039;&#039;SentOnBehalfOfName&#039;&#039; is set to the displayname of the sender (&#039;&#039;Jane Doe&#039;&#039;).&lt;br /&gt;
The mail is sent and the extended error code is checked if you have the required permissions.&lt;br /&gt;
&lt;br /&gt;
=== Delay the sending of a mail ===&lt;br /&gt;
Set property &#039;&#039;DeferredDeliveryTime&#039;&#039; to date and time when the mail is to be delivered.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;OutlookEx.au3&amp;gt;&lt;br /&gt;
; Open the connection to Outlook&lt;br /&gt;
Global $oOL = _OL_Open()&lt;br /&gt;
; Create a mail item and set some properties&lt;br /&gt;
Global $oItem = _OL_ItemCreate($oOL, $olMailItem, &amp;quot;*\Outlook-UDF-Test\TargetFolder\Mail&amp;quot;, &amp;quot;&amp;quot;, _&lt;br /&gt;
  &amp;quot;Subject=TestMail&amp;quot;, &amp;quot;BodyFormat=&amp;quot; &amp;amp; $olFormatHTML, &amp;quot;HTMLBody=Bodytext in &amp;amp;lt;b&amp;gt;Test&amp;amp;lt;/b&amp;gt;.&amp;quot;, _&lt;br /&gt;
  &amp;quot;DeferredDeliveryTime=2017/03/18 18:01:00&amp;quot;)&lt;br /&gt;
; Add a recipient and resolve it&lt;br /&gt;
_OL_ItemRecipientAdd($oOL, $oItem, Default, $olTo, &amp;quot;Doe John&amp;quot;)&lt;br /&gt;
; Send the mail&lt;br /&gt;
_OL_ItemSend($oOL, $oItem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates a mail in your folder &#039;&#039;Outlook-UDF-Test\TargetFolder\Mail&#039;&#039;, recipient is &#039;&#039;John Doe&#039;&#039;, subject is &#039;&#039;Testmail&#039;&#039;, body as HTML. &#039;&#039;DeferredDeliveryTime&#039;&#039; is set to &#039;&#039;2017/03/18 18:01:00&#039;&#039;.&lt;br /&gt;
The mail is sent by Outlook but transmission is deferred by the Exchange server until the specified date/time has been reached.&lt;br /&gt;
&lt;br /&gt;
=== Send a mail or reply to a mail with a signature ===&lt;br /&gt;
Outlook allows to add a signature when a new mail or a reply to a mail is created. The following steps are needed:&lt;br /&gt;
* Create a signature to be added to new or reply to mails. This can be done manually with Outlook or using function _OL_MailSignatureCreate&lt;br /&gt;
* Set a signature as the one to be used when a new mail or a reply to mail is created. This can be done manually with Outlook or using function _OL_MailSignatureSet&lt;br /&gt;
* Create the new or reply to mail. The signature is created immediately by Outlook before any other text is added to the body&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can&#039;t use functions _OL_ItemCreate and _OL_Wrapper_SendMail to set the body of the mail. Because the functions just set the body property the signature will be overwritten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Don&#039;t use &#039;&#039;_OL_Wrapper_SendMail&#039;&#039;. There is no solution for this function.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Create the mail, retrieve the body (which now only consists of the signature), add the mail text and set the body property again.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;OutlookEX.au3&amp;gt;&lt;br /&gt;
Global $oOutlook = _OL_Open()&lt;br /&gt;
;===========&lt;br /&gt;
; Plain Text&lt;br /&gt;
;===========&lt;br /&gt;
$oItem = _OL_ItemCreate($oOutlook, $olMailItem, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Subject=Subject for BodyFormat=Plain Text&amp;quot;)&lt;br /&gt;
$oItem.BodyFormat = $olFormatPlain&lt;br /&gt;
$oItem.GetInspector&lt;br /&gt;
$sBody = $oItem.Body&lt;br /&gt;
$oItem.Body = &amp;quot;Text: Mail Text&amp;quot; &amp;amp; $sBody&lt;br /&gt;
$oItem.Display&lt;br /&gt;
&lt;br /&gt;
;=====&lt;br /&gt;
; HTML&lt;br /&gt;
;=====&lt;br /&gt;
$oItem = _OL_ItemCreate($oOutlook, $olMailItem, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Subject=Subject for BodyFormat=HTML&amp;quot;)&lt;br /&gt;
$oItem.BodyFormat = $olFormatHTML&lt;br /&gt;
$oItem.GetInspector&lt;br /&gt;
$sBody = $oItem.HTMLBody&lt;br /&gt;
$oItem.HTMLBody = &amp;quot;HTML: &amp;lt;b&amp;gt;Mail&amp;lt;/b&amp;gt; Text&amp;quot; &amp;amp; $sBody&lt;br /&gt;
$oItem.Display&lt;br /&gt;
&lt;br /&gt;
;==========&lt;br /&gt;
; Rich Text&lt;br /&gt;
;==========&lt;br /&gt;
$oItem = _OL_ItemCreate($oOutlook, $olMailItem, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Subject=Subject for BodyFormat=RTF&amp;quot;)&lt;br /&gt;
$oItem.BodyFormat = $olFormatRichText&lt;br /&gt;
$oItem.GetInspector&lt;br /&gt;
$sBody = $oItem.HTMLBody&lt;br /&gt;
$oItem.HTMLBody = &amp;quot;RTF: &amp;lt;b&amp;gt;Mail&amp;lt;/b&amp;gt; Text&amp;quot; &amp;amp; $sBody&lt;br /&gt;
$oItem.Display&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_Forward_Items&amp;diff=11556</id>
		<title>OutlookEX UDF - Forward Items</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_Forward_Items&amp;diff=11556"/>
		<updated>2013-01-21T12:58:01Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: +Category:OutlookEX_UDF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OutlookEX_UDF]]&lt;br /&gt;
Here you&#039;ll find detailed information on how to forward items to other recipients. &lt;br /&gt;
== Function _OL_ItemForward ==&lt;br /&gt;
Creates a copy of the specified item (contacts, appointments ...) which then can be forwarded to other recipients.&amp;lt;br&amp;gt;&lt;br /&gt;
You have to add recipients to this copy of the item (function _OL_ItemRecipientAdd) and then have to use function _OL_ItemdSend to actually send (forward) the item.&amp;lt;br&amp;gt;&lt;br /&gt;
If you like you can add some additional text before you forward the item.&lt;br /&gt;
== Example ==&lt;br /&gt;
This example gets a list of unread mails in the inbox and forwards them to recipient &amp;quot;John.Doe@company.com&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Include Functions&lt;br /&gt;
#include &amp;lt;OutlookEX.au3&amp;gt;&lt;br /&gt;
Global $oForward, $sRecipient = &amp;quot;John.Doe@company.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; Connect to Outlook&lt;br /&gt;
Global $oOutlook = _OL_Open()&lt;br /&gt;
If @error &amp;lt;&amp;gt; 0 Then Exit MsgBox(16, &amp;quot;Connect to Outlook&amp;quot;, &amp;quot;Error connecting to Outlook. @error = &amp;quot; &amp;amp; @error &amp;amp; &amp;quot;, @extended = &amp;quot; &amp;amp; @extended)&lt;br /&gt;
&lt;br /&gt;
; Access correct mailbox&lt;br /&gt;
Global $aFolder = _OL_FolderAccess($oOutlook, &amp;quot;\\Correct Mailbox\Inbox&amp;quot;, $olFolderInbox)&lt;br /&gt;
If @error &amp;lt;&amp;gt; 0 Then Exit MsgBox(16, &amp;quot;Folder access&amp;quot;, &amp;quot;Error accessing the mailbox. @error = &amp;quot; &amp;amp; @error &amp;amp; &amp;quot;, @extended = &amp;quot; &amp;amp; @extended)&lt;br /&gt;
&lt;br /&gt;
; Get unread items&lt;br /&gt;
Global $aItems = _OL_ItemFind($oOutlook, $aFolder[1], $olMail, &amp;quot;[UnRead]=True&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;EntryID,Subject,Body&amp;quot;)&lt;br /&gt;
If @error &amp;lt;&amp;gt; 0 Then Exit MsgBox(16, &amp;quot;Item find&amp;quot;, &amp;quot;Error searching for unread mail items. @error = &amp;quot; &amp;amp; @error &amp;amp; &amp;quot;, @extended = &amp;quot; &amp;amp; @extended)&lt;br /&gt;
MsgBox(0, &amp;quot;Number of unread items&amp;quot;, $aItems[0][0])&lt;br /&gt;
If $aItems[0][0] = 0 Then Exit MsgBox(16, &amp;quot;Error&amp;quot;, &amp;quot;No mail items in Correct Mailbox Inbox.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
; Forward all unread mails&lt;br /&gt;
For $i = 1 To $aItems[0][0]&lt;br /&gt;
    $oForward = _OL_ItemForward($oOutlook, $aItems[$i][0], Default, &amp;quot;&amp;quot;) ; Create a copy of the item to forward&lt;br /&gt;
    If @error &amp;lt;&amp;gt; 0 Then Exit MsgBox(16, &amp;quot;Item forward&amp;quot;, &amp;quot;Error creating an item copy to forward. @error = &amp;quot; &amp;amp; @error &amp;amp; &amp;quot;, @extended = &amp;quot; &amp;amp; @extended)&lt;br /&gt;
    _OL_ItemRecipientAdd($oOutlook, $oForward, Default, $olTo, $sRecipient) ; Add recipient&lt;br /&gt;
    If @error &amp;lt;&amp;gt; 0 Then Exit MsgBox(16, &amp;quot;Recipient add&amp;quot;, &amp;quot;Error adding a recipient to the mail item. @error = &amp;quot; &amp;amp; @error &amp;amp; &amp;quot;, @extended = &amp;quot; &amp;amp; @extended)&lt;br /&gt;
    _OL_ItemSend($oOutlook, $oForward) ; Send the item to the recipient&lt;br /&gt;
    If @error &amp;lt;&amp;gt; 0 Then Exit MsgBox(16, &amp;quot;Item send&amp;quot;, &amp;quot;Error sending the mail item. @error = &amp;quot; &amp;amp; @error &amp;amp; &amp;quot;, @extended = &amp;quot; &amp;amp; @extended)&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
; Close connection to Outlook&lt;br /&gt;
_OL_Close($oOutlook)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_Find_Items&amp;diff=11555</id>
		<title>OutlookEX UDF - Find Items</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_Find_Items&amp;diff=11555"/>
		<updated>2013-01-21T12:57:54Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: +Category:OutlookEX_UDF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OutlookEX_UDF]]&lt;br /&gt;
Here you&#039;ll find detailed information on how to find items which then can be processed by further functions. &lt;br /&gt;
== Function _OL_ItemFind ==&lt;br /&gt;
Finds items (contacts, appointments ...) in the specified folder (and - optional - any subfolder) and returns the requested properties of the found items in an array.&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
The following parameters define what is searched for and what properties are returned by the function:&lt;br /&gt;
&lt;br /&gt;
;$oOL&lt;br /&gt;
:Outlook object returned by a preceding call to _OL_Open()&lt;br /&gt;
&lt;br /&gt;
;$oOL_Folder&lt;br /&gt;
:Folder object as returned by _OL_FolderAccess or full name of folder where the search will be started. If you want to search a default folder you have to specify the folder object.&lt;br /&gt;
&lt;br /&gt;
;$iOL_ObjectClass (Optional)&lt;br /&gt;
:Class of items to search for. Defined by the Outlook OlObjectClass enumeration (default = $olContact). Examples:&lt;br /&gt;
:&#039;&#039;$olAppointment&#039;&#039; - Represents an AppointmentItem object&lt;br /&gt;
:&#039;&#039;$olContact&#039;&#039; - Represents a ContactItem object&lt;br /&gt;
:&#039;&#039;$olMail&#039;&#039; - Represents a MailItem object&lt;br /&gt;
:&#039;&#039;$olTask&#039;&#039; - Represents a TaskItem object&lt;br /&gt;
&lt;br /&gt;
;$sOL_Restrict (Optional)&lt;br /&gt;
:Filter text to restrict number of items returned (exact match). Can be combined with $sOL_SearchName/$sOL_Search. The filter can be a Jet query or a DASL query with the @SQL= prefix (which isn&#039;t described here). &lt;br /&gt;
:Jet query language syntax:&lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;Restrict filter:&#039;&#039;  Filter LogicalOperator Filter ...&lt;br /&gt;
::&#039;&#039;LogicalOperator:&#039;&#039;  And, Or, Not. Use ( and ) to change the processing order&lt;br /&gt;
::&#039;&#039;Filter:&#039;&#039;           &amp;quot;[property] operator &#039;value&#039;&amp;quot; or &#039;[property] operator &amp;quot;value&amp;quot;&#039;&lt;br /&gt;
::&#039;&#039;Operator:&#039;&#039;         &amp;lt;, &amp;gt;, &amp;lt;=, &amp;gt;=, &amp;lt;&amp;gt;, =&lt;br /&gt;
::&#039;&#039;Example:&#039;&#039;          &amp;quot;[Start]=&#039;2011-02-21 08:00&#039; And [End]=&#039;2011-02-21 10:00&#039; And [Subject]=&#039;Test&#039;&amp;quot;&lt;br /&gt;
::See: http://msdn.microsoft.com/en-us/library/cc513841.aspx - &amp;quot;Searching Outlook Data&amp;quot; or http://msdn.microsoft.com/en-us/library/bb220369(v=office.12).aspx - &amp;quot;Items.Restrict Method&amp;quot;&lt;br /&gt;
:&amp;lt;b&amp;gt;N.B.:&amp;lt;/b&amp;gt;&lt;br /&gt;
:Pass time as HH:MM, HH:MM:SS is invalid and returns no result.&lt;br /&gt;
:Some properties can&#039;t be used in a filter (e.g. Body, Categories, HTMLBody) and will cause an error. Please check the &amp;quot;Items.Restrict Method&amp;quot; link above.&lt;br /&gt;
&lt;br /&gt;
;$sOL_SearchName (Optional)&lt;br /&gt;
:Specify the name of a single property to be searched for the value specified by $sOL_SearchValue (partial match). Can be combined with $sOL_Restrict.&lt;br /&gt;
:Be sure to specify the property in correct case e.g. &amp;quot;FirstName&amp;quot; is valid, &amp;quot;Firstname&amp;quot; is invalid.&lt;br /&gt;
&lt;br /&gt;
;$sOL_SearchValue (Optional)&lt;br /&gt;
:String value to search for. All items are returned where the string can be found at any position of the property e.g. if property &amp;quot;Subject&amp;quot; has the value of &amp;quot;This is a test&amp;quot; then the item will be found if $sOL_SearchValue is &amp;quot;This&amp;quot; or &amp;quot;is a&amp;quot; or &amp;quot;test&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
;$sOL_ReturnProperties (Optional)&lt;br /&gt;
:Comma separated list of properties to return (default = depending on $iOL_ObjectClass). Be sure to specify the properties in correct case e.g. &amp;quot;FirstName&amp;quot; is valid, &amp;quot;Firstname&amp;quot; is invalid.&lt;br /&gt;
&lt;br /&gt;
;$sOL_Sort (Optional)&lt;br /&gt;
:The name of the property by which to sort, which may be enclosed in brackets, for example, &amp;quot;[CompanyName]&amp;quot;. User-defined properties that contain spaces must be enclosed in brackets. After the property the   optional string &amp;quot;True&amp;quot; to sort descending (default = None) might follow. E.g. &amp;quot;[Subject], True&amp;quot; sorts the result descending on the subject.&lt;br /&gt;
&lt;br /&gt;
;$fOL_Flags (Optional)&lt;br /&gt;
:Flags to set different processing options. Can be a combination of the following:&lt;br /&gt;
:&#039;&#039;1&#039;&#039; - Subfolders will be included&lt;br /&gt;
:&#039;&#039;2&#039;&#039; - Row 1 contains column headings. Therefore the number of rows/columns in the table has to be calculated using UBound&lt;br /&gt;
:&#039;&#039;4&#039;&#039; - Just return the number of records. You don&#039;t get an array, just a single integer denoting the total number of records found&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_General&amp;diff=11554</id>
		<title>OutlookEX UDF - General</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=OutlookEX_UDF_-_General&amp;diff=11554"/>
		<updated>2013-01-21T12:57:45Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: +Category:OutlookEX_UDF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OutlookEX_UDF]]{{WIP}}&lt;br /&gt;
&lt;br /&gt;
The OutlookEX UDF offers functions to control and manipulate Microsoft Outlook. This page describes the OutlookEX UDF in general.&lt;br /&gt;
== Concept ==&lt;br /&gt;
The OutlokEX UDF is based upon this concept:&lt;br /&gt;
&lt;br /&gt;
* Every item in Outlook is uniquely identified by EntryID and StoreID. The default StoreID is your inbox&lt;br /&gt;
* Every item has properties to describe the item (subject, startdate ..) and methods to act upon the item (move, delete …)&lt;br /&gt;
* It does not matter where an item is stored. You can access any folder and get/create/modify items there&lt;br /&gt;
* The search and action functions are now separated. As an example the user first searches for the items to be deleted and then calls the delete function&lt;br /&gt;
* The UDF was designed to be as modular as possible. E.g. there is a single function to create an item, be it a mail item, contact item or whatever&lt;br /&gt;
* The number of properties you can pass to most functions is not limited by the number of parameters defined for the function. Properties can be passed as parameters (up to 10) or in an unlimited array as parameter 1&lt;br /&gt;
* The UDF allows to access all kind of folders (see the following listing). Folders can be passed to a function by name or as an object&lt;br /&gt;
&lt;br /&gt;
The UDF contains two sets of functions:&lt;br /&gt;
* One to control and manipulate the items in an Exchange Store or PST archive&lt;br /&gt;
* One to control and manipulate the Outlook GUI&lt;br /&gt;
&lt;br /&gt;
== Folders ==&lt;br /&gt;
It does not matter where an item is stored. You can access any folder and get/create/modify items there.&lt;br /&gt;
&lt;br /&gt;
Folders you can access:&lt;br /&gt;
                                &lt;br /&gt;
{| style=&amp;quot;border: 1px solid darkgray&amp;quot; cellspacing=0 cellpadding=5px&lt;br /&gt;
|- &lt;br /&gt;
! style=&amp;quot;border: 1px solid darkgray&amp;quot; | Syntax&lt;br /&gt;
! style=&amp;quot;border: 1px solid darkgray&amp;quot; | Folder you access&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | &amp;quot;rootfolder\subfolder\...\subfolder&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | any public folder or any folder of the current user (replace rootfolder with * to access the root folder of your mailbox)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | &amp;quot;\\firstname name&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | default folder of another user (class specified by $iOL_FolderType) (replace &amp;quot;firstname name&amp;quot; with &amp;quot;*&amp;quot; to access your mailbox)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | &amp;quot;\\firstname name\\subfolder\...\subfolder&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | subfolder of the default folder of another user (class specified by $iOL_FolderType)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | &amp;quot;\\firstname name\subfolder\..\subfolder&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | subfolder of another user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | &amp;quot;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | default folder of the current user (class specified by $iOL_FolderType)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | &amp;quot;\subfolder&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid darkgray&amp;quot; | subfolder of the default folder of the current user (class specified by $iOL_FolderType)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Supported Version ==&lt;br /&gt;
The OutlookEX UDF has been tested with Outlook 2002 on Windows XP SP3 and Outlook 2010 on Windows 7 SP1.&lt;br /&gt;
== Naming pattern ==&lt;br /&gt;
If a method can be used for more than one item type (e.g. mail, calendar and notes) the function is called _OL_ItemXXX else the function is called _OL_CalendarXXX&lt;br /&gt;
&lt;br /&gt;
== Outlook security ==&lt;br /&gt;
[[File:outlook_security_warning_1.gif|frame|alt=Outlook Security Warning|Outlook Security Warning]]&lt;br /&gt;
Some Outlook objects (address book, mail items ...) including their properties and methods are protected by security settings. &lt;br /&gt;
Accessing such objects makes the Outlook Object Model Guard present a popup warning like &amp;quot;a program is trying to access your Address book or Contacts&amp;quot; or &amp;quot;a program is trying to access e-mail addresses you have stored in Outlook...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A small function (&#039;&#039;_OL_Warnings.au3&#039;&#039;), which has to be compiled and run separately, clicks away all Outlook Security Warnings. Setting parameter &#039;&#039;$fOL_WarningClick&#039;&#039; to &#039;&#039;True&#039;&#039; when you call function &#039;&#039;_OL_Open()&#039;&#039; runs the &#039;&#039;_OL_Warnings.exe&#039;&#039;.&lt;br /&gt;
The &#039;&#039;_OL_Warnings.exe&#039;&#039; stays active and clicks away all warnings until the calling script is ended.&lt;br /&gt;
&lt;br /&gt;
It&#039;s written for an english language environment but can easily be adopted to other languages.&lt;br /&gt;
== Wrapper functions ==&lt;br /&gt;
To make transition from the original Outlook UDF to the new OutlookEX UDF a bit smoother, &#039;&#039;wrapper&#039;&#039; functions that mimic functions of the original UDF have been implemented in the new UDF.&lt;br /&gt;
Number and position of the parameters have been left untouched as far as possible. E.G. &#039;&#039;_OutlookSendMail&#039;&#039; of the original UDF has become &#039;&#039;_OL_Wrapper_SendMail&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;wrapper&#039;&#039; function names are prefixed with &#039;&#039;_OL_Wrapper_&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
However, the message does not apper if a valid Anti-Virus is installed.&lt;br /&gt;
&lt;br /&gt;
== Call a function ==&lt;br /&gt;
Some functions need to accept a lot of parameters when a user needs to set many properties of an item. Let&#039;s say you want to create a mail item and pass subject, bodyformat, body and importance to the _OL_ItemCreate function.&lt;br /&gt;
Most functions accept up to 10 properties as parameters or an unlimited number of properties as a zero based one-dimensional array.&lt;br /&gt;
&lt;br /&gt;
This two examples are equivalent:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$oItem = _OL_ItemCreate($oOutlook, $olMailItem, &amp;quot;*\Outlook-UDF-Test\TargetFolder\Mail&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Subject=TestMail&amp;quot;, &amp;quot;Importance=&amp;quot; &amp;amp; $olImportanceHigh, &amp;quot;BodyFormat=&amp;quot; &amp;amp; $olFormatHTML, _&lt;br /&gt;
         &amp;quot;HTMLBody=Bodytext in &amp;amp;lt;b&amp;gt;bold&amp;amp;lt;/b&amp;gt;&amp;lt;img src=&#039;cid:The_Outlook.jpg&#039;&amp;gt;Embedded image.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $aProperties[100] = [&amp;quot;Subject=TestMail&amp;quot;, &amp;quot;Importance=&amp;quot; &amp;amp; $olImportanceHigh, &amp;quot;BodyFormat=&amp;quot; &amp;amp; $olFormatHTML, &amp;quot;HTMLBody=Bodytext in &amp;amp;lt;b&amp;gt;bold&amp;amp;lt;/b&amp;gt;&amp;lt;img src=&#039;cid:The_Outlook.jpg&#039;&amp;gt;Embedded image.&amp;quot;]&lt;br /&gt;
$oItem = _OL_ItemCreate($oOutlook, $olMailItem, &amp;quot;*\Outlook-UDF-Test\TargetFolder\Mail&amp;quot;, &amp;quot;&amp;quot;, $aProperties)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Empty properties in the passed array are ignored.&lt;br /&gt;
&lt;br /&gt;
== Example Scripts ==&lt;br /&gt;
=== For single functions ===&lt;br /&gt;
Every function of the UDF comes with an example script (except internal functions). The example script is named like the function.&lt;br /&gt;
==== Test Environment ====&lt;br /&gt;
Every example script calls function _OL_TestEnvironment.au3. This function creates a test environment to make sure each function delivers a predictable result independant of the system it is running on and to make sure the Outlook environment of the user is left untouched.&amp;lt;br&amp;gt;&lt;br /&gt;
The test environment is created as folder &amp;quot;Outlook-UDF-Test&amp;quot; plus subfolders and multiple items in your mailbox. This folders and items are manipulated by the example scripts.&amp;lt;br&amp;gt;&lt;br /&gt;
_OL_TestEnvironment.au3 can directly be called by the user. It then displays a GUI where the user can save some settings for the example scripts or create and delete the test environment manually.&amp;lt;br&amp;gt;The test environment is created by every example script but is not deleted after the script has ended. To remove the test environment run _OL_TestEnvironment.au3 and delete the test environment manually.&lt;br /&gt;
&lt;br /&gt;
=== Extended Examples ===&lt;br /&gt;
Example scripts which describe more than a single function of the UDF are prefixed with &#039;&#039;_OL_Example_&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Function specific pages ==&lt;br /&gt;
The following pages contain information for the functions that can be used for may different item types.&lt;br /&gt;
=== Find an Item ===&lt;br /&gt;
Further information on how to find items: [[OutlookEX UDF - Find Items]]&lt;br /&gt;
=== Forward an Item ===&lt;br /&gt;
Further information on how to forward items: [[OutlookEX UDF - Forward Items]]&lt;br /&gt;
&lt;br /&gt;
== Item specific pages ==&lt;br /&gt;
The following pages contain information for each of the Outlook item types supported by the OutlookEX UDF.&lt;br /&gt;
=== Appointment Item ===&lt;br /&gt;
Further information about wrapper functions plus tips &amp;amp; tricks for appointment items: [[OutlookEX UDF - Appointment Item]]&lt;br /&gt;
=== Mail Item ===&lt;br /&gt;
Further information about wrapper functions plus tips &amp;amp; tricks for mail items: [[OutlookEX UDF - Mail Item]]&lt;br /&gt;
=== Meeting Item ===&lt;br /&gt;
Further information about wrapper functions plus tips &amp;amp; tricks for meeting items: [[OutlookEX UDF - Meeting Item]]&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11504</id>
		<title>AutoIt Wiki talk:Community portal</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11504"/>
		<updated>2013-01-04T06:42:20Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: Undo revision 11502 by IEvKI3gv9Wrkd41u (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Homepage talk page ==&lt;br /&gt;
&lt;br /&gt;
== FAQ, Cookbook, Examples ==&lt;br /&gt;
&lt;br /&gt;
Provide one centralised area with a list of examples instead of three separate places where questions are answered on the front page. Preferably categorized like the cookbook is at the moment.&lt;br /&gt;
[[User:Manadar|Manadar]] 11:49, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:http://www.autoitscript.com/autoit3/docs/history.htm [[User:Manadar|Manadar]] 13:33, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I put it on the main page. The old page can be seen here: [[http://www.autoitscript.com/w/index.php?title=Main_Page&amp;amp;oldid=8084]] [[User:Manadar|Manadar]] 16:15, 17 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== mdiesel wrapper ==&lt;br /&gt;
&lt;br /&gt;
I am considering adding a Wrapper page, and copy + paste that thread into here. It would be much easier than constntly having to find the thread (I&#039;m not sure how it didn&#039;t get sticky). I am busy compiling the page now, so that&#039;ll get done. I think it will be too long to put in examples or udf&#039;s.&lt;br /&gt;
&lt;br /&gt;
: There is already a wrapper page created and maintained by Valuater: http://www.autoitscript.com/forum/index.php?showtopic=19370 . It would be good to have that ported to the Wiki. Oh, and please sign your posts with four tilde (~) signs. [[User:Manadar|Manadar]] 11:02, 28 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Article management ==&lt;br /&gt;
&lt;br /&gt;
Adjusted the Delete template a bit. So a optional reason can be added to the Delete tag (see doc: [[Template:Delete]]).  Also added a auto category to it ([[:Category:Candidates for deletion]]) for easier management by admins. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 23:34, 8 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Wiki headers (Jaberwocky6669) ==&lt;br /&gt;
&lt;br /&gt;
Just in case. Wiki headers are not just text headers, but also serve as edit blocks. Or: Two or more users can edit the same page without conflicts when they all are editing a different section. (they are also useful as additional edit description when only editing a header/section instead of the whole page.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:12, 9 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
Is this a response to some question I had forgotten about?  [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 20:31, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:No. It was in responds to this [http://www.autoitscript.com/w/index.php?title=SciTE4AutoIt3&amp;amp;diff=prev&amp;amp;oldid=10877 this] edit. Was just wondering if you already knew those facts about headers. (You can delete this section, as its just a informational note.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 21:17, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
I see.  Thanks for the heads up and I&#039;ll keep that in mind. [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 00:27, 11 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Targeted for termination: Function_list pages ==&lt;br /&gt;
&#039;&#039;(intended for objections or alternative usage ideas)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Due to the direct linking to the official online manual. The old [[Function_list]] sub-pages have lost there usage. As such there targeted for termination. &#039;&#039;(lets say around next weekend.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To see the function list page in its old state click [http://www.autoitscript.com/w/index.php?title=Function_list&amp;amp;oldid=11005 here].&lt;br /&gt;
&lt;br /&gt;
--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:39, 12 November 2012 (GMT)&amp;lt;hr&amp;gt;&lt;br /&gt;
:Done: Removed most Function_List pages.&lt;br /&gt;
:Done: Removed broken redirects.&lt;br /&gt;
:Done: Adjust broken links to online documentation pages. (//www.autoitscript.com/autoit3/docs/functions)&lt;br /&gt;
:todo: Last left-overs.&lt;br /&gt;
:--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 23:08, 18 November 2012 (UTC)&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&amp;lt;!-- Additional Talk(FunctionList) goose here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Forum links ==&lt;br /&gt;
&lt;br /&gt;
Looked at normalizing all forum links on some wiki page. But it turns out that there are more ways than I initially expected. (intended to remove addition forum topic title part from links, but that seems not needed.)&lt;br /&gt;
:The following ways all work.&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;&lt;br /&gt;
*../forum/index.php?findpost=&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for post that are not the first in a topic)&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for keeping the related topic number with the post-link.)&lt;br /&gt;
*../forum/topic/&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;-/#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (note the lonely &#039;-&#039; character. That&#039;s the only part that&#039;s needed. The rest of what would be the topic title text is ignored.)&lt;br /&gt;
Rendering the title part on forum links down to additional, none critical, information (edit mode).&amp;lt;br&amp;gt;&lt;br /&gt;
Personally favor the two first one&#039;s (as general standard). But there is no real/direct need for any change.&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:39, 15 December 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11502</id>
		<title>AutoIt Wiki talk:Community portal</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11502"/>
		<updated>2013-01-03T05:02:42Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* SPAM */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Homepage talk page ==&lt;br /&gt;
&lt;br /&gt;
== FAQ, Cookbook, Examples ==&lt;br /&gt;
&lt;br /&gt;
Provide one centralised area with a list of examples instead of three separate places where questions are answered on the front page. Preferably categorized like the cookbook is at the moment.&lt;br /&gt;
[[User:Manadar|Manadar]] 11:49, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:http://www.autoitscript.com/autoit3/docs/history.htm [[User:Manadar|Manadar]] 13:33, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I put it on the main page. The old page can be seen here: [[http://www.autoitscript.com/w/index.php?title=Main_Page&amp;amp;oldid=8084]] [[User:Manadar|Manadar]] 16:15, 17 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== mdiesel wrapper ==&lt;br /&gt;
&lt;br /&gt;
I am considering adding a Wrapper page, and copy + paste that thread into here. It would be much easier than constntly having to find the thread (I&#039;m not sure how it didn&#039;t get sticky). I am busy compiling the page now, so that&#039;ll get done. I think it will be too long to put in examples or udf&#039;s.&lt;br /&gt;
&lt;br /&gt;
: There is already a wrapper page created and maintained by Valuater: http://www.autoitscript.com/forum/index.php?showtopic=19370 . It would be good to have that ported to the Wiki. Oh, and please sign your posts with four tilde (~) signs. [[User:Manadar|Manadar]] 11:02, 28 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Article management ==&lt;br /&gt;
&lt;br /&gt;
Adjusted the Delete template a bit. So a optional reason can be added to the Delete tag (see doc: [[Template:Delete]]).  Also added a auto category to it ([[:Category:Candidates for deletion]]) for easier management by admins. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 23:34, 8 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Wiki headers (Jaberwocky6669) ==&lt;br /&gt;
&lt;br /&gt;
Just in case. Wiki headers are not just text headers, but also serve as edit blocks. Or: Two or more users can edit the same page without conflicts when they all are editing a different section. (they are also useful as additional edit description when only editing a header/section instead of the whole page.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:12, 9 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
Is this a response to some question I had forgotten about?  [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 20:31, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:No. It was in responds to this [http://www.autoitscript.com/w/index.php?title=SciTE4AutoIt3&amp;amp;diff=prev&amp;amp;oldid=10877 this] edit. Was just wondering if you already knew those facts about headers. (You can delete this section, as its just a informational note.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 21:17, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
I see.  Thanks for the heads up and I&#039;ll keep that in mind. [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 00:27, 11 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Targeted for termination: Function_list pages ==&lt;br /&gt;
&#039;&#039;(intended for objections or alternative usage ideas)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Due to the direct linking to the official online manual. The old [[Function_list]] sub-pages have lost there usage. As such there targeted for termination. &#039;&#039;(lets say around next weekend.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To see the function list page in its old state click [http://www.autoitscript.com/w/index.php?title=Function_list&amp;amp;oldid=11005 here].&lt;br /&gt;
&lt;br /&gt;
--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:39, 12 November 2012 (GMT)&amp;lt;hr&amp;gt;&lt;br /&gt;
:Done: Removed most Function_List pages.&lt;br /&gt;
:Done: Removed broken redirects.&lt;br /&gt;
:Done: Adjust broken links to online documentation pages. (//www.autoitscript.com/autoit3/docs/functions)&lt;br /&gt;
:todo: Last left-overs.&lt;br /&gt;
:--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 23:08, 18 November 2012 (UTC)&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&amp;lt;!-- Additional Talk(FunctionList) goose here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Forum links ==&lt;br /&gt;
&lt;br /&gt;
Looked at normalizing all forum links on some wiki page. But it turns out that there are more ways than I initially expected. (intended to remove addition forum topic title part from links, but that seems not needed.)&lt;br /&gt;
:The following ways all work.&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;&lt;br /&gt;
*../forum/index.php?findpost=&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for post that are not the first in a topic)&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for keeping the related topic number with the post-link.)&lt;br /&gt;
*../forum/topic/&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;-/#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (note the lonely &#039;-&#039; character. That&#039;s the only part that&#039;s needed. The rest of what would be the topic title text is ignored.)&lt;br /&gt;
Rendering the title part on forum links down to additional, none critical, information (edit mode).&amp;lt;br&amp;gt;&lt;br /&gt;
Personally favor the two first one&#039;s (as general standard). But there is no real/direct need for any change.&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:39, 15 December 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
== SPAM ==&lt;br /&gt;
&lt;br /&gt;
If there is anything to do in relation to spam cases other then undoing them. Feel free to add it here (or not of course). Where there is one, more are are surly to follow. I just undid one, but I&#039;m currently not sure if I do any more. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 05:02, 3 January 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User:Manadar&amp;diff=11501</id>
		<title>User:Manadar</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=User:Manadar&amp;diff=11501"/>
		<updated>2013-01-03T04:53:50Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: Undo revision 11500 by Errosuppy (talk) ... O dear ... Spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sudden burst of interest in the AutoIt wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Forum account: http://www.autoitscript.com/forum/index.php?showuser=10412&lt;br /&gt;
&lt;br /&gt;
My website: http://www.manadar.com/&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Forums&amp;diff=11495</id>
		<title>Forums</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Forums&amp;diff=11495"/>
		<updated>2012-12-18T09:33:45Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Unofficial forums */ a-z order&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to receive support and share your own scripts you may sign up for one of either forums.&lt;br /&gt;
&lt;br /&gt;
= Official forums =&lt;br /&gt;
The official forums are a very good place to get help and share scripts. It has a lot of members and is often praised for its quick and professional help and support. One of the advantages of AutoIt over other, more global, languages - is the concentrated community. There you are posting alongside the developers of the code, so chances are they know what they&#039;re talking about!&lt;br /&gt;
&lt;br /&gt;
[http://www.autoitscript.com/forum/index.php AutoIt Forums]&lt;br /&gt;
&lt;br /&gt;
== Searching the forums ==&lt;br /&gt;
Before you post a question it is always better to search the forums first to see if your question has been answered before.&lt;br /&gt;
There are two ways to search the forum:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Internal search engine&#039;&#039;&#039;&lt;br /&gt;
[http://www.autoitscript.com/forum/index.php?act=Search Search]&lt;br /&gt;
* &#039;&#039;&#039;Google&#039;&#039;&#039;&lt;br /&gt;
Enter into Google: site:www.autoitscript.com/forum/ your search query.&lt;br /&gt;
&lt;br /&gt;
Google search cannot be used to search the Chat forum.&lt;br /&gt;
&lt;br /&gt;
Example: [http://www.google.com/search?hl=en&amp;amp;q=site:www.autoitscript.com/forum/+script Search for &amp;quot;script&amp;quot; on the forums using Google.]&lt;br /&gt;
&lt;br /&gt;
See also: [[Searching_autoitscript_forum | Searching the Forum]]&lt;br /&gt;
&lt;br /&gt;
== Code of conduct ==&lt;br /&gt;
Before you post a question or start a new script, it is always better to search the forums first if your question has been answered before or see if you can find a similar script made by someone else and shared.&lt;br /&gt;
&lt;br /&gt;
Please think about asking &#039;&#039;&#039;the right question&#039;&#039;&#039; and asking &#039;&#039;&#039;the question right!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These are must read topics before posting anything:&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=54168 Chat forum rules]&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=14632 Keylogger rules]&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=65889 Asking for source code]&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=37289 FAQ1] [http://www.autoitscript.com/forum/index.php?showtopic=23822 FAQ2]&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=34658 Are my AutoIt EXEs really infected?]&lt;br /&gt;
&lt;br /&gt;
= Unofficial forums =&lt;br /&gt;
These are the other unofficial forums, often in other languages than English.&lt;br /&gt;
&lt;br /&gt;
* French forums: http://www.autoit.fr/&lt;br /&gt;
* German forums: http://www.autoit.de/&lt;br /&gt;
* Polish forums: http://www.autoit.xaa.pl/&lt;br /&gt;
* Portuguese forums: http://www.autoitbrasil.com/&lt;br /&gt;
* Spanish forums: http://www.autoit.es/&lt;br /&gt;
&lt;br /&gt;
= Yahoo group =&lt;br /&gt;
As an alternative to the official forums, or if you just like Yahoo groups more, you can use the available Yahoo group to ask questions and share scripts.&lt;br /&gt;
&lt;br /&gt;
[http://groups.yahoo.com/group/AutoItList/ AutoIt Yahoo group]&lt;br /&gt;
&lt;br /&gt;
= Useful links =&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=94713 General Tips for using AutoIt] - Some tips that a lot of people will find useful.&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=User_Defined_Functions&amp;diff=11490</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=11490"/>
		<updated>2012-12-15T00:51:13Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* GUI Additions */ GUIExtender link adjust&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:UDF]]&lt;br /&gt;
This page is a listing of libraries of user defined functions. These libraries have been written to allow easy integration into your own script and are a very valuable resource for any programmer.&lt;br /&gt;
&lt;br /&gt;
== Automation ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=87956 Java UDF] - Creates an access bridge between your application and a Java application. Allowing you to automate some Java applications.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=86574 SAP] - SAP business management automation.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=42776 PDFCreator] - Automation of PDFCreator allows you to create and manipulate PDF files.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=91018 WiFi] - Low level control over your wireless LAN &lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=106163 Active Directory] - Extensive library to control and manipulate the Windows active directory. Link to the [[Active_Directory_UDF_-_General|documentation]] pages. &lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=28436 Windows Events] - Create your own Windows events.&lt;br /&gt;
&lt;br /&gt;
===Browsers===&lt;br /&gt;
* Internet Explorer - Everything about Internet explorer can be automated with the IE library supplied with a standard AutoIt install.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=95595 FireFox] - A little less support for automation than IE, but still very good.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=61090 Opera] - The same as above for Opera. Automate the most common tasks in Opera with the Opera UDF.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Office Automation===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=32144 Microsoft Office Access] - Automation of Access.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=34302 Microsoft Office Excel] - Large automation library for Excel.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/135312-excelchart-udf Microsoft Office Excel] - Creating charts using Excel.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/126305-outlookex-udf/ Microsoft Office Outlook] - Extended Outlook UDF. Link to the [[OutlookEX_UDF_-_General|documentation]] pages.&lt;br /&gt;
* Microsoft Office Word UDF - A way to automate Office Word is included with AutoIt.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=45842 Serial port (COM port)] - Requires my comMG.dll (included)&lt;br /&gt;
&lt;br /&gt;
== Information gathering ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=29404 Computer information] - A general purpose library to get various details about a Windows machine.&lt;br /&gt;
&lt;br /&gt;
== Databases and web connections ==&lt;br /&gt;
* FTP - A FTP library is now included with the AutoIt libraries.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=17099 SQLite] - &amp;quot;SQLite is a library that implements a self-contained, embeddable, zero-configuration SQL database engine&amp;quot;&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=19848 XML DOM Wrapper] - Supports CRUD operations on XML. Including XSL and XPath.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=20814 MySQL] - MySQL relational database management system UDF.&lt;br /&gt;
&lt;br /&gt;
== Internet protocol suite ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/84133-winhttp-functions/ WinHTTP] - Enables scripts to access the HTTP protocol for creating GET and POST requests and submitting them with conforming standards, cookies not supported.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/77503-wininetau3-ftphttphttpsgopher/ WinInet] - Enables scripts to access standard Internet protocols, such as FTP, Gopher and HTTP. Also supports creating GET and POST requests and submitting them with conforming standards, cookies supported.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=22838 POP3] - POP3 library for retrieving email messages. Not compatible with Gmail because it uses SSL.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=64051 POP3 SSL] - A POP3 library that&#039;s compatible with Gmail. It uses an external executable that must be supplied with your script.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=43515 IRC] - A lightweight library for communicating with IRC servers.&lt;br /&gt;
&lt;br /&gt;
== Data compression ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=116565 zip] - Create ZIP files and unpack ZIP files.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=85094 7z, zip, gzip, bzip2, tar] - More extensive library than the one above. Uses a external DLL that must be provided with the script.&lt;br /&gt;
&lt;br /&gt;
== Encryption and hash ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=76976 MD5,SHA1,CRC32,RC4,BASE64,XXTEA] - Several encryption and hash functions.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=78745 AES Rijndael] - Very fast AES UDF. Support ECB/CBC/CFB/OFB block cipher mode.&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=94834 Simple DirectMedia Layer UDF] - Adds support for joysticks, CDs, 2D graphics, timers. See [http://www.libsdl.org/ SDL website] for more information.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=95357 FreeImage library] - Various operations on images, such as rotate, resize, flip.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=51054 Printer controller] - 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;
&lt;br /&gt;
===Sound===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=83481 BASS Function Library] - Sound and Music via wrappers for Bass, BassEnc, Bass FX, BassSFX, BassAsio and BassCd DLLs&lt;br /&gt;
&lt;br /&gt;
===3D graphics===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=70506 IrrLicht] - A 3D graphics engine suitable for creating games.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=113881 au3Irrlicht2] - Another UDF bringing Irrlicht and au3 together. Historically some kind of a follower of the UDF above, technically with a complete different approach.&lt;br /&gt;
&lt;br /&gt;
== GUI Additions ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=32494 XSkin] - A large library that allows skinning of your GUI and to apply custom skins.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/132864-uskinlibraryau3-udf-skin-with-dll-free-no-ads-and-fully-functional/ Uskin] - A library that allows a user to skin their application GUI using the Windows &#039;&#039;.MSstyles&#039;&#039; files.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=20967 Modern tray menu] - Allows the creation of modern, fancy GUI and tray menus with icons.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=71811 SetOnEvent] - Provides an easy way for an event to call functions with parameters.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/119505-guiframe-udf-melba23-version/ GUIFrame] - Divide a GUI into adjustable frames.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/113723-scrollbars-made-easy/ Easy Scrollbars] - Easily create scrollable sections in your GUI&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=105582 GUICtrlOnChangeRegister] - Call a function when an edits content is changed.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/96258-contexthelp-au3/ ContextHelp.au3] - Management of context help ([http://www.autoitscript.com/forum/topic/72152-contexthelp/ original])&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/145149-guiextender-new-version/ GUIExtender] - Expand and contract sections of your GUI. ([http://www.autoitscript.com/forum/topic/117909-guiextender_old/ original])&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/109096-extended-message-box-new-version-3-dec-10/ ExtMsgBox] - A very customisable replacement for MsgBox&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/108445-how-to-make-toast/ Toast] - Small message GUIs which pop out of the Systray&lt;br /&gt;
&lt;br /&gt;
=== Controls ===&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=79412 Graph control UDF] - Easily create and show bar chart and line charts.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=105682 GUICtrlCreateFinder] - Allows you to create a window finder control like the one seen in AutoIt Window Info.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=111438 GUIPager] - Create and control native pager controls.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=90598 Hotkey input control] - Hotkeys Input Control UDF Library (Non-native)&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=107965 GUIHotkey] - UDF for using native hotkey controls.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/103904-info-bar-like-tickertape/page__view__findpost__p__735769 Marquees] - Make tickertape info bars&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/96464-colorpicker-udf/ Colorpicker] - Create a button for the user to select a color.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/126958-guisyslink-udf/ Syslink] - Provides a convenient way to embed hypertext links in a window&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/74649-progressbar-with-gdiplus/ Progressbar with GDIplus] - You even can use full textured images&lt;br /&gt;
&lt;br /&gt;
== Maths ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=83091 Primes UDF] - Many functions dealing with prime number generation and calculations.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=83529 Big number UDF] - Make calculations with extremely large numbers that AutoIt normally is not able to support.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=81189 Number base conversion] - From, to and between positive bases less than 63 (decimals supported)&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=106551 Decimal To fraction] - Converts any decimal number to a fraction. Example: 1.2 to 6/5&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=82722 Trigonometry math functions] - _ATan2(), _Cosh(), _Frexp(), _Hypot(), _Ldexp(), _Logb(), _Sinh(), _Tanh()&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=108803 Polynomials] - Functions for using polynomials.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=117156 NumToWord] - Convert numerals to a human readable string.&lt;br /&gt;
* [http://www.autoitscript.com/forum/index.php?showtopic=98160 Root function] - Working out real roots of numbers.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/102686-advanced-rounding/ Advanced rounding] - Support for different measures of accuracy and 8 ways to resolve tie breaks.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/90492-hotkey-au3/ Hotkey.au3] - Management of Hotkeys UDF, with several advantages over HotkeySet().&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/97826-animateau3-updated/ Animated tray icons] - Make animated tray icons easily.&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/101733-prevent-dotted-focus-lines-on-controls/ NoFocusLines] - Remove the dotted focus lines from buttons, sliders, radios and checkboxes which spoil the look of your GUI&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/114034-stringsize-m23/ StringSize] - Automatically size controls to fit the text you want to put in them&lt;br /&gt;
* [http://www.autoitscript.com/forum/topic/104150-json-udf-library-fully-rfc4627-compliant/ JSON] - RFC4627 compliant JSON encode/decode&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11489</id>
		<title>AutoIt Wiki talk:Community portal</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=AutoIt_Wiki_talk:Community_portal&amp;diff=11489"/>
		<updated>2012-12-15T00:39:05Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: /* Forum links */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Homepage talk page ==&lt;br /&gt;
&lt;br /&gt;
== FAQ, Cookbook, Examples ==&lt;br /&gt;
&lt;br /&gt;
Provide one centralised area with a list of examples instead of three separate places where questions are answered on the front page. Preferably categorized like the cookbook is at the moment.&lt;br /&gt;
[[User:Manadar|Manadar]] 11:49, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:http://www.autoitscript.com/autoit3/docs/history.htm [[User:Manadar|Manadar]] 13:33, 15 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I put it on the main page. The old page can be seen here: [[http://www.autoitscript.com/w/index.php?title=Main_Page&amp;amp;oldid=8084]] [[User:Manadar|Manadar]] 16:15, 17 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== mdiesel wrapper ==&lt;br /&gt;
&lt;br /&gt;
I am considering adding a Wrapper page, and copy + paste that thread into here. It would be much easier than constntly having to find the thread (I&#039;m not sure how it didn&#039;t get sticky). I am busy compiling the page now, so that&#039;ll get done. I think it will be too long to put in examples or udf&#039;s.&lt;br /&gt;
&lt;br /&gt;
: There is already a wrapper page created and maintained by Valuater: http://www.autoitscript.com/forum/index.php?showtopic=19370 . It would be good to have that ported to the Wiki. Oh, and please sign your posts with four tilde (~) signs. [[User:Manadar|Manadar]] 11:02, 28 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Article management ==&lt;br /&gt;
&lt;br /&gt;
Adjusted the Delete template a bit. So a optional reason can be added to the Delete tag (see doc: [[Template:Delete]]).  Also added a auto category to it ([[:Category:Candidates for deletion]]) for easier management by admins. --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 23:34, 8 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Wiki headers (Jaberwocky6669) ==&lt;br /&gt;
&lt;br /&gt;
Just in case. Wiki headers are not just text headers, but also serve as edit blocks. Or: Two or more users can edit the same page without conflicts when they all are editing a different section. (they are also useful as additional edit description when only editing a header/section instead of the whole page.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:12, 9 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
Is this a response to some question I had forgotten about?  [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 20:31, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:No. It was in responds to this [http://www.autoitscript.com/w/index.php?title=SciTE4AutoIt3&amp;amp;diff=prev&amp;amp;oldid=10877 this] edit. Was just wondering if you already knew those facts about headers. (You can delete this section, as its just a informational note.) --[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 21:17, 10 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
I see.  Thanks for the heads up and I&#039;ll keep that in mind. [[User:Jaberwocky6669|Jaberwocky6669]] ([[User talk:Jaberwocky6669|talk]]) 00:27, 11 November 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Targeted for termination: Function_list pages ==&lt;br /&gt;
&#039;&#039;(intended for objections or alternative usage ideas)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Due to the direct linking to the official online manual. The old [[Function_list]] sub-pages have lost there usage. As such there targeted for termination. &#039;&#039;(lets say around next weekend.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To see the function list page in its old state click [http://www.autoitscript.com/w/index.php?title=Function_list&amp;amp;oldid=11005 here].&lt;br /&gt;
&lt;br /&gt;
--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:39, 12 November 2012 (GMT)&amp;lt;hr&amp;gt;&lt;br /&gt;
:Done: Removed most Function_List pages.&lt;br /&gt;
:Done: Removed broken redirects.&lt;br /&gt;
:Done: Adjust broken links to online documentation pages. (//www.autoitscript.com/autoit3/docs/functions)&lt;br /&gt;
:todo: Last left-overs.&lt;br /&gt;
:--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 23:08, 18 November 2012 (UTC)&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;hr&amp;gt;&amp;lt;!-- Additional Talk(FunctionList) goose here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Forum links ==&lt;br /&gt;
&lt;br /&gt;
Looked at normalizing all forum links on some wiki page. But it turns out that there are more ways than I initially expected. (intended to remove addition forum topic title part from links, but that seems not needed.)&lt;br /&gt;
:The following ways all work.&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;&lt;br /&gt;
*../forum/index.php?findpost=&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for post that are not the first in a topic)&lt;br /&gt;
*../forum/index.php?showtopic=&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (for keeping the related topic number with the post-link.)&lt;br /&gt;
*../forum/topic/&#039;&#039;&amp;lt;topic number&amp;gt;&#039;&#039;-/#entry&#039;&#039;&amp;lt;post number&amp;gt;&#039;&#039; (note the lonely &#039;-&#039; character. That&#039;s the only part that&#039;s needed. The rest of what would be the topic title text is ignored.)&lt;br /&gt;
Rendering the title part on forum links down to additional, none critical, information (edit mode).&amp;lt;br&amp;gt;&lt;br /&gt;
Personally favor the two first one&#039;s (as general standard). But there is no real/direct need for any change.&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User_talk:IEvKI3gv9Wrkd41u|&amp;lt;i&amp;gt;&amp;lt;font color=&amp;quot;#666&amp;quot; size=&amp;quot;2px&amp;quot;&amp;gt;.MvGulik.&amp;lt;/font&amp;gt;&amp;lt;/i&amp;gt;]] 00:39, 15 December 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Timers_and_Hotkey_Example&amp;diff=11486</id>
		<title>Timers and Hotkey Example</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Timers_and_Hotkey_Example&amp;diff=11486"/>
		<updated>2012-12-11T06:21:10Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: add to: Category:Samples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Samples]]&lt;br /&gt;
&#039;&#039;Script by:&#039;&#039; scriptkitty&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Original Link:&#039;&#039;&lt;br /&gt;
[http://www.autoitscript.com/forum/index.php?showtopic=1358]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; This is just an example of a little quick timer you might have a use for.&lt;br /&gt;
It uses variations of one button to do almost everything. I use it personally inside a game I play to keep track of stuff.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Not updated for current versions of AutoIt&lt;br /&gt;
 &lt;br /&gt;
 winclose(&amp;quot;mycountdown&amp;quot;)&lt;br /&gt;
 AutoItWinSetTitle ( &amp;quot;mycountdown&amp;quot; )&lt;br /&gt;
 $loc=StringSplit(&amp;quot;546,378&amp;quot;,&amp;quot;,&amp;quot;); default location&lt;br /&gt;
 $amount=90; default time&lt;br /&gt;
 HotKeySet (&amp;quot;!{NUMPADADD}&amp;quot;,&amp;quot;testoff&amp;quot;)&lt;br /&gt;
 HotKeySet (&amp;quot;{NUMPADADD}&amp;quot;,&amp;quot;test&amp;quot;)&lt;br /&gt;
 HotKeySet (&amp;quot;^{NUMPADADD}&amp;quot;,&amp;quot;amount&amp;quot;)&lt;br /&gt;
 HotKeySet (&amp;quot;^!{NUMPADADD}&amp;quot;,&amp;quot;loc&amp;quot;)&lt;br /&gt;
 ToolTip(&amp;quot;Click + to start&amp;quot;, 0, 0)&lt;br /&gt;
 sleep(2000)&lt;br /&gt;
 &lt;br /&gt;
 $begin=0&lt;br /&gt;
 While 1&lt;br /&gt;
 while $begin&amp;lt;&amp;gt;0&lt;br /&gt;
 ToolTip(&amp;quot;&amp;quot;, 0, 0)&lt;br /&gt;
 while (TimerStop($begin)/1000)&amp;lt;$amount&lt;br /&gt;
 $time=$amount-int(TimerStop($begin)/1000)/1&lt;br /&gt;
 if $time&amp;gt;120 then&lt;br /&gt;
 ToolTip(int($time/60)&amp;amp;&amp;quot; min left &amp;quot;&amp;amp;$time-int($time/60)*60&amp;amp;&amp;quot; seconds&amp;quot;,$loc[1],$loc[2])&lt;br /&gt;
 else&lt;br /&gt;
 if $time&amp;lt;30 then&lt;br /&gt;
 ToolTip(&amp;quot;Warning Warning Warning, Only &amp;quot;&amp;amp;$time&amp;amp;&amp;quot; seconds left &amp;quot;,$loc[1],$loc[2])&lt;br /&gt;
 else&lt;br /&gt;
 ToolTip($time&amp;amp;&amp;quot; seconds left &amp;quot;,$loc[1],$loc[2])&lt;br /&gt;
 endif&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 sleep(20)&lt;br /&gt;
 wend&lt;br /&gt;
 wend&lt;br /&gt;
 ToolTip(&amp;quot;&amp;quot;, 0, 0)&lt;br /&gt;
 sleep(20)&lt;br /&gt;
 wend&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 sleep(-1)&lt;br /&gt;
 &lt;br /&gt;
 func test()&lt;br /&gt;
 $begin = TimerStart()&lt;br /&gt;
 endfunc&lt;br /&gt;
 &lt;br /&gt;
 func testoff()&lt;br /&gt;
 ToolTip(&amp;quot;&amp;quot;)&lt;br /&gt;
 $begin = 0&lt;br /&gt;
 endfunc&lt;br /&gt;
 &lt;br /&gt;
 func amount()&lt;br /&gt;
 $amount = InputBox(&amp;quot;Question&amp;quot;, &amp;quot;How many sec?&amp;quot;&amp;amp;@crlf&amp;amp;&amp;quot;or XXmin&amp;quot;, &amp;quot;1min&amp;quot;, &amp;quot;&amp;quot;, -1, -1, 0, 0)&lt;br /&gt;
 if stringinstr($amount,&amp;quot;min&amp;quot;)&amp;gt;0 then $amount=int(stringreplace($amount,&amp;quot;min&amp;quot;,&amp;quot;&amp;quot;)*60)&lt;br /&gt;
 return $amount&lt;br /&gt;
 endfunc&lt;br /&gt;
 &lt;br /&gt;
 func loc()&lt;br /&gt;
 $loc1 = InputBox(&amp;quot;Question&amp;quot;, &amp;quot;Location x,y?&amp;quot;, &amp;quot;546,378&amp;quot;, &amp;quot;&amp;quot;, -1, -1, 0, 0)&lt;br /&gt;
 $loc=StringSplit($loc1,&amp;quot;,&amp;quot;)&lt;br /&gt;
 endfunc&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=RemoteWmiInfo&amp;diff=11485</id>
		<title>RemoteWmiInfo</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=RemoteWmiInfo&amp;diff=11485"/>
		<updated>2012-12-11T06:17:07Z</updated>

		<summary type="html">&lt;p&gt;IEvKI3gv9Wrkd41u: add to: Category:Samples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Samples]]&lt;br /&gt;
&amp;lt;b&amp;gt;Script:&amp;lt;/b&amp;gt; remoteWMIInfo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt; Jon Dunham&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt; Mostly-functioning example script for how to retrieve WMI information, as well as working with GUI controls. I currently use it a lot in my job, and works quite well at this point. It&#039;s commented sparingly thus far, but I&#039;ll try and and comment more of it for educational purposes. Please don&#039;t hesitate to contact me if you find problems with it or have ideas on improving its efficiency.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Notes:&amp;lt;/b&amp;gt; The Remote and Logoff buttons are disabled by default, as they&#039;re dependent on whether you have access to an internal LANDesk management suite URL (which is what I use specifically, it could also easily be changed to use WinVNC and the like), as well as the psShutdown tool. Also, bear this in mind:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;my code is a dog&#039;s code&amp;quot; - &amp;lt;i&amp;gt;R. Beef Kazenzakis&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
; UDF&lt;br /&gt;
#include &amp;lt;date.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;ie.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;array.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;misc.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;guiStatusBar.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Standard&lt;br /&gt;
#include &amp;lt;EditConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;StaticConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WindowsConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;ButtonConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; -( remoteWmiInfo )--------------------&lt;br /&gt;
;&lt;br /&gt;
; © Jon Dunham 2009&lt;br /&gt;
;&lt;br /&gt;
; displays WMI and AD info including;&lt;br /&gt;
; 	0: Computer model&lt;br /&gt;
;	1: Serial Number &amp;amp; Asset (if found)&lt;br /&gt;
;	2: BIOS Version&lt;br /&gt;
;	3: total RAM&lt;br /&gt;
;	4: Operating system &amp;amp; service pack&lt;br /&gt;
;	5: MAC Address&lt;br /&gt;
;   6; private IP&lt;br /&gt;
;	7: current domain/user, including display name and SID (in a tooltip)&lt;br /&gt;
;	8: DefaultUserName, including display name and SID (in a tooltip)&lt;br /&gt;
;	9: time to connect in ms &amp;amp; ping&lt;br /&gt;
;  10: Bottom-level OU&lt;br /&gt;
;  11; IP address&lt;br /&gt;
;  12; wireless info from wirelessInfo.au3&lt;br /&gt;
;  13; active monitor model&lt;br /&gt;
;  14; active monitor serial (to some extent)&lt;br /&gt;
;  BLAH BLAH I&#039;M NOT UPDATING THIS ANY MORE&lt;br /&gt;
;&lt;br /&gt;
; also uses psShutdown and LANDesk&lt;br /&gt;
;  for remoting convenience&lt;br /&gt;
;&lt;br /&gt;
; ======================================&lt;br /&gt;
&lt;br /&gt;
Dim $compName, $go, $done&lt;br /&gt;
Global Const $version = &amp;quot;0.4.10&amp;quot;&lt;br /&gt;
Global $debug = 0&lt;br /&gt;
Global $pathSave = @MyDocumentsDir &amp;amp; &amp;quot;\remoteWmiInfo Queries\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
AutoItSetOption(&amp;quot;TrayAutoPause&amp;quot;, 0)&lt;br /&gt;
AutoItSetOption(&amp;quot;GUICloseOnESC&amp;quot;, 1)&lt;br /&gt;
&lt;br /&gt;
;HotKeySet( &amp;quot;{ENTER}&amp;quot;, &amp;quot;hotkey_enter&amp;quot; )&lt;br /&gt;
;HotKeySet( &amp;quot;{F1}&amp;quot;, &amp;quot;aboutDiag&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
; make sure icons exist&lt;br /&gt;
DirCreate(&amp;quot;Icons&amp;quot;)&lt;br /&gt;
If Not FileExists(&amp;quot;Icons\Dialog-Apply.ico&amp;quot;) Then _&lt;br /&gt;
		FileInstall(&amp;quot;Icons\Dialog-Apply.ico&amp;quot;, &amp;quot;Icons\Dialog-Apply.ico&amp;quot;)&lt;br /&gt;
If Not FileExists(&amp;quot;Icons\Gnome-Document-Save.ico&amp;quot;) Then _&lt;br /&gt;
		FileInstall(&amp;quot;Icons\Gnome-Document-Save.ico&amp;quot;, &amp;quot;Icons\Gnome-Document-Save.ico&amp;quot;)&lt;br /&gt;
If Not FileExists(&amp;quot;Icons\Gnome-Preferences-Desktop-Remote-Desktop.ico&amp;quot;) Then _&lt;br /&gt;
		FileInstall(&amp;quot;Icons\Gnome-Preferences-Desktop-Remote-Desktop.ico&amp;quot;, &amp;quot;Icons\Gnome-Preferences-Desktop-Remote-Desktop.ico&amp;quot;)&lt;br /&gt;
If Not FileExists(&amp;quot;Icons\Gnome-Application-Exit.ico&amp;quot;) Then _&lt;br /&gt;
		FileInstall(&amp;quot;Icons\Gnome-Application-Exit.ico&amp;quot;, &amp;quot;Icons\Gnome-Application-Exit.ico&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Region ### START Koda GUI section ### Form=&lt;br /&gt;
$frmInfo = GUICreate(&amp;quot;remoteWmiInfo &amp;quot; &amp;amp; $version, 337, 377, @DesktopWidth / 2, @DesktopHeight * 0.3)&lt;br /&gt;
$winSize = WinGetClientSize($frmInfo)&lt;br /&gt;
GUISetBkColor(0xEEEEEE)&lt;br /&gt;
GUISetIcon(&amp;quot;Icons\Gnome-System-Search.ico&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;	Top Controls&lt;br /&gt;
$editComp = GUICtrlCreateInput(@ComputerName, 4, 30, 329, 21, $ES_UPPERCASE)&lt;br /&gt;
&lt;br /&gt;
GUICtrlCreateIcon(&amp;quot;Icons\Dialog-Apply.ico&amp;quot;, -1, 4, 4, 21, 21)&lt;br /&gt;
$btnGo = GUICtrlCreateButton(&amp;quot;Query&amp;quot;, 27, 4, 45, 21, $BS_DEFPUSHBUTTON)&lt;br /&gt;
GUICtrlCreateIcon(&amp;quot;Icons\Gnome-Document-Save.ico&amp;quot;, -1, 74, 4, 21, 21)&lt;br /&gt;
$btnSave = GUICtrlCreateButton(&amp;quot;Save&amp;quot;, 97, 4, 45, 21)&lt;br /&gt;
GUICtrlCreateIcon(&amp;quot;Icons\Gnome-Preferences-Desktop-Remote-Desktop.ico&amp;quot;, -1, 144, 4, 21, 21)&lt;br /&gt;
$btnRC = GUICtrlCreateButton(&amp;quot;Remote&amp;quot;, 167, 4, 45, 21)&lt;br /&gt;
GUICtrlCreateIcon(&amp;quot;Icons\Gnome-Application-Exit.ico&amp;quot;, -1, 214, 4, 21, 21)&lt;br /&gt;
GUICtrlSetState($btnRC, $GUI_DISABLE)&lt;br /&gt;
$btnLO = GUICtrlCreateButton(&amp;quot;Logoff&amp;quot;, 237, 4, 45, 21)&lt;br /&gt;
GUICtrlSetState($btnLO, $GUI_DISABLE)&lt;br /&gt;
;$btnADQ = GUICtrlCreateButton( &amp;quot;dsQuery&amp;quot;, 102, 29, 45, 21 )&lt;br /&gt;
&lt;br /&gt;
$Tab1 = GUICtrlCreateTab(4, 56, 330, 297)&lt;br /&gt;
GUICtrlSetResizing($Tab1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)&lt;br /&gt;
$TabSheet1 = GUICtrlCreateTabItem(&amp;quot;General&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;	Labels&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Model:&amp;quot;, 12, 81, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Serial / Asset:&amp;quot;, 12, 105, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;BIOS Version:&amp;quot;, 12, 129, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Total RAM:&amp;quot;, 12, 153, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;OS:&amp;quot;, 12, 177, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;MAC:&amp;quot;, 12, 201, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;IP:&amp;quot;, 12, 225, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;OU:&amp;quot;, 12, 249, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Current User:&amp;quot;, 12, 273, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Default User:&amp;quot;, 12, 297, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Ping:&amp;quot;, 12, 321, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
&lt;br /&gt;
;	Edit controls&lt;br /&gt;
&lt;br /&gt;
$editModel = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 81, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editSerial = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 105, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editBIOS = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 129, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editRAM = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 153, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editOS = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 177, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editMAC = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 201, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editIP = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 225, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editDN = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 249, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editUser = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 273, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editDefaultUser = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 297, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editPing = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 321, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;	Wireless info&lt;br /&gt;
$TabSheet2 = GUICtrlCreateTabItem(&amp;quot;Wireless&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;SSID:&amp;quot;, 12, 81, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;BSSID:&amp;quot;, 12, 105, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Signal:&amp;quot;, 12, 129, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Noise:&amp;quot;, 12, 153, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Channel:&amp;quot;, 12, 177, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
&lt;br /&gt;
;	Edits&lt;br /&gt;
&lt;br /&gt;
$editSSID = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 81, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editBSSID = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 105, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editSignal = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 129, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editNoise = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 153, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editChannel = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 177, 228, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
&lt;br /&gt;
;	Misc info (incl. monitor)&lt;br /&gt;
$TabSheet3 = GUICtrlCreateTabItem(&amp;quot;Misc&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
$Group1 = GUICtrlCreateGroup(&amp;quot;Monitor&amp;quot;, 12, 86, 313, 102)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Model:&amp;quot;, 20, 106, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Serial:&amp;quot;, 20, 130, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Description:&amp;quot;, 20, 154, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
$editDmName = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 106, 212, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editDmSerial = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 130, 212, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editDmDesc = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 154, 212, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
&lt;br /&gt;
$Group2 = GUICtrlCreateGroup(&amp;quot;Software&amp;quot;, 12, 190, 313, 102)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;IE:&amp;quot;, 20, 210, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Java RE:&amp;quot;, 20, 234, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;LANDesk:&amp;quot;, 20, 258, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
$editVerIE = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 210, 212, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editVerJava = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 234, 212, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
$editLD = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 258, 212, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
&lt;br /&gt;
; default printer&lt;br /&gt;
&lt;br /&gt;
GUICtrlCreateLabel(&amp;quot;Printer:&amp;quot;, 20, 300, 70, 17)&lt;br /&gt;
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
$editPrinter = GUICtrlCreateInput(&amp;quot;&amp;quot;, 96, 300, 212, 22, BitOR($ES_AUTOHSCROLL, $ES_READONLY))&lt;br /&gt;
&lt;br /&gt;
;	End tab section&lt;br /&gt;
GUICtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
GUISetState(@SW_SHOW)&lt;br /&gt;
;$background = GUICtrlCreatePic( &amp;quot;c:\temp\osxclonebg.jpg&amp;quot;, 0, 0, 350, 274)&lt;br /&gt;
&lt;br /&gt;
GUICtrlSetTip($btnGo, &amp;quot;Attempt to query the specified computer.&amp;quot;)&lt;br /&gt;
GUICtrlSetTip($btnSave, &amp;quot;Save all fields to &amp;quot; &amp;amp; $pathSave &amp;amp; &amp;quot;COMPUTERNAME-&amp;quot; &amp;amp; @YEAR &amp;amp; @MON &amp;amp; @MDAY &amp;amp; &amp;quot;.txt&amp;quot;)&lt;br /&gt;
GUICtrlSetTip($btnRC, &amp;quot;Start a remote control session with the specified computer.&amp;quot;)&lt;br /&gt;
GUICtrlSetTip($btnLO, &amp;quot;Logoff the current user (please make sure nobody is using it before doing this!!!).&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
$statusBar = _GUICtrlStatusBar_Create($frmInfo)&lt;br /&gt;
; try to make a dynamically-sized status size&lt;br /&gt;
Dim $StatusBar1_PartsWidth[2] = [StringLen(_NowTime(5) &amp;amp; &amp;quot; &amp;gt;&amp;quot;) * 6.5, -1]&lt;br /&gt;
_GUICtrlStatusBar_SetParts($statusBar, $StatusBar1_PartsWidth)&lt;br /&gt;
_GUICtrlStatusBar_SetText($statusBar, _NowTime(5) &amp;amp; &amp;quot; &amp;gt;&amp;quot;, 0)&lt;br /&gt;
_GUICtrlStatusBar_SetText($statusBar, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
_GUICtrlStatusBar_SetMinHeight($statusBar, 20)&lt;br /&gt;
#EndRegion ### END Koda GUI section ###&lt;br /&gt;
&lt;br /&gt;
Dim $goState, $logoffCheck&lt;br /&gt;
&lt;br /&gt;
While 1 ; main loop&lt;br /&gt;
	$guiMsg = GUIGetMsg()&lt;br /&gt;
&lt;br /&gt;
	Select&lt;br /&gt;
		; Close window&lt;br /&gt;
		Case $guiMsg = $GUI_EVENT_CLOSE&lt;br /&gt;
			GUIDelete()&lt;br /&gt;
			Exit&lt;br /&gt;
			; Save info&lt;br /&gt;
		Case $guiMsg = $btnSave&lt;br /&gt;
&lt;br /&gt;
			; Check that model field isn&#039;t blank&lt;br /&gt;
			If GUICtrlRead($editModel) &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
				Dim $stateWrite, $file&lt;br /&gt;
&lt;br /&gt;
				If Not FileExists($pathSave) Then&lt;br /&gt;
					DirCreate($pathSave)&lt;br /&gt;
				EndIf&lt;br /&gt;
&lt;br /&gt;
				; this needs to be updated for all fields&lt;br /&gt;
				$stateWrite = FileWrite($pathSave &amp;amp; GUICtrlRead($editComp) &amp;amp; &amp;quot;-&amp;quot; &amp;amp; @YEAR &amp;amp; @MON &amp;amp; @MDAY &amp;amp; &amp;quot;.txt&amp;quot;, _&lt;br /&gt;
						&amp;quot;-( General )------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editModel) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editSerial) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editBIOS) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editRAM) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editOS) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editMAC) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editIP) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editDN) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editUser) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editDefaultUser) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editPing) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;-( Wireless )-----------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editSSID) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editBSSID) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editSignal) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editNoise) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editChannel) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;-( Monitor )------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editDmName) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editDmSerial) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						GUICtrlRead($editDmDesc))&lt;br /&gt;
&lt;br /&gt;
				If $stateWrite Then&lt;br /&gt;
					upStatus(&amp;quot;Info saved to [ &amp;quot; &amp;amp; $pathSave &amp;amp; GUICtrlRead($editComp) &amp;amp; &amp;quot;-&amp;quot; &amp;amp; @YEAR &amp;amp; @MON &amp;amp; @MDAY &amp;amp; &amp;quot;.txt ]&amp;quot;)&lt;br /&gt;
				Else&lt;br /&gt;
					upStatus(&amp;quot;Could not write file to [ &amp;quot; &amp;amp; $pathSave &amp;amp; GUICtrlRead($editComp) &amp;amp; &amp;quot;-&amp;quot; &amp;amp; @YEAR &amp;amp; @MON &amp;amp; @MDAY &amp;amp; &amp;quot;.txt ]&amp;quot;, 1)&lt;br /&gt;
				EndIf&lt;br /&gt;
&lt;br /&gt;
			Else&lt;br /&gt;
				upStatus(&amp;quot;No data to write!&amp;quot;, 1)&lt;br /&gt;
			EndIf&lt;br /&gt;
&lt;br /&gt;
			; Start the WMI query&lt;br /&gt;
		Case $guiMsg = $btnGo&lt;br /&gt;
			GUISetState(@SW_DISABLE)&lt;br /&gt;
			$goState = _go()&lt;br /&gt;
			GUISetState(@SW_ENABLE)&lt;br /&gt;
			WinActivate($frmInfo)&lt;br /&gt;
			; Start a LANDesk remote session&lt;br /&gt;
		Case $guiMsg = $btnRC&lt;br /&gt;
			If GUICtrlRead($editComp) &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
				Select&lt;br /&gt;
					Case $goState = 1&lt;br /&gt;
						Dim $rcWin = _IECreate(&amp;quot;http://landesk/RemoteSession.aspx?machine=&amp;quot; &amp;amp; _&lt;br /&gt;
							GUICtrlRead($editComp) &amp;amp; &amp;quot;&amp;amp;operation=rc&amp;quot;, 0, 0)&lt;br /&gt;
						_IEQuit($rcWin)&lt;br /&gt;
						$goState = 0&lt;br /&gt;
					Case $goState = 2&lt;br /&gt;
						upStatus(&amp;quot;Computer was not contactable.&amp;quot;, 1)&lt;br /&gt;
					Case $goState = 0&lt;br /&gt;
						upStatus(&amp;quot;Please query the computer first.&amp;quot;, 1)&lt;br /&gt;
				EndSelect&lt;br /&gt;
			Else&lt;br /&gt;
				upStatus(&amp;quot;Please enter a computer name.&amp;quot;, 1)&lt;br /&gt;
			EndIf&lt;br /&gt;
			; Run the logoff process if user clicks &#039;Yes&#039; to the msgbox&lt;br /&gt;
		Case $guiMsg = $btnLO&lt;br /&gt;
			If GUICtrlRead($editComp) &amp;lt;&amp;gt; &amp;quot;&amp;quot; And GUICtrlRead($editUser) &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
				$logoffCheck = MsgBox(51, &amp;quot;Remote WMI Info&amp;quot;, &amp;quot;This will log off the current user: &amp;quot; &amp;amp; _&lt;br /&gt;
					_currentUser(GUICtrlRead($editComp)) &amp;amp; &amp;quot;.&amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Have you checked &amp;quot; &amp;amp; _&lt;br /&gt;
					&amp;quot;that the computer is not in use?&amp;quot;)&lt;br /&gt;
				If $logoffCheck = 6 Then&lt;br /&gt;
					ShellExecute(&amp;quot;psTools\psshutdown.exe&amp;quot;, &amp;quot;-o \\&amp;quot; &amp;amp; GUICtrlRead($editComp))&lt;br /&gt;
				EndIf&lt;br /&gt;
			Else&lt;br /&gt;
				MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;No computer entered or no user currently logged on.&amp;quot;)&lt;br /&gt;
			EndIf&lt;br /&gt;
			#cs&lt;br /&gt;
				Case $guiMsg = $btnADQ&lt;br /&gt;
				if GUICtrlRead($editComp) &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
				ShellExecute( &amp;quot;rundll32&amp;quot;, &amp;quot;dsquery,OpenQueryWindow&amp;quot; )&lt;br /&gt;
				WinWaitActive( &amp;quot;Find Users&amp;quot; )&lt;br /&gt;
				ControlCommand( &amp;quot;Find Users&amp;quot;, &amp;quot;&amp;quot;, 16897, &amp;quot;SelectString&amp;quot;, &#039;Computers&#039; )&lt;br /&gt;
				Sleep(2000)&lt;br /&gt;
				WinWait( &amp;quot;Find Computers&amp;quot; )&lt;br /&gt;
				ControlSetText( &amp;quot;Find Computers&amp;quot;, &amp;quot;&amp;quot;, 1224, GUICtrlRead($editComp) )&lt;br /&gt;
				ControlClick( &amp;quot;Find Computers&amp;quot;, &amp;quot;&amp;quot;, 16901 )&lt;br /&gt;
				EndIf&lt;br /&gt;
			#ce&lt;br /&gt;
&lt;br /&gt;
	EndSelect&lt;br /&gt;
&lt;br /&gt;
	Sleep(10)&lt;br /&gt;
&lt;br /&gt;
WEnd ; &amp;lt;== main loop&lt;br /&gt;
&lt;br /&gt;
Func _go()&lt;br /&gt;
	$compName = GUICtrlRead($editComp)&lt;br /&gt;
&lt;br /&gt;
	; Populate the array with WMI info, if possible&lt;br /&gt;
	$info = _wmiInfo($compName)&lt;br /&gt;
&lt;br /&gt;
	Select&lt;br /&gt;
		; Ping failed&lt;br /&gt;
		Case @error = 7&lt;br /&gt;
			upStatus($info, 1)&lt;br /&gt;
			guiFlash($editComp, 0xFF0000, 200)&lt;br /&gt;
			Return 2&lt;br /&gt;
			; Computername contained illegal characters&lt;br /&gt;
		Case @error = 8&lt;br /&gt;
			upStatus(&amp;quot;Please enter a valid name.&amp;quot;, 1)&lt;br /&gt;
			guiFlash($editComp, 0xFF0000, 200)&lt;br /&gt;
			Return 2&lt;br /&gt;
			; Unable to get WMI info from computer after successful ping (this shouldn&#039;t really happen ever)&lt;br /&gt;
		Case @error = 9&lt;br /&gt;
			upStatus(&amp;quot;Unable to retrieve computer info after &amp;quot; &amp;amp; Round(@extended / 1000, 1) &amp;amp; &amp;quot;s.&amp;quot;, 1)&lt;br /&gt;
			guiFlash($editComp, 0xFF0000, 200)&lt;br /&gt;
			Return 2&lt;br /&gt;
			; Everything OK? DISPLAY THE INFO THEN DAMN&lt;br /&gt;
		Case Not @error&lt;br /&gt;
			upStatus($compName &amp;amp; &amp;quot; queried in &amp;quot; &amp;amp; $info[5])&lt;br /&gt;
			If Not WinActive($frmInfo) Then&lt;br /&gt;
				WinFlash($frmInfo, &amp;quot;&amp;quot;, 4, 250)&lt;br /&gt;
			Else&lt;br /&gt;
				guiFlash($editComp, 0x00FF00, 200)&lt;br /&gt;
			EndIf&lt;br /&gt;
&lt;br /&gt;
			; general info&lt;br /&gt;
			GUICtrlSetData($editModel, $info[0])&lt;br /&gt;
			GUICtrlSetData($editSerial, $info[1] &amp;amp; &amp;quot; / &amp;quot; &amp;amp; $info[10])&lt;br /&gt;
			GUICtrlSetData($editBIOS, $info[2])&lt;br /&gt;
			GUICtrlSetData($editRAM, $info[3] &amp;amp; &amp;quot; GB&amp;quot;)&lt;br /&gt;
			; Set field BkColor to red if below 1 GB&lt;br /&gt;
			If $info[3] &amp;lt; 0.98 Then&lt;br /&gt;
				GUICtrlSetBkColor($editRAM, 0xEECCCC)&lt;br /&gt;
			Else&lt;br /&gt;
				GUICtrlSetBkColor($editRAM, Default)&lt;br /&gt;
			EndIf&lt;br /&gt;
			GUICtrlSetData($editOS, $info[4])&lt;br /&gt;
			; Set field BkColor to red if not Windows XP&lt;br /&gt;
			If Not StringInStr($info[4], &amp;quot;XP&amp;quot;) Then&lt;br /&gt;
				GUICtrlSetBkColor($editOS, 0xEECCCC)&lt;br /&gt;
			Else&lt;br /&gt;
				GUICtrlSetBkColor($editOS, Default)&lt;br /&gt;
			EndIf&lt;br /&gt;
			GUICtrlSetData($editMAC, $info[9])&lt;br /&gt;
			GUICtrlSetData($editDN, $info[8])&lt;br /&gt;
			GUICtrlSetData($editUser, $info[6]); &amp;amp; &amp;quot; (&amp;quot; &amp;amp; _ADDNToDisplayName($info[6]) &amp;amp; &amp;quot;)&amp;quot; )&lt;br /&gt;
			GUICtrlSetData($editDefaultUser, $info[7]); &amp;amp; &amp;quot; (&amp;quot; &amp;amp; _ADDNToDisplayName($info[7]) &amp;amp; &amp;quot;)&amp;quot; )&lt;br /&gt;
			GUICtrlSetData($editPing, $info[17])&lt;br /&gt;
			GUICtrlSetData($editIP, $info[11])&lt;br /&gt;
&lt;br /&gt;
			; wireless&lt;br /&gt;
			GUICtrlSetData($editSSID, $info[12])&lt;br /&gt;
			GUICtrlSetData($editSignal, $info[13])&lt;br /&gt;
			GUICtrlSetData($editNoise, $info[14])&lt;br /&gt;
			GUICtrlSetData($editChannel, $info[15])&lt;br /&gt;
			GUICtrlSetData($editBSSID, $info[18])&lt;br /&gt;
&lt;br /&gt;
			; misc&lt;br /&gt;
			GUICtrlSetData($editDmName, $info[19])&lt;br /&gt;
			GUICtrlSetData($editDmSerial, $info[20])&lt;br /&gt;
			GUICtrlSetData($editDmDesc, $info[21])&lt;br /&gt;
			GUICtrlSetData($editVerIE, $info[26])&lt;br /&gt;
			; Set field BkColor to red if below v7&lt;br /&gt;
			If StringLeft($info[26], 1) &amp;lt; 7 Then&lt;br /&gt;
				GUICtrlSetBkColor($editVerIE, 0xEECCCC)&lt;br /&gt;
			Else&lt;br /&gt;
				GUICtrlSetBkColor($editVerIE, Default)&lt;br /&gt;
			EndIf&lt;br /&gt;
			GUICtrlSetData($editVerJava, $info[27])&lt;br /&gt;
			; Set field BkColor to red if below v1.4&lt;br /&gt;
			If $info[27] &amp;lt; 1.4 Or $info[27] = &amp;quot;&amp;quot; Then&lt;br /&gt;
				GUICtrlSetBkColor($editVerJava, 0xEECCCC)&lt;br /&gt;
			Else&lt;br /&gt;
				GUICtrlSetBkColor($editVerJava, Default)&lt;br /&gt;
			EndIf&lt;br /&gt;
			GUICtrlSetData($editLD, $info[28])&lt;br /&gt;
			; Set field BkColor to red if below v1.4&lt;br /&gt;
			If $info[28] = &amp;quot;Not running.&amp;quot; Then&lt;br /&gt;
				GUICtrlSetBkColor($editLD, 0xEECCCC)&lt;br /&gt;
			Else&lt;br /&gt;
				GUICtrlSetBkColor($editLD, Default)&lt;br /&gt;
			EndIf&lt;br /&gt;
&lt;br /&gt;
			; printer&lt;br /&gt;
			GUICtrlSetData($editPrinter, $info[29])&lt;br /&gt;
&lt;br /&gt;
			GUICtrlSetTip($editUser, $info[24], $info[22], 1)&lt;br /&gt;
			GUICtrlSetTip($editDefaultUser, $info[25], $info[23], 1)&lt;br /&gt;
	EndSelect&lt;br /&gt;
&lt;br /&gt;
	Return 1&lt;br /&gt;
&lt;br /&gt;
EndFunc   ;==&amp;gt;_go&lt;br /&gt;
&lt;br /&gt;
Exit&lt;br /&gt;
&lt;br /&gt;
Func _wmiInfo($compName)&lt;br /&gt;
&lt;br /&gt;
	; seterror if the computername string contains illegal characters&lt;br /&gt;
	If Not _computerNameLegal($compName) Then&lt;br /&gt;
		SetError(8)&lt;br /&gt;
		Return&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	; init object variables&lt;br /&gt;
	Dim $objWMIService, $objAccount&lt;br /&gt;
	Dim $colBios, $colCSP, $colLMC, $colOS, $colNic, $colSysEnc, $colDM&lt;br /&gt;
	Dim $dmEDID, $dmPNPDID, $dmName&lt;br /&gt;
	Dim $arrCU&lt;br /&gt;
	Dim $ping = Ping($compName, 1000)&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Select&lt;br /&gt;
			Case @error = 1&lt;br /&gt;
				SetError(7)&lt;br /&gt;
				Return &amp;quot;Computer is offline.&amp;quot;&lt;br /&gt;
			Case @error = 2&lt;br /&gt;
				SetError(7)&lt;br /&gt;
				Return &amp;quot;Computer is unreachable.&amp;quot;&lt;br /&gt;
			Case @error = 3&lt;br /&gt;
				SetError(7)&lt;br /&gt;
				Return &amp;quot;Bad destination, please check the name.&amp;quot;&lt;br /&gt;
			Case @error = 4&lt;br /&gt;
				SetError(7)&lt;br /&gt;
				Return &amp;quot;Problem contacting address.&amp;quot;&lt;br /&gt;
		EndSelect&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	; init arrays we&#039;ll return&lt;br /&gt;
	Dim $info[31], $mInfo, $infoW, $SID&lt;br /&gt;
&lt;br /&gt;
	; get IP for no good damn reason&lt;br /&gt;
	TCPStartup()&lt;br /&gt;
	$info[11] = TCPNameToIP($compName)&lt;br /&gt;
	TCPShutdown()&lt;br /&gt;
&lt;br /&gt;
	; start the response timer&lt;br /&gt;
	Dim $timer = TimerInit()&lt;br /&gt;
&lt;br /&gt;
	; get the WIM object&lt;br /&gt;
	$objWMIService = ObjGet(&amp;quot;winmgmts:\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\root\cimv2&amp;quot;)&lt;br /&gt;
	;$objRegistry = ObjGet(&amp;quot;winmgmts:\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\root\default:StdRegProv&amp;quot;)&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Time after WMI connection: &amp;quot; &amp;amp; TimerDiff($timer) &amp;amp; @CRLF)&lt;br /&gt;
	; get defaultusername &amp;amp; software versions from the registry&lt;br /&gt;
	$info[7] = RegRead(&amp;quot;\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon&amp;quot;, &amp;quot;DefaultUserName&amp;quot;)&lt;br /&gt;
	$info[30] = RegRead(&amp;quot;\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon&amp;quot;, &amp;quot;DefaultDomainName&amp;quot;)&lt;br /&gt;
	$info[26] = RegRead(&amp;quot;\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\HKLM\SOFTWARE\Microsoft\Internet Explorer&amp;quot;, &amp;quot;Version&amp;quot;)&lt;br /&gt;
	$info[27] = RegRead(&amp;quot;\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\HKLM\SOFTWARE\JavaSoft\Java Runtime Environment&amp;quot;, &amp;quot;CurrentVersion&amp;quot;)&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Time after registry: &amp;quot; &amp;amp; TimerDiff($timer) &amp;amp; @CRLF)&lt;br /&gt;
	; check to see if the WMI object exists; if not, seterror and return&lt;br /&gt;
	; this check should now be deprecated due to the use of ping()&lt;br /&gt;
	If Not IsObj($objWMIService) Then&lt;br /&gt;
		SetError(9, TimerDiff($timer))&lt;br /&gt;
		Return&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	$info[17] = Round($ping, -1) &amp;amp; &amp;quot;ms&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	; check if LD remote agent (issuser) is running&lt;br /&gt;
	$info[28] = _processExists(&amp;quot;issuser.exe&amp;quot;, $compName)&lt;br /&gt;
&lt;br /&gt;
	If Not $info[28] Then&lt;br /&gt;
		$info[28] = &amp;quot;Not running.&amp;quot;&lt;br /&gt;
	Else&lt;br /&gt;
		$info[28] = &amp;quot;Running (PID: &amp;quot; &amp;amp; $info[28] &amp;amp; &amp;quot;)&amp;quot;&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	; execquery on all the info groups we&#039;ll need&lt;br /&gt;
	$colBios = $objWMIService.execquery(&amp;quot;Select * From Win32_BIOS&amp;quot;)&lt;br /&gt;
	$colSysEnc = $objWMIService.execquery(&amp;quot;Select * From Win32_SystemEnclosure&amp;quot;)&lt;br /&gt;
	$colCSP = $objWMIService.execquery(&amp;quot;Select * from Win32_ComputerSystem&amp;quot;)&lt;br /&gt;
	$colLMC = $objWMIService.execquery(&amp;quot;Select * from Win32_LogicalMemoryConfiguration&amp;quot;)&lt;br /&gt;
	$colOS = $objWMIService.execquery(&amp;quot;Select * from Win32_OperatingSystem&amp;quot;)&lt;br /&gt;
	$colNic = $objWMIService.execquery(&amp;quot;SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True&amp;quot;)&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Time after queries: &amp;quot; &amp;amp; TimerDiff($timer) &amp;amp; @CRLF)&lt;br /&gt;
	$info[8] = _extractOU(_getDN($compName))&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Time after DN: &amp;quot; &amp;amp; TimerDiff($timer) &amp;amp; @CRLF)&lt;br /&gt;
	; get monitor info&lt;br /&gt;
	$mInfo = monitorInfo($compName)&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Time after monitorInfo: &amp;quot; &amp;amp; TimerDiff($timer) &amp;amp; @CRLF)&lt;br /&gt;
	If IsArray($mInfo) Then&lt;br /&gt;
		$info[19] = $mInfo[0] ; model&lt;br /&gt;
		$info[20] = $mInfo[1] ; serial&lt;br /&gt;
		$info[21] = $mInfo[2] ; name&lt;br /&gt;
	Else&lt;br /&gt;
		$info[19] = &amp;quot;No valid EDID found.&amp;quot;&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	; grab computer model &amp;amp; current user&lt;br /&gt;
	For $objCSP In $colCSP&lt;br /&gt;
		$info[0] = StringStripWS($objCSP.Manufacturer, 2) &amp;amp; &amp;quot; &amp;quot; &amp;amp; $objCSP.Model&lt;br /&gt;
		$info[6] = $objCSP.UserName&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; get current user full name and description&lt;br /&gt;
	If $info[6] &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
		$arrCU = StringSplit($info[6], &amp;quot;\&amp;quot;, 2)&lt;br /&gt;
		$objAccount = $objWMIService.Get(&#039;Win32_UserAccount.Name=&amp;quot;&#039; &amp;amp; $arrCU[1] &amp;amp; &#039;&amp;quot;,Domain=&amp;quot;&#039; &amp;amp; $arrCU[0] &amp;amp; &#039;&amp;quot;&#039;)&lt;br /&gt;
		If IsObj($objAccount) Then&lt;br /&gt;
			$info[22] = $objAccount.FullName&lt;br /&gt;
			$info[24] = $objAccount.Description&lt;br /&gt;
			$SID = $objAccount.SID&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
	;if $debug Then ConsoleWrite( $arrCU[1] &amp;amp; &amp;quot; SID: &amp;quot; &amp;amp; $SID &amp;amp; @CRLF )&lt;br /&gt;
&lt;br /&gt;
	; get default user full name and description&lt;br /&gt;
	$objAccount = $objWMIService.Get(&amp;quot;Win32_UserAccount.Name=&#039;&amp;quot; &amp;amp; $info[7] &amp;amp; &amp;quot;&#039;,Domain=&#039;&amp;quot; &amp;amp; $info[30] &amp;amp; &amp;quot;&#039;&amp;quot;)&lt;br /&gt;
	If IsObj($objAccount) Then&lt;br /&gt;
		$info[23] = $objAccount.FullName&lt;br /&gt;
		$info[25] = $objAccount.Description&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	; grab the serial and BIOS version&lt;br /&gt;
	For $objBios In $colBios&lt;br /&gt;
		$info[1] = $objBios.SerialNumber&lt;br /&gt;
		$info[2] = $objBios.SMBIOSBIOSVersion&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; grab the asset tag, if available (it will be on HP dc7900s and possibly others)&lt;br /&gt;
	For $objSysEnc In $colSysEnc&lt;br /&gt;
		$info[10] = $objSysEnc.SMBIOSAssetTag&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; set to N/A if it didn&#039;t exist for returning purposes&lt;br /&gt;
	If StringIsSpace($info[10]) Then $info[10] = &amp;quot;Asset tag not set&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	; grab RAM, convert to GB (&#039;cause who the fuck has less than 1GB nowadays)&lt;br /&gt;
	For $objLMC In $colLMC&lt;br /&gt;
		$info[3] = Round($objLMC.TotalPhysicalMemory / 1048576, 2)&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; grab OS&lt;br /&gt;
	For $objOS In $colOS&lt;br /&gt;
		$info[4] = $objOS.Caption &amp;amp; &amp;quot; &amp;quot; &amp;amp; $objOS.CSDVersion&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; grab MAC&lt;br /&gt;
	For $objNic In $colNic&lt;br /&gt;
		$info[9] = $objNic.MACAddress&lt;br /&gt;
		; check if static IP or not, indicating QS or otherwise special-purpose machine&lt;br /&gt;
		$info[16] = $objNic.DHCPEnabled&lt;br /&gt;
		If $debug Then ConsoleWrite(&amp;quot;DHCPEnabled: &amp;quot; &amp;amp; VarGetType($info[16]) &amp;amp; &amp;quot; | Length: &amp;quot; &amp;amp; StringLen($info[16]) &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Time after objWMI grabbing: &amp;quot; &amp;amp; TimerDiff($timer) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
	; get wireless info if available&lt;br /&gt;
	$infoW = wirelessInfo($compName)&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Time after wireless stats: &amp;quot; &amp;amp; TimerDiff($timer) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
	; ssid&lt;br /&gt;
	$info[12] = $infoW[0]&lt;br /&gt;
	; signal&lt;br /&gt;
	$info[13] = $infoW[1]&lt;br /&gt;
	; noise&lt;br /&gt;
	$info[14] = $infoW[2]&lt;br /&gt;
	; channel&lt;br /&gt;
	$info[15] = $infoW[3]&lt;br /&gt;
	; BSSID&lt;br /&gt;
	$info[18] = $infoW[4]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	; Strip whitespace from end of model string, &#039;cause there&#039;s usually a lot&lt;br /&gt;
	$info[0] = StringStripWS($info[0], 2)&lt;br /&gt;
&lt;br /&gt;
	; get the TOTAL query time now&lt;br /&gt;
	$info[5] = Round(TimerDiff($timer), -1) &amp;amp; &amp;quot;ms&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	If $SID Then _&lt;br /&gt;
			$info[29] = defPrinterInfo($SID, $compName)&lt;br /&gt;
&lt;br /&gt;
	Return $info&lt;br /&gt;
&lt;br /&gt;
EndFunc   ;==&amp;gt;_wmiInfo&lt;br /&gt;
&lt;br /&gt;
Func _currentUser($compName)&lt;br /&gt;
	Dim $objWMIService&lt;br /&gt;
	Dim $colCSP&lt;br /&gt;
	Dim $user&lt;br /&gt;
&lt;br /&gt;
	$objWMIService = ObjGet(&amp;quot;winmgmts:\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\root\cimv2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	If Not IsObj($objWMIService) Then Return&lt;br /&gt;
&lt;br /&gt;
	$colCSP = $objWMIService.execquery(&amp;quot;Select * from Win32_ComputerSystem&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	For $objCSP In $colCSP&lt;br /&gt;
		$user = $objCSP.UserName&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	Return $user&lt;br /&gt;
&lt;br /&gt;
EndFunc   ;==&amp;gt;_currentUser&lt;br /&gt;
&lt;br /&gt;
Func _getDN($compName)&lt;br /&gt;
	Dim $objTrans, $objDomain&lt;br /&gt;
	Const $ADS_NAME_TYPE_1779 = 1&lt;br /&gt;
	Const $ADS_NAME_INITTYPE_GC = 3&lt;br /&gt;
	Const $ADS_NAME_TYPE_NT4 = 3&lt;br /&gt;
&lt;br /&gt;
	$objTranslate = ObjCreate(&amp;quot;NameTranslate&amp;quot;)&lt;br /&gt;
	$objDomain = ObjGet(&amp;quot;LDAP://rootDse&amp;quot;)&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return &amp;quot;Could not contact domain controller.&amp;quot;&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	$objTranslate.Init($ADS_NAME_INITTYPE_GC, &amp;quot;&amp;quot;)&lt;br /&gt;
	$objTranslate.Set($ADS_NAME_TYPE_NT4, @LogonDomain &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;$&amp;quot;)&lt;br /&gt;
	$compDN = $objTranslate.Get($ADS_NAME_TYPE_1779)&lt;br /&gt;
	;Set DN to upper Case&lt;br /&gt;
	$compDN = StringUpper($compDN)&lt;br /&gt;
&lt;br /&gt;
	Return $compDN&lt;br /&gt;
&lt;br /&gt;
EndFunc   ;==&amp;gt;_getDN&lt;br /&gt;
&lt;br /&gt;
Func upStatus($msg, $flash = 0, $color = 0x88DDCC)&lt;br /&gt;
	_GUICtrlStatusBar_SetText($statusBar, _NowTime(5) &amp;amp; &amp;quot; &amp;gt;&amp;quot;, 0)&lt;br /&gt;
	_GUICtrlStatusBar_SetText($statusBar, $msg, 1)&lt;br /&gt;
&lt;br /&gt;
	If $flash Then&lt;br /&gt;
		;for $i=0 to 3&lt;br /&gt;
		;	_GUICtrlStatusBar_SetBkColor($statusBar, $color)&lt;br /&gt;
		;	Sleep(500)&lt;br /&gt;
		;	_GUICtrlStatusBar_SetBkColor($statusBar, $CLR_DEFAULT)&lt;br /&gt;
		;	Sleep(500)&lt;br /&gt;
		;Next&lt;br /&gt;
	Else&lt;br /&gt;
		_GUICtrlStatusBar_SetBkColor($statusBar, $CLR_MONEYGREEN)&lt;br /&gt;
		Sleep(250)&lt;br /&gt;
		_GUICtrlStatusBar_SetBkColor($statusBar, $CLR_DEFAULT)&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;upStatus&lt;br /&gt;
&lt;br /&gt;
Func _extractOU($DN)&lt;br /&gt;
	; We want to turn this&lt;br /&gt;
	; CN=compName,OU=Group3,OU=Group2,OU=Group1,DC=site,DC=com&lt;br /&gt;
	; into this&lt;br /&gt;
	; Group3&lt;br /&gt;
	;&lt;br /&gt;
	; HAHA THIS WAS SO EASY, THANKS StringSplit()&lt;br /&gt;
	If $DN = &amp;quot;Could not contact domain controller.&amp;quot; Then Return $DN&lt;br /&gt;
&lt;br /&gt;
	Dim $OU, $arrDN&lt;br /&gt;
	$arrDN = StringSplit($DN, &amp;quot;,&amp;quot;, 2)&lt;br /&gt;
	$OU = StringTrimLeft($arrDN[1], 3)&lt;br /&gt;
&lt;br /&gt;
	Return $OU&lt;br /&gt;
EndFunc   ;==&amp;gt;_extractOU&lt;br /&gt;
&lt;br /&gt;
Func _displayName($logon)&lt;br /&gt;
	$objDomain = ObjGet(&amp;quot;LDAP://rootDse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	;$objDomain.&lt;br /&gt;
&lt;br /&gt;
EndFunc   ;==&amp;gt;_displayName&lt;br /&gt;
&lt;br /&gt;
Func _computerNameLegal($compName)&lt;br /&gt;
	Dim $i&lt;br /&gt;
	Const $illegalChars = StringToASCIIArray(&amp;quot;`~!@#$ ^&amp;amp;*()=+[]{}\|;:&#039;,&amp;lt;&amp;gt;/?&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	For $i = 0 To UBound($illegalChars) - 1&lt;br /&gt;
		If StringInStr($compName, Chr($illegalChars[$i])) Then&lt;br /&gt;
			; return 0 if computer name contains bad characters&lt;br /&gt;
			Return 0&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; return 1 if computer name is OK, in keeping with 1=success/0=failure autoit function return codes&lt;br /&gt;
	Return 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_computerNameLegal&lt;br /&gt;
&lt;br /&gt;
Func aboutDiag()&lt;br /&gt;
	GUISetState(@SW_DISABLE)&lt;br /&gt;
	MsgBox(64, &amp;quot;About&amp;quot;, &amp;quot;remoteWmiInfo &amp;quot; &amp;amp; $version &amp;amp; @CR &amp;amp; _&lt;br /&gt;
			&amp;quot;© Jon Dunham 2009&amp;quot; &amp;amp; @CR &amp;amp; _&lt;br /&gt;
			&amp;quot;dunham.jon@gmail.com&amp;quot; &amp;amp; @CR &amp;amp; @CR)&lt;br /&gt;
	GUISetState(@SW_ENABLE)&lt;br /&gt;
	WinActivate($frmInfo)&lt;br /&gt;
EndFunc   ;==&amp;gt;aboutDiag&lt;br /&gt;
&lt;br /&gt;
Func monitorInfo($compName = &amp;quot;.&amp;quot;)&lt;br /&gt;
	; Dell serial - 78 characters in (without MX0 or CN0 prefix)&lt;br /&gt;
	; HP serial - 114 characters in&lt;br /&gt;
	; both models - 96 (192 hex) characters in&lt;br /&gt;
	;&lt;br /&gt;
	; this function runs assuming the computer has already been contacted,&lt;br /&gt;
	;  otherwise it will hang for ~82 seconds trying to contact the WMI service&lt;br /&gt;
	;&lt;br /&gt;
	Dim $colDM, $PNPDID, $EDID, $Name&lt;br /&gt;
	Dim $objWMIService = ObjGet(&amp;quot;winmgmts:\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\root\cimv2&amp;quot;)&lt;br /&gt;
	$colDM = $objWMIService.execquery(&#039;SELECT * FROM Win32_DesktopMonitor WHERE PNPDeviceID IS NOT NULL&#039;)&lt;br /&gt;
&lt;br /&gt;
	For $objDM In $colDM&lt;br /&gt;
		; this is the best scenario we want (powered on/connected).&lt;br /&gt;
		;  Generally all other DesktopMonitor.Availability = 8 (off-line)&lt;br /&gt;
		If $objDM.Availability = 3 Then &lt;br /&gt;
			$PNPDID = $objDM.PNPDeviceID&lt;br /&gt;
			$Name = $objDM.Name&lt;br /&gt;
			$EDID = RegRead(&amp;quot;\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\HKLM\SYSTEM\CurrentControlSet\Enum\&amp;quot; &amp;amp; $PNPDID &amp;amp; &amp;quot;\Device Parameters&amp;quot;, &amp;quot;EDID&amp;quot;)&lt;br /&gt;
			If Not @error Then&lt;br /&gt;
				ExitLoop&lt;br /&gt;
			;if there isn&#039;t an EDID for this, continueloop and get it from the next monitor with a PNPDeviceID&lt;br /&gt;
			Else&lt;br /&gt;
				ContinueLoop &lt;br /&gt;
			EndIf&lt;br /&gt;
		; this may or may not indicate the currently connected display device.&lt;br /&gt;
		;  Display status reporting seems to be sketchy at best with WMI&lt;br /&gt;
		Else&lt;br /&gt;
			$PNPDID = $objDM.PNPDeviceID&lt;br /&gt;
			$Name = $objDM.Name&lt;br /&gt;
			$EDID = RegRead(&amp;quot;\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\HKLM\SYSTEM\CurrentControlSet\Enum\&amp;quot; &amp;amp; $PNPDID &amp;amp; &amp;quot;\Device Parameters&amp;quot;, &amp;quot;EDID&amp;quot;)&lt;br /&gt;
			If Not @error Then&lt;br /&gt;
				ExitLoop&lt;br /&gt;
			Else&lt;br /&gt;
				ContinueLoop&lt;br /&gt;
			EndIf&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	If $debug Then ConsoleWrite($Name &amp;amp; &amp;quot;: &amp;quot; &amp;amp; $objDM.Availability &amp;amp; &amp;quot; \ &amp;quot; &amp;amp; $PNPDID &amp;amp; @LF &amp;amp; @LF &amp;amp; $EDID &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
	If Not IsBinary($EDID) Then&lt;br /&gt;
		SetError(1)&lt;br /&gt;
		Return @error&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Dim $info[3], $serial, $model&lt;br /&gt;
&lt;br /&gt;
	$model = StringStripWS(StringMid(BinaryToString($EDID), 96, 12), 2)&lt;br /&gt;
&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Model: &amp;quot; &amp;amp; $model &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
	Select&lt;br /&gt;
		Case StringLeft($model, 2) = &amp;quot;HP&amp;quot;&lt;br /&gt;
			If $debug Then ConsoleWrite(&amp;quot;HP found&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
			$serial = StringMid(BinaryToString($EDID), 114, 10)&lt;br /&gt;
		Case StringLeft($model, 2) = &amp;quot;DE&amp;quot;&lt;br /&gt;
			If $debug Then ConsoleWrite(&amp;quot;Dell found&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
			$serial = StringMid(BinaryToString($EDID), 78, 12)&lt;br /&gt;
			$serial = &amp;quot;[ MX0 | CN0 ]&amp;quot; &amp;amp; StringLeft($serial, 5) &amp;amp; &amp;quot;XXXXX&amp;quot; &amp;amp; StringRight($serial, 7)&lt;br /&gt;
		Case StringLeft($model, 2) = &amp;quot;LG&amp;quot;&lt;br /&gt;
			If $debug Then ConsoleWrite(&amp;quot;LG found&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
			$serial = StringMid(BinaryToString($EDID), 114, 12) &amp;amp; &amp;quot; (may be the model)&amp;quot;&lt;br /&gt;
	EndSelect&lt;br /&gt;
&lt;br /&gt;
	If $debug Then ConsoleWrite(&amp;quot;Serial: &amp;quot; &amp;amp; $serial &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
	$info[0] = $model&lt;br /&gt;
	$info[1] = $serial&lt;br /&gt;
	$info[2] = $Name&lt;br /&gt;
&lt;br /&gt;
	Return $info&lt;br /&gt;
EndFunc   ;==&amp;gt;monitorInfo&lt;br /&gt;
&lt;br /&gt;
Func _processExists($procName, $compName = &amp;quot;.&amp;quot;)&lt;br /&gt;
	$oWMIService = ObjGet(&amp;quot;winmgmts:\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\root\CIMV2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	If Not IsObj($oWMIService) Then&lt;br /&gt;
		SetError(1)&lt;br /&gt;
		Return&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Dim $handle, $colProc&lt;br /&gt;
&lt;br /&gt;
	$cProc = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_Process WHERE Name = &amp;quot;&#039; &amp;amp; $procName &amp;amp; &#039;&amp;quot;&#039;)&lt;br /&gt;
&lt;br /&gt;
	For $oProc In $cProc&lt;br /&gt;
		$handle = $oProc.Handle&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	If $handle Then&lt;br /&gt;
		Return $handle&lt;br /&gt;
	Else&lt;br /&gt;
		Return 0&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_processExists&lt;br /&gt;
&lt;br /&gt;
Func guiFlash(ByRef $control, $color, $duration = 200, $times = 2, $tween = 0.4)&lt;br /&gt;
	$sleep1 = ($duration / $times) * $tween&lt;br /&gt;
	$sleep2 = ($duration / $times) * (1 - $tween)&lt;br /&gt;
&lt;br /&gt;
	If $control &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
		If IsHWnd($control) Then&lt;br /&gt;
			For $i = 1 To $times&lt;br /&gt;
				GUISetBkColor($control, $color)&lt;br /&gt;
				Sleep($sleep1)&lt;br /&gt;
				GUISetBkColor($control, Default)&lt;br /&gt;
				Sleep($sleep2)&lt;br /&gt;
			Next&lt;br /&gt;
		Else&lt;br /&gt;
			For $i = 1 To $times&lt;br /&gt;
				GUICtrlSetBkColor($control, $color)&lt;br /&gt;
				Sleep($sleep1)&lt;br /&gt;
				GUICtrlSetBkColor($control, Default)&lt;br /&gt;
				Sleep($sleep2)&lt;br /&gt;
			Next&lt;br /&gt;
		EndIf&lt;br /&gt;
	Else&lt;br /&gt;
		Return 0&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return 1&lt;br /&gt;
EndFunc   ;==&amp;gt;guiFlash&lt;br /&gt;
&lt;br /&gt;
Func defPrinterInfo($SID, $compName = &amp;quot;.&amp;quot;)&lt;br /&gt;
	$defPrintString = RegRead(&amp;quot;\\&amp;quot; &amp;amp; $compName &amp;amp; &amp;quot;\HKU\&amp;quot; &amp;amp; $SID &amp;amp; &amp;quot;\Software\Microsoft\Windows NT\CurrentVersion\Windows&amp;quot;, &amp;quot;Device&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	$info = StringSplit($defPrintString, &amp;quot;,&amp;quot;, 2)&lt;br /&gt;
	$defPrinter = $info[0]&lt;br /&gt;
&lt;br /&gt;
	Return $defPrinter&lt;br /&gt;
EndFunc   ;==&amp;gt;defPrinterInfo&lt;br /&gt;
&lt;br /&gt;
Func wirelessInfo($strComputer = &amp;quot;.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	Dim $objWMIService = ObjGet(&amp;quot;winmgmts:\\&amp;quot; &amp;amp; $strComputer &amp;amp; &amp;quot;\root\WMI&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	; Was the computer contactable?&lt;br /&gt;
	If Not IsObj($objWMIService) Then&lt;br /&gt;
		Return 2&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Dim $SSID, $BSSID, $signal, $noise, $channel, $info[5]&lt;br /&gt;
	Dim $raw&lt;br /&gt;
	Const $channels[24] = [&amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;5&amp;quot;, &amp;quot;6&amp;quot;, &amp;quot;7&amp;quot;, &amp;quot;8&amp;quot;, &amp;quot;9&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;11&amp;quot;, &amp;quot;40&amp;quot;, &amp;quot;36&amp;quot;, &amp;quot;44&amp;quot;, &amp;quot;48&amp;quot;, &amp;quot;52&amp;quot;, _&lt;br /&gt;
		&amp;quot;56&amp;quot;, &amp;quot;60&amp;quot;, &amp;quot;64&amp;quot;, &amp;quot;149&amp;quot;, &amp;quot;153&amp;quot;, &amp;quot;157&amp;quot;, &amp;quot;161&amp;quot;, &amp;quot;165&amp;quot;]&lt;br /&gt;
	Const $frequencies[24] = [&amp;quot;2412000&amp;quot;, &amp;quot;2417000&amp;quot;, &amp;quot;2422000&amp;quot;, &amp;quot;2427000&amp;quot;, &amp;quot;2432000&amp;quot;, &amp;quot;2437000&amp;quot;, &amp;quot;2442000&amp;quot;, &amp;quot;2447000&amp;quot;, _&lt;br /&gt;
	&amp;quot;2452000&amp;quot;, &amp;quot;2457000&amp;quot;, &amp;quot;2462000&amp;quot;, &amp;quot;5200000&amp;quot;, &amp;quot;5180000&amp;quot;, &amp;quot;5220000&amp;quot;, &amp;quot;5240000&amp;quot;, &amp;quot;5260000&amp;quot;, &amp;quot;5280000&amp;quot;, &amp;quot;5300000&amp;quot;, &amp;quot;5320000&amp;quot;, _&lt;br /&gt;
	&amp;quot;5745000&amp;quot;, &amp;quot;5765000&amp;quot;, &amp;quot;5785000&amp;quot;, &amp;quot;5805000&amp;quot;, &amp;quot;5825000&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
	; Signal&lt;br /&gt;
&lt;br /&gt;
	$colWifi = $objWMIService.ExecQuery(&amp;quot;Select * From MSNdis_80211_ReceivedSignalStrength where Active = True&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	For $objWifi In $colWifi&lt;br /&gt;
		$signal = $objWifi.NDIS80211ReceivedSignalStrength &amp;amp; &amp;quot; dBm&amp;quot;&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; Noise&lt;br /&gt;
&lt;br /&gt;
	$colWifi = $objWMIService.ExecQuery(&amp;quot;SELECT * FROM Atheros5000_NoiseFloor where Active = True&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	For $objWifi In $colWifi&lt;br /&gt;
		$noise = -$objWifi.Value &amp;amp; &amp;quot; dBm&amp;quot;&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; SSID&lt;br /&gt;
&lt;br /&gt;
	$colWifi = $objWMIService.ExecQuery(&amp;quot;Select * From MSNdis_80211_ServiceSetIdentifier&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	For $objWifi In $colWifi&lt;br /&gt;
		$SSID = $objWifi.NDIS80211SSID&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	For $i = 0 To UBound($SSID) - 1&lt;br /&gt;
		If $SSID[$i] &amp;lt; 32 Or $SSID[$i] &amp;gt; 127 Then&lt;br /&gt;
			$SSID[$i] = &amp;quot;&amp;quot;&lt;br /&gt;
		Else&lt;br /&gt;
			$SSID[$i] = Chr($SSID[$i])&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	$SSID = _ArrayToString($SSID, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	; AP MAC&lt;br /&gt;
&lt;br /&gt;
	$colWifi = $objWMIService.ExecQuery(&amp;quot;Select * From MSNdis_80211_BaseServiceSetIdentifier WHERE Active = True&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	For $objWifi In $colWifi&lt;br /&gt;
		$BSSID = $objWifi.NDIS80211MacAddress&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	For $i = 0 To UBound($BSSID) - 1&lt;br /&gt;
		$BSSID[$i] = Hex($BSSID[$i], 2)&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; Channel&lt;br /&gt;
&lt;br /&gt;
	$colWifi = $objWMIService.ExecQuery(&amp;quot;Select * From MSNdis_80211_Configuration WHERE Active = True&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	For $objWifi In $colWifi&lt;br /&gt;
		$raw = $objWifi.Ndis80211Config.DSConfig&lt;br /&gt;
&lt;br /&gt;
		For $i = 0 To UBound($frequencies) - 1&lt;br /&gt;
			If $raw = $frequencies[$i] Then&lt;br /&gt;
				$channel = $channels[$i]&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	; Formatting (use stringreplace($info[4], &amp;quot;:&amp;quot;, &amp;quot;&amp;quot;) to remove or replace colons in the AP MAC if desired)&lt;br /&gt;
&lt;br /&gt;
	$BSSID = _ArrayToString($BSSID, &amp;quot;:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	$info[0] = $SSID&lt;br /&gt;
	$info[1] = $signal&lt;br /&gt;
	$info[2] = $noise&lt;br /&gt;
	$info[3] = $channel&lt;br /&gt;
	$info[4] = $BSSID&lt;br /&gt;
&lt;br /&gt;
	Return $info&lt;br /&gt;
&lt;br /&gt;
EndFunc   ;==&amp;gt;wirelessInfo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>IEvKI3gv9Wrkd41u</name></author>
	</entry>
</feed>