<?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=Spudw2k</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=Spudw2k"/>
	<link rel="alternate" type="text/html" href="https://www.autoitscript.com/wiki/Special:Contributions/Spudw2k"/>
	<updated>2026-05-14T13:40:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13656</id>
		<title>Snippets ( Internet )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13656"/>
		<updated>2017-06-30T05:16:00Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: Undo revision 13655 by Spudw2k (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Auto-Check For User To Update ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 4920-valuater&lt;br /&gt;
 | AuthorName = Valuater&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Auto-Check For User To Update&lt;br /&gt;
&lt;br /&gt;
Global $Udif, $QT_web = &amp;quot;www.XPCleanMenu.HostRocket.com&amp;quot;&lt;br /&gt;
Call(&amp;quot;Set_Updater&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;test&lt;br /&gt;
$Uask = MsgBox(68, &amp;quot;Update Notification&amp;quot;, &amp;quot; Your last update was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago.&amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If $Uask = 6 Then MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;Success.  The update was ran.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func Set_Updater()&lt;br /&gt;
	If Not FileExists(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;) Then&lt;br /&gt;
		FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
	Else&lt;br /&gt;
		$Uold = FileReadLine(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, 1)&lt;br /&gt;
&lt;br /&gt;
		If $Uold &amp;gt;=320 Then&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
			Return&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
		$Udif = @YDAY - $Uold&lt;br /&gt;
&lt;br /&gt;
		If $Udif &amp;gt;= 45 Then&lt;br /&gt;
			$Uask = MsgBox(68, &amp;quot;UpDate Notification&amp;quot;, &amp;quot; Your last UpDate was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago  &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?        &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
			If $Uask = 6 Then&lt;br /&gt;
				Run(@ProgramFilesDir &amp;amp; &amp;quot;\Internet Explorer\iexplore.exe &amp;quot; &amp;amp; $QT_web)&lt;br /&gt;
				WinWaitActive(&amp;quot;&amp;quot;)&lt;br /&gt;
			EndIf&lt;br /&gt;
&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
			FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetIEVersion ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Check IE Version.&lt;br /&gt;
ConsoleWrite(_GetIEVersion() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _GetIEVersion()&lt;br /&gt;
    Return StringRegExpReplace(RegRead(&#039;HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\&#039;, &#039;Version&#039;), &#039;^(\d+\.\d+).*&#039;, &#039;$1&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetIEVersion&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetTimeOnline ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
 | Desc = Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
ConsoleWrite(_GetTimeOnline(0) &amp;amp; @CRLF) ; TimeZone UTC.&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _GetTimeOnline&lt;br /&gt;
; Description ...: Retrieve the current date and time from TimeAPI.org.&lt;br /&gt;
; Syntax ........: _GetTimeOnline($iTimeZone)&lt;br /&gt;
; Parameters ....: $iTimeZone           - An integer value of the timezone .&lt;br /&gt;
;				   0 - UTC (Universal Time)&lt;br /&gt;
;				   1 - EST (Eastern Time)&lt;br /&gt;
;				   2 - CST (Central Time)&lt;br /&gt;
;				   3 - MST (Mountain Time)&lt;br /&gt;
;				   4 - PST (Pacific Time)&lt;br /&gt;
;				   5 - AKST (Alaska Time)&lt;br /&gt;
;				   6 - HAST (Hawaii-Aleutian Time)&lt;br /&gt;
; Return values .: Success: Returns the current Date and Time in the format YYYY/MM/DD HH:MM:SS&lt;br /&gt;
;				   Failure: Sets @error to non-zero and returns the same format as a successful return but using the system time.&lt;br /&gt;
; Author ........: guinness&lt;br /&gt;
; Link ..........: According to http://www.programmableweb.com/api/timeapi, this is for non-commercial use.&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _GetTimeOnline($iTimeZone)&lt;br /&gt;
	Local $aTimeZone[7] = [&#039;utc&#039;, &#039;est&#039;, &#039;cst&#039;, &#039;mst&#039;, &#039;pst&#039;, &#039;akst&#039;, &#039;hast&#039;]&lt;br /&gt;
&lt;br /&gt;
	Local $sRead = BinaryToString(InetRead(&#039;http://www.timeapi.org/&#039; &amp;amp; $aTimeZone[$iTimeZone] &amp;amp; &#039;/now?format=\Y/\m/\d%20\H:\M:\S&#039;))&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, @YEAR &amp;amp; &#039;/&#039; &amp;amp; @MON &amp;amp; &#039;/&#039; &amp;amp; @MDAY &amp;amp; &#039; &#039; &amp;amp; @HOUR &amp;amp; &#039;:&#039; &amp;amp; @MIN &amp;amp; &#039;:&#039; &amp;amp; @SEC)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $sRead&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetTimeOnline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _HTML_StripTags ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 25246-robjong&lt;br /&gt;
 | AuthorName = Robjong&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox(4096, &amp;quot;&amp;quot;, _HTML_StripTags(&amp;quot;This should be # - (&amp;amp;#35;)&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
; Strip HTML tags from HTML syntax. By Robjong.&lt;br /&gt;
Func _HTML_StripTags($sHTMLData) ; http://www.autoitscript.com/forum/topic/...tml-data/page__view__findpost_&lt;br /&gt;
    If $sHTMLData = &amp;quot;&amp;quot; Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Local $oHTML = ObjCreate(&amp;quot;HTMLFILE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    If @error Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    $oHTML.Open()&lt;br /&gt;
    $oHTML.Write($sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Return SetError(0, 0, $oHTML.Body.InnerText)&lt;br /&gt;
EndFunc   ;==&amp;gt;_HTML_StripTags&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _InetGetOutOfProcess ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_InetGetOutOfProcess(&#039;http://google.com&#039;, @TempDir &amp;amp; &#039;\Google.tmp&#039;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Download a file by spawning a new AutoIt process.&lt;br /&gt;
Func _InetGetOutOfProcess($sURL, $sFilePath, $iOptions = 0)&lt;br /&gt;
    Return RunWait(&#039;&amp;quot;&#039; &amp;amp; @AutoItExe &amp;amp; &#039;&amp;quot; /AutoIt3ExecuteLine &#039; &amp;amp; &#039;&amp;quot;Exit InetGet(&amp;quot;&amp;quot;&#039; &amp;amp; $sURL &amp;amp; &#039;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot;&amp;quot;, &#039; &amp;amp; $iOptions &amp;amp; &#039;, 0)&amp;quot;&#039;) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_InetGetOutOfProcess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsInternetConnected ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&amp;quot;Internet Is Connected&amp;quot; &amp;amp; &amp;quot; = &amp;quot; &amp;amp; _IsInternetConnected() &amp;amp; @CRLF) ; ( Returns &amp;quot;True&amp;quot; Or &amp;quot;False&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Func _IsInternetConnected()&lt;br /&gt;
    Local $aReturn = DllCall(&#039;connect.dll&#039;, &#039;long&#039;, &#039;IsInternetConnected&#039;)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsInternetConnected&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 30100-jguinch&lt;br /&gt;
 | AuthorName = jguinch&lt;br /&gt;
 | Desc = Checks to see if a string is a valid IP address.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Checks to see if a string is a valid IP address.&lt;br /&gt;
&lt;br /&gt;
If _IsIP(&amp;quot;127.0.0.1&amp;quot;) Then Msgbox(0, &amp;quot;&amp;quot;, &amp;quot;Valid IP address.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _IsIP($ip)&lt;br /&gt;
    Return StringRegExp ($ip, &amp;quot;^(?:(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?1)$&amp;quot;)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 20477-mrcreator&lt;br /&gt;
 | AuthorName = MrCreatoR&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local Const $sString = @IPAddress2 &amp;amp; &amp;quot;:8080&amp;quot; ;8080 is port value (for example)&lt;br /&gt;
&lt;br /&gt;
Local Const $GetValidIp = _IsValidIP($sString, &amp;quot;:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite($GetValidIp)&lt;br /&gt;
&lt;br /&gt;
Local $IPsArray = _StringToIPArray(&#039;99.77.88.255 567567567 text 155.99.66.6 some more text &#039; &amp;amp; @IPAddress1 &amp;amp; &#039;,&#039; &amp;amp; @IPAddress2)&lt;br /&gt;
&lt;br /&gt;
_ArrayDisplay($IPsArray)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidIP($sString, Const $sDelim = &amp;quot;&amp;quot;)&lt;br /&gt;
    If Not StringInStr($sString, &amp;quot;.&amp;quot;) Then Return 0&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then $sString = StringLeft($sString, StringInStr($sString, $sDelim) - 1)&lt;br /&gt;
&lt;br /&gt;
    If StringLen($sString) &amp;gt; 15 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    Local $Dot_Split = StringSplit($sString, &amp;quot;.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    Local $iUbound = UBound($Dot_Split) - 1&lt;br /&gt;
&lt;br /&gt;
    If $iUbound &amp;lt;&amp;gt; 4 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To $iUbound&lt;br /&gt;
        If $Dot_Split[$i] = &amp;quot;&amp;quot; Then Return 0&lt;br /&gt;
        If StringRegExp($Dot_Split[$i], &#039;[^0-9]&#039;) Or Number($Dot_Split[$i]) &amp;gt; 255 Then Return 0&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then Return $sString&lt;br /&gt;
    Return 1&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func _StringToIPArray($sString)&lt;br /&gt;
    Local $avArray = StringRegExp($sString, &#039;([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)&#039;, 3)&lt;br /&gt;
    Local $avRetArr[1], $iUbound&lt;br /&gt;
&lt;br /&gt;
    For $i = 0 To UBound($avArray)-1&lt;br /&gt;
        If _IsValidIP($avArray[$i]) Then&lt;br /&gt;
            $iUbound = UBound($avRetArr)&lt;br /&gt;
            ReDim $avRetArr[$iUbound+1]&lt;br /&gt;
            $avRetArr[$iUbound] = $avArray[$i]&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $iUbound = 0 Then Return SetError(1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
    $avRetArr[0] = $iUbound&lt;br /&gt;
    Return $avRetArr&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidSubnetMask ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $aSubnetMaskIP1[] = [255,255,255,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsValidSubnetMask($aSubnetMaskIP1) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP2[] = [255,248,0,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsValidSubnetMask($aSubnetMaskIP2) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP3[] = [255,255,255,1]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsValidSubnetMask($aSubnetMaskIP3) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidSubnetMask($aIP)&lt;br /&gt;
	If Not UBound($aIP)=4 Then Return SetError(1,0,False)	;Validate Input (4 element array)&lt;br /&gt;
&lt;br /&gt;
	Local $hIP = &amp;quot;&amp;quot;, $sHex = &amp;quot;&amp;quot;, $iSubnetDec = 0, $bIsValid = False   ;Define Local Variables&lt;br /&gt;
    For $iX = 0 To 3	;Convert Subnetmask into Hex&lt;br /&gt;
        $sHex &amp;amp;= Hex($aIP[$iX], 2)&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $hIP &amp;amp;= Dec($sHex, 2)	;Convert SubnetHex into Dec&lt;br /&gt;
&lt;br /&gt;
    For $iX = 0 To 32	;Validate Subnet mask congruity with bit logic&lt;br /&gt;
        If (((2 ^ 32) - 1) - ((2 ^ $iX) - 1)) = $hIP Then&lt;br /&gt;
            $bIsValid = True&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    Return $bIsValid&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidSubnetMask&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidURL ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Author: JScript - Snippet Version No. = 1.0&lt;br /&gt;
;Snippet was Created Using AutoIt Version = 3.3.8.1, Creation Date = 22/05/12.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;http:www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidURL($sPath)&lt;br /&gt;
    Local Const $sRet = DllCall(&amp;quot;Shlwapi.dll&amp;quot;, &amp;quot;BOOL&amp;quot;, &amp;quot;PathIsURL&amp;quot;, &amp;quot;str&amp;quot;, $sPath)&lt;br /&gt;
    Return $sRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidURL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Toggle_Images ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 8730-big-daddy&lt;br /&gt;
 | AuthorName = big_daddy&lt;br /&gt;
 | Desc = Toggle Internet Images On/Off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Toggle Internet Images On/Off&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;IE.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opt(&amp;quot;WinTitleMatchMode&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
_Toggle_Images(1)&lt;br /&gt;
Global Const $oIE = _IECreate ()&lt;br /&gt;
&lt;br /&gt;
_IENavigate ($oIE, &amp;quot;http:\\www.google.com&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
While WinExists(&amp;quot;Internet Explorer&amp;quot;)&lt;br /&gt;
    Sleep(250)&lt;br /&gt;
WEnd&lt;br /&gt;
_Toggle_Images()&lt;br /&gt;
&lt;br /&gt;
Func _Toggle_Images($On_Off=0)&lt;br /&gt;
    If $On_Off == 0 Then&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;yes&amp;quot;)&lt;br /&gt;
    Else&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;no&amp;quot;)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc ;==&amp;gt;_Toggle_Images()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Tracert ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_Tracert(&amp;quot;www.duckduckgo.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _Tracert(Const $sURL)&lt;br /&gt;
	; -d = Do Not Resolve Host &amp;amp; -h Is The Number Of Hops.&lt;br /&gt;
	Local Const $sData = _RunStdOutRead(&#039;tracert -d -h 1 &#039; &amp;amp; $sURL, @SystemDir)&lt;br /&gt;
&lt;br /&gt;
	Local Const $aReturn = StringRegExp($sData, &#039;\[([\d.]{7,15})\]&#039;, 3)&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, -1)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $aReturn[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_Tracert&lt;br /&gt;
&lt;br /&gt;
Func _RunStdOutRead($sCommand, $sWorkingDirectory = @SystemDir)&lt;br /&gt;
	Local Const $iPID = Run(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; $sCommand, $sWorkingDirectory, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sOutput = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	While 1&lt;br /&gt;
		$sOutput &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
&lt;br /&gt;
		If @error Then&lt;br /&gt;
			ExitLoop&lt;br /&gt;
		EndIf&lt;br /&gt;
	WEnd&lt;br /&gt;
&lt;br /&gt;
	Return $sOutput&lt;br /&gt;
EndFunc   ;==&amp;gt;_RunStdOutRead&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _ValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 58912-brewmannh&lt;br /&gt;
 | AuthorName = BrewManNH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt; ; This is only needed for the _ArrayDisplay function used in the example below, and is not needed for the _ValidIP function&lt;br /&gt;
&lt;br /&gt;
; IPv4 validation script&lt;br /&gt;
Global Const $IPAddress = &amp;quot;192.168.2.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Global Const $Return = _ValidIP($IPAddress)&lt;br /&gt;
&lt;br /&gt;
If $Return &amp;lt; 0 Then&lt;br /&gt;
    Switch @error&lt;br /&gt;
        Case 1&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&amp;quot;)&lt;br /&gt;
        Case 2&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&amp;quot;)&lt;br /&gt;
        Case 3&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&amp;quot;)&lt;br /&gt;
        Case 4&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 4 - Last octet is either 0 or 255&amp;quot;)&lt;br /&gt;
    EndSwitch&lt;br /&gt;
Else&lt;br /&gt;
    MsgBox(48, &amp;quot;&amp;quot;, $IPAddress &amp;amp; &amp;quot; is a valid Class &amp;quot; &amp;amp; $Return[5] &amp;amp; &amp;quot; IP address&amp;quot;)&lt;br /&gt;
    _ArrayDisplay($Return)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; FUNCTION# ===========================================================================================================&lt;br /&gt;
; Name...........: _ValidIP&lt;br /&gt;
; Description ...: Verifies whether an IP address is a valid IPv4 address or not&lt;br /&gt;
; Syntax.........: _ValidIP($sIP)&lt;br /&gt;
; Parameters ....: $sIP - IP address to validate&lt;br /&gt;
;&lt;br /&gt;
; Return values .: Success - Array containing split IP Address, IP address in Hex, and the Class of the IP address&lt;br /&gt;
;                            array[0] - [3] = the IP address split into octets&lt;br /&gt;
;                            array[4]       = IP address in Hex&lt;br /&gt;
;                            array[5]       = Class of the IP address [A through D]&lt;br /&gt;
;                  Failure - -1, sets @error&lt;br /&gt;
;                  |1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&lt;br /&gt;
;                  |2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&lt;br /&gt;
;                  |3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&lt;br /&gt;
;                  |4 - Last octet ends in 0 or 255 which are invalid for an IP address&lt;br /&gt;
; Author ........: BrewManNH&lt;br /&gt;
; Modified.......:&lt;br /&gt;
; Remarks .......: This will accept an IP address that is 4 octets long, and contains only numbers and falls within&lt;br /&gt;
;                  valid IP address values. Class A networks can&#039;t start with 0 or 127. 169.xx.xx.xx is reserved and is&lt;br /&gt;
;                  invalid and any address that starts above 239, ex. 240.xx.xx.xx is reserved. The address range&lt;br /&gt;
;                  224-239 1s reserved as well for Multicast groups but can be a valid IP address range if you&#039;re using&lt;br /&gt;
;                  it as such. Any IP address ending in 0 or 255 is also invalid for an IP&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; =====================================================================================================================&lt;br /&gt;
Func _ValidIP($sIP)&lt;br /&gt;
    Local $adIPAddressInfo[6]&lt;br /&gt;
&lt;br /&gt;
    Local $aArray = StringSplit($sIP, &amp;quot;.&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
    If Not IsArray($aArray) Or UBound($aArray) &amp;lt;&amp;gt; 4 Then Return SetError(3, 0, -1)&lt;br /&gt;
&lt;br /&gt;
    Local $dString = &amp;quot;0x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    If $aArray[0] &amp;lt;= 0 Or $aArray[0] &amp;gt; 239 Or $aArray[0] = 127 Or $aArray[0] = 169 Then&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    For $I = 0 To 3&lt;br /&gt;
        If $I &amp;lt; 3 Then&lt;br /&gt;
            If $aArray[$I] &amp;lt; 0 Or $aArray[$I] &amp;gt; 255 Or Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        Else&lt;br /&gt;
            If Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
            If $aArray[$I] &amp;lt; 1 Or $aArray[$I] &amp;gt; 254 Then&lt;br /&gt;
                Return SetError(4, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        EndIf&lt;br /&gt;
&lt;br /&gt;
        $dString &amp;amp;= StringRight(Hex($aArray[$I]), 2)&lt;br /&gt;
&lt;br /&gt;
        $adIPAddressInfo[$I] = $aArray[$I]&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $adIPAddressInfo[4] = $dString&lt;br /&gt;
&lt;br /&gt;
    Switch $aArray[0]&lt;br /&gt;
        Case 1 To 126&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;A&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 128 To 191&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;B&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 192 To 223&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;C&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 224 To 239&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;D&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ValidIP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13655</id>
		<title>Snippets ( Internet )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13655"/>
		<updated>2017-06-30T05:15:29Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: Undo revision 13654 by Spudw2k (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Auto-Check For User To Update ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 4920-valuater&lt;br /&gt;
 | AuthorName = Valuater&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Auto-Check For User To Update&lt;br /&gt;
&lt;br /&gt;
Global $Udif, $QT_web = &amp;quot;www.XPCleanMenu.HostRocket.com&amp;quot;&lt;br /&gt;
Call(&amp;quot;Set_Updater&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;test&lt;br /&gt;
$Uask = MsgBox(68, &amp;quot;Update Notification&amp;quot;, &amp;quot; Your last update was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago.&amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If $Uask = 6 Then MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;Success.  The update was ran.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func Set_Updater()&lt;br /&gt;
	If Not FileExists(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;) Then&lt;br /&gt;
		FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
	Else&lt;br /&gt;
		$Uold = FileReadLine(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, 1)&lt;br /&gt;
&lt;br /&gt;
		If $Uold &amp;gt;=320 Then&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
			Return&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
		$Udif = @YDAY - $Uold&lt;br /&gt;
&lt;br /&gt;
		If $Udif &amp;gt;= 45 Then&lt;br /&gt;
			$Uask = MsgBox(68, &amp;quot;UpDate Notification&amp;quot;, &amp;quot; Your last UpDate was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago  &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?        &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
			If $Uask = 6 Then&lt;br /&gt;
				Run(@ProgramFilesDir &amp;amp; &amp;quot;\Internet Explorer\iexplore.exe &amp;quot; &amp;amp; $QT_web)&lt;br /&gt;
				WinWaitActive(&amp;quot;&amp;quot;)&lt;br /&gt;
			EndIf&lt;br /&gt;
&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
			FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetIEVersion ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Check IE Version.&lt;br /&gt;
ConsoleWrite(_GetIEVersion() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _GetIEVersion()&lt;br /&gt;
    Return StringRegExpReplace(RegRead(&#039;HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\&#039;, &#039;Version&#039;), &#039;^(\d+\.\d+).*&#039;, &#039;$1&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetIEVersion&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetTimeOnline ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
 | Desc = Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
ConsoleWrite(_GetTimeOnline(0) &amp;amp; @CRLF) ; TimeZone UTC.&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _GetTimeOnline&lt;br /&gt;
; Description ...: Retrieve the current date and time from TimeAPI.org.&lt;br /&gt;
; Syntax ........: _GetTimeOnline($iTimeZone)&lt;br /&gt;
; Parameters ....: $iTimeZone           - An integer value of the timezone .&lt;br /&gt;
;				   0 - UTC (Universal Time)&lt;br /&gt;
;				   1 - EST (Eastern Time)&lt;br /&gt;
;				   2 - CST (Central Time)&lt;br /&gt;
;				   3 - MST (Mountain Time)&lt;br /&gt;
;				   4 - PST (Pacific Time)&lt;br /&gt;
;				   5 - AKST (Alaska Time)&lt;br /&gt;
;				   6 - HAST (Hawaii-Aleutian Time)&lt;br /&gt;
; Return values .: Success: Returns the current Date and Time in the format YYYY/MM/DD HH:MM:SS&lt;br /&gt;
;				   Failure: Sets @error to non-zero and returns the same format as a successful return but using the system time.&lt;br /&gt;
; Author ........: guinness&lt;br /&gt;
; Link ..........: According to http://www.programmableweb.com/api/timeapi, this is for non-commercial use.&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _GetTimeOnline($iTimeZone)&lt;br /&gt;
	Local $aTimeZone[7] = [&#039;utc&#039;, &#039;est&#039;, &#039;cst&#039;, &#039;mst&#039;, &#039;pst&#039;, &#039;akst&#039;, &#039;hast&#039;]&lt;br /&gt;
&lt;br /&gt;
	Local $sRead = BinaryToString(InetRead(&#039;http://www.timeapi.org/&#039; &amp;amp; $aTimeZone[$iTimeZone] &amp;amp; &#039;/now?format=\Y/\m/\d%20\H:\M:\S&#039;))&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, @YEAR &amp;amp; &#039;/&#039; &amp;amp; @MON &amp;amp; &#039;/&#039; &amp;amp; @MDAY &amp;amp; &#039; &#039; &amp;amp; @HOUR &amp;amp; &#039;:&#039; &amp;amp; @MIN &amp;amp; &#039;:&#039; &amp;amp; @SEC)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $sRead&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetTimeOnline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _HTML_StripTags ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 25246-robjong&lt;br /&gt;
 | AuthorName = Robjong&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox(4096, &amp;quot;&amp;quot;, _HTML_StripTags(&amp;quot;This should be # - (&amp;amp;#35;)&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
; Strip HTML tags from HTML syntax. By Robjong.&lt;br /&gt;
Func _HTML_StripTags($sHTMLData) ; http://www.autoitscript.com/forum/topic/...tml-data/page__view__findpost_&lt;br /&gt;
    If $sHTMLData = &amp;quot;&amp;quot; Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Local $oHTML = ObjCreate(&amp;quot;HTMLFILE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    If @error Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    $oHTML.Open()&lt;br /&gt;
    $oHTML.Write($sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Return SetError(0, 0, $oHTML.Body.InnerText)&lt;br /&gt;
EndFunc   ;==&amp;gt;_HTML_StripTags&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _InetGetOutOfProcess ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_InetGetOutOfProcess(&#039;http://google.com&#039;, @TempDir &amp;amp; &#039;\Google.tmp&#039;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Download a file by spawning a new AutoIt process.&lt;br /&gt;
Func _InetGetOutOfProcess($sURL, $sFilePath, $iOptions = 0)&lt;br /&gt;
    Return RunWait(&#039;&amp;quot;&#039; &amp;amp; @AutoItExe &amp;amp; &#039;&amp;quot; /AutoIt3ExecuteLine &#039; &amp;amp; &#039;&amp;quot;Exit InetGet(&amp;quot;&amp;quot;&#039; &amp;amp; $sURL &amp;amp; &#039;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot;&amp;quot;, &#039; &amp;amp; $iOptions &amp;amp; &#039;, 0)&amp;quot;&#039;) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_InetGetOutOfProcess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsInternetConnected ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&amp;quot;Internet Is Connected&amp;quot; &amp;amp; &amp;quot; = &amp;quot; &amp;amp; _IsInternetConnected() &amp;amp; @CRLF) ; ( Returns &amp;quot;True&amp;quot; Or &amp;quot;False&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Func _IsInternetConnected()&lt;br /&gt;
    Local $aReturn = DllCall(&#039;connect.dll&#039;, &#039;long&#039;, &#039;IsInternetConnected&#039;)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsInternetConnected&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 30100-jguinch&lt;br /&gt;
 | AuthorName = jguinch&lt;br /&gt;
 | Desc = Checks to see if a string is a valid IP address.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Checks to see if a string is a valid IP address.&lt;br /&gt;
&lt;br /&gt;
If _IsIP(&amp;quot;127.0.0.1&amp;quot;) Then Msgbox(0, &amp;quot;&amp;quot;, &amp;quot;Valid IP address.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _IsIP($ip)&lt;br /&gt;
    Return StringRegExp ($ip, &amp;quot;^(?:(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?1)$&amp;quot;)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 20477-mrcreator&lt;br /&gt;
 | AuthorName = MrCreatoR&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local Const $sString = @IPAddress2 &amp;amp; &amp;quot;:8080&amp;quot; ;8080 is port value (for example)&lt;br /&gt;
&lt;br /&gt;
Local Const $GetValidIp = _IsValidIP($sString, &amp;quot;:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite($GetValidIp)&lt;br /&gt;
&lt;br /&gt;
Local $IPsArray = _StringToIPArray(&#039;99.77.88.255 567567567 text 155.99.66.6 some more text &#039; &amp;amp; @IPAddress1 &amp;amp; &#039;,&#039; &amp;amp; @IPAddress2)&lt;br /&gt;
&lt;br /&gt;
_ArrayDisplay($IPsArray)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidIP($sString, Const $sDelim = &amp;quot;&amp;quot;)&lt;br /&gt;
    If Not StringInStr($sString, &amp;quot;.&amp;quot;) Then Return 0&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then $sString = StringLeft($sString, StringInStr($sString, $sDelim) - 1)&lt;br /&gt;
&lt;br /&gt;
    If StringLen($sString) &amp;gt; 15 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    Local $Dot_Split = StringSplit($sString, &amp;quot;.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    Local $iUbound = UBound($Dot_Split) - 1&lt;br /&gt;
&lt;br /&gt;
    If $iUbound &amp;lt;&amp;gt; 4 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To $iUbound&lt;br /&gt;
        If $Dot_Split[$i] = &amp;quot;&amp;quot; Then Return 0&lt;br /&gt;
        If StringRegExp($Dot_Split[$i], &#039;[^0-9]&#039;) Or Number($Dot_Split[$i]) &amp;gt; 255 Then Return 0&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then Return $sString&lt;br /&gt;
    Return 1&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func _StringToIPArray($sString)&lt;br /&gt;
    Local $avArray = StringRegExp($sString, &#039;([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)&#039;, 3)&lt;br /&gt;
    Local $avRetArr[1], $iUbound&lt;br /&gt;
&lt;br /&gt;
    For $i = 0 To UBound($avArray)-1&lt;br /&gt;
        If _IsValidIP($avArray[$i]) Then&lt;br /&gt;
            $iUbound = UBound($avRetArr)&lt;br /&gt;
            ReDim $avRetArr[$iUbound+1]&lt;br /&gt;
            $avRetArr[$iUbound] = $avArray[$i]&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $iUbound = 0 Then Return SetError(1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
    $avRetArr[0] = $iUbound&lt;br /&gt;
    Return $avRetArr&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidSubnetMask ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $aSubnetMaskIP1[] = [255,255,255,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP1) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP2[] = [255,248,0,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP2) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP3[] = [255,255,255,1]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP3) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsSubnetMaskValid($aIP)&lt;br /&gt;
	If Not UBound($aIP)=4 Then Return SetError(1,0,False)	;Validate Input (4 element array)&lt;br /&gt;
&lt;br /&gt;
	Local $hIP = &amp;quot;&amp;quot;, $sHex = &amp;quot;&amp;quot;, $iSubnetDec = 0, $bIsValid = False   ;Define Local Variables&lt;br /&gt;
    For $iX = 0 To 3	;Convert Subnetmask into Hex&lt;br /&gt;
        $sHex &amp;amp;= Hex($aIP[$iX], 2)&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $hIP &amp;amp;= Dec($sHex, 2)	;Convert SubnetHex into Dec&lt;br /&gt;
&lt;br /&gt;
    For $iX = 0 To 32	;Validate Subnet mask congruity with bit logic&lt;br /&gt;
        If (((2 ^ 32) - 1) - ((2 ^ $iX) - 1)) = $hIP Then&lt;br /&gt;
            $bIsValid = True&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    Return $bIsValid&lt;br /&gt;
EndFunc   ;==&amp;gt;_IPSubnetMaskIsValid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidURL ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Author: JScript - Snippet Version No. = 1.0&lt;br /&gt;
;Snippet was Created Using AutoIt Version = 3.3.8.1, Creation Date = 22/05/12.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;http:www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidURL($sPath)&lt;br /&gt;
    Local Const $sRet = DllCall(&amp;quot;Shlwapi.dll&amp;quot;, &amp;quot;BOOL&amp;quot;, &amp;quot;PathIsURL&amp;quot;, &amp;quot;str&amp;quot;, $sPath)&lt;br /&gt;
    Return $sRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidURL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Toggle_Images ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 8730-big-daddy&lt;br /&gt;
 | AuthorName = big_daddy&lt;br /&gt;
 | Desc = Toggle Internet Images On/Off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Toggle Internet Images On/Off&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;IE.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opt(&amp;quot;WinTitleMatchMode&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
_Toggle_Images(1)&lt;br /&gt;
Global Const $oIE = _IECreate ()&lt;br /&gt;
&lt;br /&gt;
_IENavigate ($oIE, &amp;quot;http:\\www.google.com&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
While WinExists(&amp;quot;Internet Explorer&amp;quot;)&lt;br /&gt;
    Sleep(250)&lt;br /&gt;
WEnd&lt;br /&gt;
_Toggle_Images()&lt;br /&gt;
&lt;br /&gt;
Func _Toggle_Images($On_Off=0)&lt;br /&gt;
    If $On_Off == 0 Then&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;yes&amp;quot;)&lt;br /&gt;
    Else&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;no&amp;quot;)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc ;==&amp;gt;_Toggle_Images()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Tracert ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_Tracert(&amp;quot;www.duckduckgo.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _Tracert(Const $sURL)&lt;br /&gt;
	; -d = Do Not Resolve Host &amp;amp; -h Is The Number Of Hops.&lt;br /&gt;
	Local Const $sData = _RunStdOutRead(&#039;tracert -d -h 1 &#039; &amp;amp; $sURL, @SystemDir)&lt;br /&gt;
&lt;br /&gt;
	Local Const $aReturn = StringRegExp($sData, &#039;\[([\d.]{7,15})\]&#039;, 3)&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, -1)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $aReturn[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_Tracert&lt;br /&gt;
&lt;br /&gt;
Func _RunStdOutRead($sCommand, $sWorkingDirectory = @SystemDir)&lt;br /&gt;
	Local Const $iPID = Run(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; $sCommand, $sWorkingDirectory, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sOutput = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	While 1&lt;br /&gt;
		$sOutput &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
&lt;br /&gt;
		If @error Then&lt;br /&gt;
			ExitLoop&lt;br /&gt;
		EndIf&lt;br /&gt;
	WEnd&lt;br /&gt;
&lt;br /&gt;
	Return $sOutput&lt;br /&gt;
EndFunc   ;==&amp;gt;_RunStdOutRead&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _ValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 58912-brewmannh&lt;br /&gt;
 | AuthorName = BrewManNH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt; ; This is only needed for the _ArrayDisplay function used in the example below, and is not needed for the _ValidIP function&lt;br /&gt;
&lt;br /&gt;
; IPv4 validation script&lt;br /&gt;
Global Const $IPAddress = &amp;quot;192.168.2.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Global Const $Return = _ValidIP($IPAddress)&lt;br /&gt;
&lt;br /&gt;
If $Return &amp;lt; 0 Then&lt;br /&gt;
    Switch @error&lt;br /&gt;
        Case 1&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&amp;quot;)&lt;br /&gt;
        Case 2&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&amp;quot;)&lt;br /&gt;
        Case 3&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&amp;quot;)&lt;br /&gt;
        Case 4&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 4 - Last octet is either 0 or 255&amp;quot;)&lt;br /&gt;
    EndSwitch&lt;br /&gt;
Else&lt;br /&gt;
    MsgBox(48, &amp;quot;&amp;quot;, $IPAddress &amp;amp; &amp;quot; is a valid Class &amp;quot; &amp;amp; $Return[5] &amp;amp; &amp;quot; IP address&amp;quot;)&lt;br /&gt;
    _ArrayDisplay($Return)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; FUNCTION# ===========================================================================================================&lt;br /&gt;
; Name...........: _ValidIP&lt;br /&gt;
; Description ...: Verifies whether an IP address is a valid IPv4 address or not&lt;br /&gt;
; Syntax.........: _ValidIP($sIP)&lt;br /&gt;
; Parameters ....: $sIP - IP address to validate&lt;br /&gt;
;&lt;br /&gt;
; Return values .: Success - Array containing split IP Address, IP address in Hex, and the Class of the IP address&lt;br /&gt;
;                            array[0] - [3] = the IP address split into octets&lt;br /&gt;
;                            array[4]       = IP address in Hex&lt;br /&gt;
;                            array[5]       = Class of the IP address [A through D]&lt;br /&gt;
;                  Failure - -1, sets @error&lt;br /&gt;
;                  |1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&lt;br /&gt;
;                  |2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&lt;br /&gt;
;                  |3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&lt;br /&gt;
;                  |4 - Last octet ends in 0 or 255 which are invalid for an IP address&lt;br /&gt;
; Author ........: BrewManNH&lt;br /&gt;
; Modified.......:&lt;br /&gt;
; Remarks .......: This will accept an IP address that is 4 octets long, and contains only numbers and falls within&lt;br /&gt;
;                  valid IP address values. Class A networks can&#039;t start with 0 or 127. 169.xx.xx.xx is reserved and is&lt;br /&gt;
;                  invalid and any address that starts above 239, ex. 240.xx.xx.xx is reserved. The address range&lt;br /&gt;
;                  224-239 1s reserved as well for Multicast groups but can be a valid IP address range if you&#039;re using&lt;br /&gt;
;                  it as such. Any IP address ending in 0 or 255 is also invalid for an IP&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; =====================================================================================================================&lt;br /&gt;
Func _ValidIP($sIP)&lt;br /&gt;
    Local $adIPAddressInfo[6]&lt;br /&gt;
&lt;br /&gt;
    Local $aArray = StringSplit($sIP, &amp;quot;.&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
    If Not IsArray($aArray) Or UBound($aArray) &amp;lt;&amp;gt; 4 Then Return SetError(3, 0, -1)&lt;br /&gt;
&lt;br /&gt;
    Local $dString = &amp;quot;0x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    If $aArray[0] &amp;lt;= 0 Or $aArray[0] &amp;gt; 239 Or $aArray[0] = 127 Or $aArray[0] = 169 Then&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    For $I = 0 To 3&lt;br /&gt;
        If $I &amp;lt; 3 Then&lt;br /&gt;
            If $aArray[$I] &amp;lt; 0 Or $aArray[$I] &amp;gt; 255 Or Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        Else&lt;br /&gt;
            If Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
            If $aArray[$I] &amp;lt; 1 Or $aArray[$I] &amp;gt; 254 Then&lt;br /&gt;
                Return SetError(4, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        EndIf&lt;br /&gt;
&lt;br /&gt;
        $dString &amp;amp;= StringRight(Hex($aArray[$I]), 2)&lt;br /&gt;
&lt;br /&gt;
        $adIPAddressInfo[$I] = $aArray[$I]&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $adIPAddressInfo[4] = $dString&lt;br /&gt;
&lt;br /&gt;
    Switch $aArray[0]&lt;br /&gt;
        Case 1 To 126&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;A&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 128 To 191&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;B&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 192 To 223&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;C&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 224 To 239&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;D&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ValidIP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13654</id>
		<title>Snippets ( Internet )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13654"/>
		<updated>2017-06-30T05:14:33Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Auto-Check For User To Update ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 4920-valuater&lt;br /&gt;
 | AuthorName = Valuater&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Auto-Check For User To Update&lt;br /&gt;
&lt;br /&gt;
Global $Udif, $QT_web = &amp;quot;www.XPCleanMenu.HostRocket.com&amp;quot;&lt;br /&gt;
Call(&amp;quot;Set_Updater&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;test&lt;br /&gt;
$Uask = MsgBox(68, &amp;quot;Update Notification&amp;quot;, &amp;quot; Your last update was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago.&amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If $Uask = 6 Then MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;Success.  The update was ran.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func Set_Updater()&lt;br /&gt;
	If Not FileExists(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;) Then&lt;br /&gt;
		FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
	Else&lt;br /&gt;
		$Uold = FileReadLine(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, 1)&lt;br /&gt;
&lt;br /&gt;
		If $Uold &amp;gt;=320 Then&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
			Return&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
		$Udif = @YDAY - $Uold&lt;br /&gt;
&lt;br /&gt;
		If $Udif &amp;gt;= 45 Then&lt;br /&gt;
			$Uask = MsgBox(68, &amp;quot;UpDate Notification&amp;quot;, &amp;quot; Your last UpDate was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago  &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?        &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
			If $Uask = 6 Then&lt;br /&gt;
				Run(@ProgramFilesDir &amp;amp; &amp;quot;\Internet Explorer\iexplore.exe &amp;quot; &amp;amp; $QT_web)&lt;br /&gt;
				WinWaitActive(&amp;quot;&amp;quot;)&lt;br /&gt;
			EndIf&lt;br /&gt;
&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
			FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetIEVersion ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Check IE Version.&lt;br /&gt;
ConsoleWrite(_GetIEVersion() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _GetIEVersion()&lt;br /&gt;
    Return StringRegExpReplace(RegRead(&#039;HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\&#039;, &#039;Version&#039;), &#039;^(\d+\.\d+).*&#039;, &#039;$1&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetIEVersion&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetTimeOnline ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
 | Desc = Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
ConsoleWrite(_GetTimeOnline(0) &amp;amp; @CRLF) ; TimeZone UTC.&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _GetTimeOnline&lt;br /&gt;
; Description ...: Retrieve the current date and time from TimeAPI.org.&lt;br /&gt;
; Syntax ........: _GetTimeOnline($iTimeZone)&lt;br /&gt;
; Parameters ....: $iTimeZone           - An integer value of the timezone .&lt;br /&gt;
;				   0 - UTC (Universal Time)&lt;br /&gt;
;				   1 - EST (Eastern Time)&lt;br /&gt;
;				   2 - CST (Central Time)&lt;br /&gt;
;				   3 - MST (Mountain Time)&lt;br /&gt;
;				   4 - PST (Pacific Time)&lt;br /&gt;
;				   5 - AKST (Alaska Time)&lt;br /&gt;
;				   6 - HAST (Hawaii-Aleutian Time)&lt;br /&gt;
; Return values .: Success: Returns the current Date and Time in the format YYYY/MM/DD HH:MM:SS&lt;br /&gt;
;				   Failure: Sets @error to non-zero and returns the same format as a successful return but using the system time.&lt;br /&gt;
; Author ........: guinness&lt;br /&gt;
; Link ..........: According to http://www.programmableweb.com/api/timeapi, this is for non-commercial use.&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _GetTimeOnline($iTimeZone)&lt;br /&gt;
	Local $aTimeZone[7] = [&#039;utc&#039;, &#039;est&#039;, &#039;cst&#039;, &#039;mst&#039;, &#039;pst&#039;, &#039;akst&#039;, &#039;hast&#039;]&lt;br /&gt;
&lt;br /&gt;
	Local $sRead = BinaryToString(InetRead(&#039;http://www.timeapi.org/&#039; &amp;amp; $aTimeZone[$iTimeZone] &amp;amp; &#039;/now?format=\Y/\m/\d%20\H:\M:\S&#039;))&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, @YEAR &amp;amp; &#039;/&#039; &amp;amp; @MON &amp;amp; &#039;/&#039; &amp;amp; @MDAY &amp;amp; &#039; &#039; &amp;amp; @HOUR &amp;amp; &#039;:&#039; &amp;amp; @MIN &amp;amp; &#039;:&#039; &amp;amp; @SEC)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $sRead&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetTimeOnline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _HTML_StripTags ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 25246-robjong&lt;br /&gt;
 | AuthorName = Robjong&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox(4096, &amp;quot;&amp;quot;, _HTML_StripTags(&amp;quot;This should be # - (&amp;amp;#35;)&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
; Strip HTML tags from HTML syntax. By Robjong.&lt;br /&gt;
Func _HTML_StripTags($sHTMLData) ; http://www.autoitscript.com/forum/topic/...tml-data/page__view__findpost_&lt;br /&gt;
    If $sHTMLData = &amp;quot;&amp;quot; Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Local $oHTML = ObjCreate(&amp;quot;HTMLFILE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    If @error Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    $oHTML.Open()&lt;br /&gt;
    $oHTML.Write($sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Return SetError(0, 0, $oHTML.Body.InnerText)&lt;br /&gt;
EndFunc   ;==&amp;gt;_HTML_StripTags&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _InetGetOutOfProcess ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_InetGetOutOfProcess(&#039;http://google.com&#039;, @TempDir &amp;amp; &#039;\Google.tmp&#039;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Download a file by spawning a new AutoIt process.&lt;br /&gt;
Func _InetGetOutOfProcess($sURL, $sFilePath, $iOptions = 0)&lt;br /&gt;
    Return RunWait(&#039;&amp;quot;&#039; &amp;amp; @AutoItExe &amp;amp; &#039;&amp;quot; /AutoIt3ExecuteLine &#039; &amp;amp; &#039;&amp;quot;Exit InetGet(&amp;quot;&amp;quot;&#039; &amp;amp; $sURL &amp;amp; &#039;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot;&amp;quot;, &#039; &amp;amp; $iOptions &amp;amp; &#039;, 0)&amp;quot;&#039;) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_InetGetOutOfProcess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsInternetConnected ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&amp;quot;Internet Is Connected&amp;quot; &amp;amp; &amp;quot; = &amp;quot; &amp;amp; _IsInternetConnected() &amp;amp; @CRLF) ; ( Returns &amp;quot;True&amp;quot; Or &amp;quot;False&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Func _IsInternetConnected()&lt;br /&gt;
    Local $aReturn = DllCall(&#039;connect.dll&#039;, &#039;long&#039;, &#039;IsInternetConnected&#039;)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsInternetConnected&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 30100-jguinch&lt;br /&gt;
 | AuthorName = jguinch&lt;br /&gt;
 | Desc = Checks to see if a string is a valid IP address.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Checks to see if a string is a valid IP address.&lt;br /&gt;
&lt;br /&gt;
If _IsIP(&amp;quot;127.0.0.1&amp;quot;) Then Msgbox(0, &amp;quot;&amp;quot;, &amp;quot;Valid IP address.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _IsIP($ip)&lt;br /&gt;
    Return StringRegExp ($ip, &amp;quot;^(?:(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?1)$&amp;quot;)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 20477-mrcreator&lt;br /&gt;
 | AuthorName = MrCreatoR&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local Const $sString = @IPAddress2 &amp;amp; &amp;quot;:8080&amp;quot; ;8080 is port value (for example)&lt;br /&gt;
&lt;br /&gt;
Local Const $GetValidIp = _IsValidIP($sString, &amp;quot;:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite($GetValidIp)&lt;br /&gt;
&lt;br /&gt;
Local $IPsArray = _StringToIPArray(&#039;99.77.88.255 567567567 text 155.99.66.6 some more text &#039; &amp;amp; @IPAddress1 &amp;amp; &#039;,&#039; &amp;amp; @IPAddress2)&lt;br /&gt;
&lt;br /&gt;
_ArrayDisplay($IPsArray)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidIP($sString, Const $sDelim = &amp;quot;&amp;quot;)&lt;br /&gt;
    If Not StringInStr($sString, &amp;quot;.&amp;quot;) Then Return 0&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then $sString = StringLeft($sString, StringInStr($sString, $sDelim) - 1)&lt;br /&gt;
&lt;br /&gt;
    If StringLen($sString) &amp;gt; 15 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    Local $Dot_Split = StringSplit($sString, &amp;quot;.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    Local $iUbound = UBound($Dot_Split) - 1&lt;br /&gt;
&lt;br /&gt;
    If $iUbound &amp;lt;&amp;gt; 4 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To $iUbound&lt;br /&gt;
        If $Dot_Split[$i] = &amp;quot;&amp;quot; Then Return 0&lt;br /&gt;
        If StringRegExp($Dot_Split[$i], &#039;[^0-9]&#039;) Or Number($Dot_Split[$i]) &amp;gt; 255 Then Return 0&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then Return $sString&lt;br /&gt;
    Return 1&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func _StringToIPArray($sString)&lt;br /&gt;
    Local $avArray = StringRegExp($sString, &#039;([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)&#039;, 3)&lt;br /&gt;
    Local $avRetArr[1], $iUbound&lt;br /&gt;
&lt;br /&gt;
    For $i = 0 To UBound($avArray)-1&lt;br /&gt;
        If _IsValidIP($avArray[$i]) Then&lt;br /&gt;
            $iUbound = UBound($avRetArr)&lt;br /&gt;
            ReDim $avRetArr[$iUbound+1]&lt;br /&gt;
            $avRetArr[$iUbound] = $avArray[$i]&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $iUbound = 0 Then Return SetError(1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
    $avRetArr[0] = $iUbound&lt;br /&gt;
    Return $avRetArr&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidSubnetMask ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $aSubnetMaskIP1[] = [255,255,255,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsValidSubnetMask($aSubnetMaskIP1) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP2[] = [255,248,0,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsValidSubnetMask($aSubnetMaskIP2) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP3[] = [255,255,255,1]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsValidSubnetMask($aSubnetMaskIP3) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidSubnetMask($aIP)&lt;br /&gt;
	If Not UBound($aIP)=4 Then Return SetError(1,0,False)	;Validate Input (4 element array)&lt;br /&gt;
&lt;br /&gt;
	Local $hIP = &amp;quot;&amp;quot;, $sHex = &amp;quot;&amp;quot;, $iSubnetDec = 0, $bIsValid = False   ;Define Local Variables&lt;br /&gt;
    For $iX = 0 To 3	;Convert Subnetmask into Hex&lt;br /&gt;
        $sHex &amp;amp;= Hex($aIP[$iX], 2)&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $hIP &amp;amp;= Dec($sHex, 2)	;Convert SubnetHex into Dec&lt;br /&gt;
&lt;br /&gt;
    For $iX = 0 To 32	;Validate Subnet mask congruity with bit logic&lt;br /&gt;
        If (((2 ^ 32) - 1) - ((2 ^ $iX) - 1)) = $hIP Then&lt;br /&gt;
            $bIsValid = True&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    Return $bIsValid&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidSubnetMask&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidURL ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Author: JScript - Snippet Version No. = 1.0&lt;br /&gt;
;Snippet was Created Using AutoIt Version = 3.3.8.1, Creation Date = 22/05/12.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;http:www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidURL($sPath)&lt;br /&gt;
    Local Const $sRet = DllCall(&amp;quot;Shlwapi.dll&amp;quot;, &amp;quot;BOOL&amp;quot;, &amp;quot;PathIsURL&amp;quot;, &amp;quot;str&amp;quot;, $sPath)&lt;br /&gt;
    Return $sRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidURL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Toggle_Images ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 8730-big-daddy&lt;br /&gt;
 | AuthorName = big_daddy&lt;br /&gt;
 | Desc = Toggle Internet Images On/Off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Toggle Internet Images On/Off&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;IE.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opt(&amp;quot;WinTitleMatchMode&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
_Toggle_Images(1)&lt;br /&gt;
Global Const $oIE = _IECreate ()&lt;br /&gt;
&lt;br /&gt;
_IENavigate ($oIE, &amp;quot;http:\\www.google.com&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
While WinExists(&amp;quot;Internet Explorer&amp;quot;)&lt;br /&gt;
    Sleep(250)&lt;br /&gt;
WEnd&lt;br /&gt;
_Toggle_Images()&lt;br /&gt;
&lt;br /&gt;
Func _Toggle_Images($On_Off=0)&lt;br /&gt;
    If $On_Off == 0 Then&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;yes&amp;quot;)&lt;br /&gt;
    Else&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;no&amp;quot;)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc ;==&amp;gt;_Toggle_Images()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Tracert ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_Tracert(&amp;quot;www.duckduckgo.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _Tracert(Const $sURL)&lt;br /&gt;
	; -d = Do Not Resolve Host &amp;amp; -h Is The Number Of Hops.&lt;br /&gt;
	Local Const $sData = _RunStdOutRead(&#039;tracert -d -h 1 &#039; &amp;amp; $sURL, @SystemDir)&lt;br /&gt;
&lt;br /&gt;
	Local Const $aReturn = StringRegExp($sData, &#039;\[([\d.]{7,15})\]&#039;, 3)&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, -1)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $aReturn[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_Tracert&lt;br /&gt;
&lt;br /&gt;
Func _RunStdOutRead($sCommand, $sWorkingDirectory = @SystemDir)&lt;br /&gt;
	Local Const $iPID = Run(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; $sCommand, $sWorkingDirectory, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sOutput = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	While 1&lt;br /&gt;
		$sOutput &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
&lt;br /&gt;
		If @error Then&lt;br /&gt;
			ExitLoop&lt;br /&gt;
		EndIf&lt;br /&gt;
	WEnd&lt;br /&gt;
&lt;br /&gt;
	Return $sOutput&lt;br /&gt;
EndFunc   ;==&amp;gt;_RunStdOutRead&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _ValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 58912-brewmannh&lt;br /&gt;
 | AuthorName = BrewManNH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt; ; This is only needed for the _ArrayDisplay function used in the example below, and is not needed for the _ValidIP function&lt;br /&gt;
&lt;br /&gt;
; IPv4 validation script&lt;br /&gt;
Global Const $IPAddress = &amp;quot;192.168.2.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Global Const $Return = _ValidIP($IPAddress)&lt;br /&gt;
&lt;br /&gt;
If $Return &amp;lt; 0 Then&lt;br /&gt;
    Switch @error&lt;br /&gt;
        Case 1&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&amp;quot;)&lt;br /&gt;
        Case 2&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&amp;quot;)&lt;br /&gt;
        Case 3&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&amp;quot;)&lt;br /&gt;
        Case 4&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 4 - Last octet is either 0 or 255&amp;quot;)&lt;br /&gt;
    EndSwitch&lt;br /&gt;
Else&lt;br /&gt;
    MsgBox(48, &amp;quot;&amp;quot;, $IPAddress &amp;amp; &amp;quot; is a valid Class &amp;quot; &amp;amp; $Return[5] &amp;amp; &amp;quot; IP address&amp;quot;)&lt;br /&gt;
    _ArrayDisplay($Return)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; FUNCTION# ===========================================================================================================&lt;br /&gt;
; Name...........: _ValidIP&lt;br /&gt;
; Description ...: Verifies whether an IP address is a valid IPv4 address or not&lt;br /&gt;
; Syntax.........: _ValidIP($sIP)&lt;br /&gt;
; Parameters ....: $sIP - IP address to validate&lt;br /&gt;
;&lt;br /&gt;
; Return values .: Success - Array containing split IP Address, IP address in Hex, and the Class of the IP address&lt;br /&gt;
;                            array[0] - [3] = the IP address split into octets&lt;br /&gt;
;                            array[4]       = IP address in Hex&lt;br /&gt;
;                            array[5]       = Class of the IP address [A through D]&lt;br /&gt;
;                  Failure - -1, sets @error&lt;br /&gt;
;                  |1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&lt;br /&gt;
;                  |2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&lt;br /&gt;
;                  |3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&lt;br /&gt;
;                  |4 - Last octet ends in 0 or 255 which are invalid for an IP address&lt;br /&gt;
; Author ........: BrewManNH&lt;br /&gt;
; Modified.......:&lt;br /&gt;
; Remarks .......: This will accept an IP address that is 4 octets long, and contains only numbers and falls within&lt;br /&gt;
;                  valid IP address values. Class A networks can&#039;t start with 0 or 127. 169.xx.xx.xx is reserved and is&lt;br /&gt;
;                  invalid and any address that starts above 239, ex. 240.xx.xx.xx is reserved. The address range&lt;br /&gt;
;                  224-239 1s reserved as well for Multicast groups but can be a valid IP address range if you&#039;re using&lt;br /&gt;
;                  it as such. Any IP address ending in 0 or 255 is also invalid for an IP&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; =====================================================================================================================&lt;br /&gt;
Func _ValidIP($sIP)&lt;br /&gt;
    Local $adIPAddressInfo[6]&lt;br /&gt;
&lt;br /&gt;
    Local $aArray = StringSplit($sIP, &amp;quot;.&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
    If Not IsArray($aArray) Or UBound($aArray) &amp;lt;&amp;gt; 4 Then Return SetError(3, 0, -1)&lt;br /&gt;
&lt;br /&gt;
    Local $dString = &amp;quot;0x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    If $aArray[0] &amp;lt;= 0 Or $aArray[0] &amp;gt; 239 Or $aArray[0] = 127 Or $aArray[0] = 169 Then&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    For $I = 0 To 3&lt;br /&gt;
        If $I &amp;lt; 3 Then&lt;br /&gt;
            If $aArray[$I] &amp;lt; 0 Or $aArray[$I] &amp;gt; 255 Or Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        Else&lt;br /&gt;
            If Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
            If $aArray[$I] &amp;lt; 1 Or $aArray[$I] &amp;gt; 254 Then&lt;br /&gt;
                Return SetError(4, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        EndIf&lt;br /&gt;
&lt;br /&gt;
        $dString &amp;amp;= StringRight(Hex($aArray[$I]), 2)&lt;br /&gt;
&lt;br /&gt;
        $adIPAddressInfo[$I] = $aArray[$I]&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $adIPAddressInfo[4] = $dString&lt;br /&gt;
&lt;br /&gt;
    Switch $aArray[0]&lt;br /&gt;
        Case 1 To 126&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;A&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 128 To 191&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;B&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 192 To 223&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;C&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 224 To 239&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;D&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ValidIP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13653</id>
		<title>Snippets ( Internet )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13653"/>
		<updated>2017-06-30T05:09:14Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Auto-Check For User To Update ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 4920-valuater&lt;br /&gt;
 | AuthorName = Valuater&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Auto-Check For User To Update&lt;br /&gt;
&lt;br /&gt;
Global $Udif, $QT_web = &amp;quot;www.XPCleanMenu.HostRocket.com&amp;quot;&lt;br /&gt;
Call(&amp;quot;Set_Updater&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;test&lt;br /&gt;
$Uask = MsgBox(68, &amp;quot;Update Notification&amp;quot;, &amp;quot; Your last update was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago.&amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If $Uask = 6 Then MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;Success.  The update was ran.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func Set_Updater()&lt;br /&gt;
	If Not FileExists(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;) Then&lt;br /&gt;
		FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
	Else&lt;br /&gt;
		$Uold = FileReadLine(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, 1)&lt;br /&gt;
&lt;br /&gt;
		If $Uold &amp;gt;=320 Then&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
			Return&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
		$Udif = @YDAY - $Uold&lt;br /&gt;
&lt;br /&gt;
		If $Udif &amp;gt;= 45 Then&lt;br /&gt;
			$Uask = MsgBox(68, &amp;quot;UpDate Notification&amp;quot;, &amp;quot; Your last UpDate was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago  &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?        &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
			If $Uask = 6 Then&lt;br /&gt;
				Run(@ProgramFilesDir &amp;amp; &amp;quot;\Internet Explorer\iexplore.exe &amp;quot; &amp;amp; $QT_web)&lt;br /&gt;
				WinWaitActive(&amp;quot;&amp;quot;)&lt;br /&gt;
			EndIf&lt;br /&gt;
&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
			FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetIEVersion ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Check IE Version.&lt;br /&gt;
ConsoleWrite(_GetIEVersion() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _GetIEVersion()&lt;br /&gt;
    Return StringRegExpReplace(RegRead(&#039;HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\&#039;, &#039;Version&#039;), &#039;^(\d+\.\d+).*&#039;, &#039;$1&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetIEVersion&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetTimeOnline ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
 | Desc = Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
ConsoleWrite(_GetTimeOnline(0) &amp;amp; @CRLF) ; TimeZone UTC.&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _GetTimeOnline&lt;br /&gt;
; Description ...: Retrieve the current date and time from TimeAPI.org.&lt;br /&gt;
; Syntax ........: _GetTimeOnline($iTimeZone)&lt;br /&gt;
; Parameters ....: $iTimeZone           - An integer value of the timezone .&lt;br /&gt;
;				   0 - UTC (Universal Time)&lt;br /&gt;
;				   1 - EST (Eastern Time)&lt;br /&gt;
;				   2 - CST (Central Time)&lt;br /&gt;
;				   3 - MST (Mountain Time)&lt;br /&gt;
;				   4 - PST (Pacific Time)&lt;br /&gt;
;				   5 - AKST (Alaska Time)&lt;br /&gt;
;				   6 - HAST (Hawaii-Aleutian Time)&lt;br /&gt;
; Return values .: Success: Returns the current Date and Time in the format YYYY/MM/DD HH:MM:SS&lt;br /&gt;
;				   Failure: Sets @error to non-zero and returns the same format as a successful return but using the system time.&lt;br /&gt;
; Author ........: guinness&lt;br /&gt;
; Link ..........: According to http://www.programmableweb.com/api/timeapi, this is for non-commercial use.&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _GetTimeOnline($iTimeZone)&lt;br /&gt;
	Local $aTimeZone[7] = [&#039;utc&#039;, &#039;est&#039;, &#039;cst&#039;, &#039;mst&#039;, &#039;pst&#039;, &#039;akst&#039;, &#039;hast&#039;]&lt;br /&gt;
&lt;br /&gt;
	Local $sRead = BinaryToString(InetRead(&#039;http://www.timeapi.org/&#039; &amp;amp; $aTimeZone[$iTimeZone] &amp;amp; &#039;/now?format=\Y/\m/\d%20\H:\M:\S&#039;))&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, @YEAR &amp;amp; &#039;/&#039; &amp;amp; @MON &amp;amp; &#039;/&#039; &amp;amp; @MDAY &amp;amp; &#039; &#039; &amp;amp; @HOUR &amp;amp; &#039;:&#039; &amp;amp; @MIN &amp;amp; &#039;:&#039; &amp;amp; @SEC)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $sRead&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetTimeOnline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _HTML_StripTags ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 25246-robjong&lt;br /&gt;
 | AuthorName = Robjong&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox(4096, &amp;quot;&amp;quot;, _HTML_StripTags(&amp;quot;This should be # - (&amp;amp;#35;)&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
; Strip HTML tags from HTML syntax. By Robjong.&lt;br /&gt;
Func _HTML_StripTags($sHTMLData) ; http://www.autoitscript.com/forum/topic/...tml-data/page__view__findpost_&lt;br /&gt;
    If $sHTMLData = &amp;quot;&amp;quot; Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Local $oHTML = ObjCreate(&amp;quot;HTMLFILE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    If @error Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    $oHTML.Open()&lt;br /&gt;
    $oHTML.Write($sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Return SetError(0, 0, $oHTML.Body.InnerText)&lt;br /&gt;
EndFunc   ;==&amp;gt;_HTML_StripTags&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _InetGetOutOfProcess ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_InetGetOutOfProcess(&#039;http://google.com&#039;, @TempDir &amp;amp; &#039;\Google.tmp&#039;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Download a file by spawning a new AutoIt process.&lt;br /&gt;
Func _InetGetOutOfProcess($sURL, $sFilePath, $iOptions = 0)&lt;br /&gt;
    Return RunWait(&#039;&amp;quot;&#039; &amp;amp; @AutoItExe &amp;amp; &#039;&amp;quot; /AutoIt3ExecuteLine &#039; &amp;amp; &#039;&amp;quot;Exit InetGet(&amp;quot;&amp;quot;&#039; &amp;amp; $sURL &amp;amp; &#039;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot;&amp;quot;, &#039; &amp;amp; $iOptions &amp;amp; &#039;, 0)&amp;quot;&#039;) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_InetGetOutOfProcess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsInternetConnected ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&amp;quot;Internet Is Connected&amp;quot; &amp;amp; &amp;quot; = &amp;quot; &amp;amp; _IsInternetConnected() &amp;amp; @CRLF) ; ( Returns &amp;quot;True&amp;quot; Or &amp;quot;False&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Func _IsInternetConnected()&lt;br /&gt;
    Local $aReturn = DllCall(&#039;connect.dll&#039;, &#039;long&#039;, &#039;IsInternetConnected&#039;)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsInternetConnected&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 30100-jguinch&lt;br /&gt;
 | AuthorName = jguinch&lt;br /&gt;
 | Desc = Checks to see if a string is a valid IP address.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Checks to see if a string is a valid IP address.&lt;br /&gt;
&lt;br /&gt;
If _IsIP(&amp;quot;127.0.0.1&amp;quot;) Then Msgbox(0, &amp;quot;&amp;quot;, &amp;quot;Valid IP address.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _IsIP($ip)&lt;br /&gt;
    Return StringRegExp ($ip, &amp;quot;^(?:(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?1)$&amp;quot;)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 20477-mrcreator&lt;br /&gt;
 | AuthorName = MrCreatoR&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local Const $sString = @IPAddress2 &amp;amp; &amp;quot;:8080&amp;quot; ;8080 is port value (for example)&lt;br /&gt;
&lt;br /&gt;
Local Const $GetValidIp = _IsValidIP($sString, &amp;quot;:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite($GetValidIp)&lt;br /&gt;
&lt;br /&gt;
Local $IPsArray = _StringToIPArray(&#039;99.77.88.255 567567567 text 155.99.66.6 some more text &#039; &amp;amp; @IPAddress1 &amp;amp; &#039;,&#039; &amp;amp; @IPAddress2)&lt;br /&gt;
&lt;br /&gt;
_ArrayDisplay($IPsArray)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidIP($sString, Const $sDelim = &amp;quot;&amp;quot;)&lt;br /&gt;
    If Not StringInStr($sString, &amp;quot;.&amp;quot;) Then Return 0&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then $sString = StringLeft($sString, StringInStr($sString, $sDelim) - 1)&lt;br /&gt;
&lt;br /&gt;
    If StringLen($sString) &amp;gt; 15 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    Local $Dot_Split = StringSplit($sString, &amp;quot;.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    Local $iUbound = UBound($Dot_Split) - 1&lt;br /&gt;
&lt;br /&gt;
    If $iUbound &amp;lt;&amp;gt; 4 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To $iUbound&lt;br /&gt;
        If $Dot_Split[$i] = &amp;quot;&amp;quot; Then Return 0&lt;br /&gt;
        If StringRegExp($Dot_Split[$i], &#039;[^0-9]&#039;) Or Number($Dot_Split[$i]) &amp;gt; 255 Then Return 0&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then Return $sString&lt;br /&gt;
    Return 1&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func _StringToIPArray($sString)&lt;br /&gt;
    Local $avArray = StringRegExp($sString, &#039;([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)&#039;, 3)&lt;br /&gt;
    Local $avRetArr[1], $iUbound&lt;br /&gt;
&lt;br /&gt;
    For $i = 0 To UBound($avArray)-1&lt;br /&gt;
        If _IsValidIP($avArray[$i]) Then&lt;br /&gt;
            $iUbound = UBound($avRetArr)&lt;br /&gt;
            ReDim $avRetArr[$iUbound+1]&lt;br /&gt;
            $avRetArr[$iUbound] = $avArray[$i]&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $iUbound = 0 Then Return SetError(1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
    $avRetArr[0] = $iUbound&lt;br /&gt;
    Return $avRetArr&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidSubnetMask ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $aSubnetMaskIP1[] = [255,255,255,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP1) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP2[] = [255,248,0,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP2) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP3[] = [255,255,255,1]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP3) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsSubnetMaskValid($aIP)&lt;br /&gt;
	If Not UBound($aIP)=4 Then Return SetError(1,0,False)	;Validate Input (4 element array)&lt;br /&gt;
&lt;br /&gt;
	Local $hIP = &amp;quot;&amp;quot;, $sHex = &amp;quot;&amp;quot;, $iSubnetDec = 0, $bIsValid = False   ;Define Local Variables&lt;br /&gt;
    For $iX = 0 To 3	;Convert Subnetmask into Hex&lt;br /&gt;
        $sHex &amp;amp;= Hex($aIP[$iX], 2)&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $hIP &amp;amp;= Dec($sHex, 2)	;Convert SubnetHex into Dec&lt;br /&gt;
&lt;br /&gt;
    For $iX = 0 To 32	;Validate Subnet mask congruity with bit logic&lt;br /&gt;
        If (((2 ^ 32) - 1) - ((2 ^ $iX) - 1)) = $hIP Then&lt;br /&gt;
            $bIsValid = True&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    Return $bIsValid&lt;br /&gt;
EndFunc   ;==&amp;gt;_IPSubnetMaskIsValid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidURL ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Author: JScript - Snippet Version No. = 1.0&lt;br /&gt;
;Snippet was Created Using AutoIt Version = 3.3.8.1, Creation Date = 22/05/12.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;http:www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidURL($sPath)&lt;br /&gt;
    Local Const $sRet = DllCall(&amp;quot;Shlwapi.dll&amp;quot;, &amp;quot;BOOL&amp;quot;, &amp;quot;PathIsURL&amp;quot;, &amp;quot;str&amp;quot;, $sPath)&lt;br /&gt;
    Return $sRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidURL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Toggle_Images ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 8730-big-daddy&lt;br /&gt;
 | AuthorName = big_daddy&lt;br /&gt;
 | Desc = Toggle Internet Images On/Off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Toggle Internet Images On/Off&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;IE.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opt(&amp;quot;WinTitleMatchMode&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
_Toggle_Images(1)&lt;br /&gt;
Global Const $oIE = _IECreate ()&lt;br /&gt;
&lt;br /&gt;
_IENavigate ($oIE, &amp;quot;http:\\www.google.com&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
While WinExists(&amp;quot;Internet Explorer&amp;quot;)&lt;br /&gt;
    Sleep(250)&lt;br /&gt;
WEnd&lt;br /&gt;
_Toggle_Images()&lt;br /&gt;
&lt;br /&gt;
Func _Toggle_Images($On_Off=0)&lt;br /&gt;
    If $On_Off == 0 Then&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;yes&amp;quot;)&lt;br /&gt;
    Else&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;no&amp;quot;)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc ;==&amp;gt;_Toggle_Images()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Tracert ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_Tracert(&amp;quot;www.duckduckgo.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _Tracert(Const $sURL)&lt;br /&gt;
	; -d = Do Not Resolve Host &amp;amp; -h Is The Number Of Hops.&lt;br /&gt;
	Local Const $sData = _RunStdOutRead(&#039;tracert -d -h 1 &#039; &amp;amp; $sURL, @SystemDir)&lt;br /&gt;
&lt;br /&gt;
	Local Const $aReturn = StringRegExp($sData, &#039;\[([\d.]{7,15})\]&#039;, 3)&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, -1)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $aReturn[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_Tracert&lt;br /&gt;
&lt;br /&gt;
Func _RunStdOutRead($sCommand, $sWorkingDirectory = @SystemDir)&lt;br /&gt;
	Local Const $iPID = Run(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; $sCommand, $sWorkingDirectory, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sOutput = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	While 1&lt;br /&gt;
		$sOutput &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
&lt;br /&gt;
		If @error Then&lt;br /&gt;
			ExitLoop&lt;br /&gt;
		EndIf&lt;br /&gt;
	WEnd&lt;br /&gt;
&lt;br /&gt;
	Return $sOutput&lt;br /&gt;
EndFunc   ;==&amp;gt;_RunStdOutRead&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _ValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 58912-brewmannh&lt;br /&gt;
 | AuthorName = BrewManNH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt; ; This is only needed for the _ArrayDisplay function used in the example below, and is not needed for the _ValidIP function&lt;br /&gt;
&lt;br /&gt;
; IPv4 validation script&lt;br /&gt;
Global Const $IPAddress = &amp;quot;192.168.2.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Global Const $Return = _ValidIP($IPAddress)&lt;br /&gt;
&lt;br /&gt;
If $Return &amp;lt; 0 Then&lt;br /&gt;
    Switch @error&lt;br /&gt;
        Case 1&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&amp;quot;)&lt;br /&gt;
        Case 2&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&amp;quot;)&lt;br /&gt;
        Case 3&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&amp;quot;)&lt;br /&gt;
        Case 4&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 4 - Last octet is either 0 or 255&amp;quot;)&lt;br /&gt;
    EndSwitch&lt;br /&gt;
Else&lt;br /&gt;
    MsgBox(48, &amp;quot;&amp;quot;, $IPAddress &amp;amp; &amp;quot; is a valid Class &amp;quot; &amp;amp; $Return[5] &amp;amp; &amp;quot; IP address&amp;quot;)&lt;br /&gt;
    _ArrayDisplay($Return)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; FUNCTION# ===========================================================================================================&lt;br /&gt;
; Name...........: _ValidIP&lt;br /&gt;
; Description ...: Verifies whether an IP address is a valid IPv4 address or not&lt;br /&gt;
; Syntax.........: _ValidIP($sIP)&lt;br /&gt;
; Parameters ....: $sIP - IP address to validate&lt;br /&gt;
;&lt;br /&gt;
; Return values .: Success - Array containing split IP Address, IP address in Hex, and the Class of the IP address&lt;br /&gt;
;                            array[0] - [3] = the IP address split into octets&lt;br /&gt;
;                            array[4]       = IP address in Hex&lt;br /&gt;
;                            array[5]       = Class of the IP address [A through D]&lt;br /&gt;
;                  Failure - -1, sets @error&lt;br /&gt;
;                  |1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&lt;br /&gt;
;                  |2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&lt;br /&gt;
;                  |3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&lt;br /&gt;
;                  |4 - Last octet ends in 0 or 255 which are invalid for an IP address&lt;br /&gt;
; Author ........: BrewManNH&lt;br /&gt;
; Modified.......:&lt;br /&gt;
; Remarks .......: This will accept an IP address that is 4 octets long, and contains only numbers and falls within&lt;br /&gt;
;                  valid IP address values. Class A networks can&#039;t start with 0 or 127. 169.xx.xx.xx is reserved and is&lt;br /&gt;
;                  invalid and any address that starts above 239, ex. 240.xx.xx.xx is reserved. The address range&lt;br /&gt;
;                  224-239 1s reserved as well for Multicast groups but can be a valid IP address range if you&#039;re using&lt;br /&gt;
;                  it as such. Any IP address ending in 0 or 255 is also invalid for an IP&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; =====================================================================================================================&lt;br /&gt;
Func _ValidIP($sIP)&lt;br /&gt;
    Local $adIPAddressInfo[6]&lt;br /&gt;
&lt;br /&gt;
    Local $aArray = StringSplit($sIP, &amp;quot;.&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
    If Not IsArray($aArray) Or UBound($aArray) &amp;lt;&amp;gt; 4 Then Return SetError(3, 0, -1)&lt;br /&gt;
&lt;br /&gt;
    Local $dString = &amp;quot;0x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    If $aArray[0] &amp;lt;= 0 Or $aArray[0] &amp;gt; 239 Or $aArray[0] = 127 Or $aArray[0] = 169 Then&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    For $I = 0 To 3&lt;br /&gt;
        If $I &amp;lt; 3 Then&lt;br /&gt;
            If $aArray[$I] &amp;lt; 0 Or $aArray[$I] &amp;gt; 255 Or Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        Else&lt;br /&gt;
            If Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
            If $aArray[$I] &amp;lt; 1 Or $aArray[$I] &amp;gt; 254 Then&lt;br /&gt;
                Return SetError(4, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        EndIf&lt;br /&gt;
&lt;br /&gt;
        $dString &amp;amp;= StringRight(Hex($aArray[$I]), 2)&lt;br /&gt;
&lt;br /&gt;
        $adIPAddressInfo[$I] = $aArray[$I]&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $adIPAddressInfo[4] = $dString&lt;br /&gt;
&lt;br /&gt;
    Switch $aArray[0]&lt;br /&gt;
        Case 1 To 126&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;A&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 128 To 191&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;B&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 192 To 223&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;C&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 224 To 239&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;D&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ValidIP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13652</id>
		<title>Snippets ( Internet )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Internet_)&amp;diff=13652"/>
		<updated>2017-06-30T04:43:46Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Auto-Check For User To Update ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 4920-valuater&lt;br /&gt;
 | AuthorName = Valuater&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Auto-Check For User To Update&lt;br /&gt;
&lt;br /&gt;
Global $Udif, $QT_web = &amp;quot;www.XPCleanMenu.HostRocket.com&amp;quot;&lt;br /&gt;
Call(&amp;quot;Set_Updater&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;test&lt;br /&gt;
$Uask = MsgBox(68, &amp;quot;Update Notification&amp;quot;, &amp;quot; Your last update was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago.&amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If $Uask = 6 Then MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;Success.  The update was ran.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func Set_Updater()&lt;br /&gt;
	If Not FileExists(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;) Then&lt;br /&gt;
		FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
	Else&lt;br /&gt;
		$Uold = FileReadLine(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, 1)&lt;br /&gt;
&lt;br /&gt;
		If $Uold &amp;gt;=320 Then&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
			Return&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
		$Udif = @YDAY - $Uold&lt;br /&gt;
&lt;br /&gt;
		If $Udif &amp;gt;= 45 Then&lt;br /&gt;
			$Uask = MsgBox(68, &amp;quot;UpDate Notification&amp;quot;, &amp;quot; Your last UpDate was more than &amp;quot; &amp;amp; $Udif &amp;amp; &amp;quot; days ago  &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF &amp;amp; &amp;quot;Would you like to check for new updates now?        &amp;quot; &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
			If $Uask = 6 Then&lt;br /&gt;
				Run(@ProgramFilesDir &amp;amp; &amp;quot;\Internet Explorer\iexplore.exe &amp;quot; &amp;amp; $QT_web)&lt;br /&gt;
				WinWaitActive(&amp;quot;&amp;quot;)&lt;br /&gt;
			EndIf&lt;br /&gt;
&lt;br /&gt;
			FileDelete(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
			FileWrite(@SystemDir &amp;amp; &amp;quot;\UpDate.dat&amp;quot;, @YDAY)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetIEVersion ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Check IE Version.&lt;br /&gt;
ConsoleWrite(_GetIEVersion() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _GetIEVersion()&lt;br /&gt;
    Return StringRegExpReplace(RegRead(&#039;HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\&#039;, &#039;Version&#039;), &#039;^(\d+\.\d+).*&#039;, &#039;$1&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetIEVersion&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _GetTimeOnline ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
 | Desc = Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Retrieve the current time from TimeAPI.org.  Ideal if your Windows clock is out of sync.&lt;br /&gt;
ConsoleWrite(_GetTimeOnline(0) &amp;amp; @CRLF) ; TimeZone UTC.&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _GetTimeOnline&lt;br /&gt;
; Description ...: Retrieve the current date and time from TimeAPI.org.&lt;br /&gt;
; Syntax ........: _GetTimeOnline($iTimeZone)&lt;br /&gt;
; Parameters ....: $iTimeZone           - An integer value of the timezone .&lt;br /&gt;
;				   0 - UTC (Universal Time)&lt;br /&gt;
;				   1 - EST (Eastern Time)&lt;br /&gt;
;				   2 - CST (Central Time)&lt;br /&gt;
;				   3 - MST (Mountain Time)&lt;br /&gt;
;				   4 - PST (Pacific Time)&lt;br /&gt;
;				   5 - AKST (Alaska Time)&lt;br /&gt;
;				   6 - HAST (Hawaii-Aleutian Time)&lt;br /&gt;
; Return values .: Success: Returns the current Date and Time in the format YYYY/MM/DD HH:MM:SS&lt;br /&gt;
;				   Failure: Sets @error to non-zero and returns the same format as a successful return but using the system time.&lt;br /&gt;
; Author ........: guinness&lt;br /&gt;
; Link ..........: According to http://www.programmableweb.com/api/timeapi, this is for non-commercial use.&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _GetTimeOnline($iTimeZone)&lt;br /&gt;
	Local $aTimeZone[7] = [&#039;utc&#039;, &#039;est&#039;, &#039;cst&#039;, &#039;mst&#039;, &#039;pst&#039;, &#039;akst&#039;, &#039;hast&#039;]&lt;br /&gt;
&lt;br /&gt;
	Local $sRead = BinaryToString(InetRead(&#039;http://www.timeapi.org/&#039; &amp;amp; $aTimeZone[$iTimeZone] &amp;amp; &#039;/now?format=\Y/\m/\d%20\H:\M:\S&#039;))&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, @YEAR &amp;amp; &#039;/&#039; &amp;amp; @MON &amp;amp; &#039;/&#039; &amp;amp; @MDAY &amp;amp; &#039; &#039; &amp;amp; @HOUR &amp;amp; &#039;:&#039; &amp;amp; @MIN &amp;amp; &#039;:&#039; &amp;amp; @SEC)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $sRead&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetTimeOnline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _HTML_StripTags ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 25246-robjong&lt;br /&gt;
 | AuthorName = Robjong&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox(4096, &amp;quot;&amp;quot;, _HTML_StripTags(&amp;quot;This should be # - (&amp;amp;#35;)&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
; Strip HTML tags from HTML syntax. By Robjong.&lt;br /&gt;
Func _HTML_StripTags($sHTMLData) ; http://www.autoitscript.com/forum/topic/...tml-data/page__view__findpost_&lt;br /&gt;
    If $sHTMLData = &amp;quot;&amp;quot; Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Local $oHTML = ObjCreate(&amp;quot;HTMLFILE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    If @error Then Return SetError(1, 0, $sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    $oHTML.Open()&lt;br /&gt;
    $oHTML.Write($sHTMLData)&lt;br /&gt;
&lt;br /&gt;
    Return SetError(0, 0, $oHTML.Body.InnerText)&lt;br /&gt;
EndFunc   ;==&amp;gt;_HTML_StripTags&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _InetGetOutOfProcess ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_InetGetOutOfProcess(&#039;http://google.com&#039;, @TempDir &amp;amp; &#039;\Google.tmp&#039;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Download a file by spawning a new AutoIt process.&lt;br /&gt;
Func _InetGetOutOfProcess($sURL, $sFilePath, $iOptions = 0)&lt;br /&gt;
    Return RunWait(&#039;&amp;quot;&#039; &amp;amp; @AutoItExe &amp;amp; &#039;&amp;quot; /AutoIt3ExecuteLine &#039; &amp;amp; &#039;&amp;quot;Exit InetGet(&amp;quot;&amp;quot;&#039; &amp;amp; $sURL &amp;amp; &#039;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot;&amp;quot;, &#039; &amp;amp; $iOptions &amp;amp; &#039;, 0)&amp;quot;&#039;) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_InetGetOutOfProcess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsInternetConnected ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&amp;quot;Internet Is Connected&amp;quot; &amp;amp; &amp;quot; = &amp;quot; &amp;amp; _IsInternetConnected() &amp;amp; @CRLF) ; ( Returns &amp;quot;True&amp;quot; Or &amp;quot;False&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Func _IsInternetConnected()&lt;br /&gt;
    Local $aReturn = DllCall(&#039;connect.dll&#039;, &#039;long&#039;, &#039;IsInternetConnected&#039;)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsInternetConnected&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 30100-jguinch&lt;br /&gt;
 | AuthorName = jguinch&lt;br /&gt;
 | Desc = Checks to see if a string is a valid IP address.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Checks to see if a string is a valid IP address.&lt;br /&gt;
&lt;br /&gt;
If _IsIP(&amp;quot;127.0.0.1&amp;quot;) Then Msgbox(0, &amp;quot;&amp;quot;, &amp;quot;Valid IP address.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _IsIP($ip)&lt;br /&gt;
    Return StringRegExp ($ip, &amp;quot;^(?:(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?1)$&amp;quot;)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsSubnetMaskValid ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $aSubnetMaskIP1[] = [255,255,255,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP1) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP2[] = [255,248,0,0]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP2) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Local $aSubnetMaskIP3[] = [255,255,255,1]&lt;br /&gt;
ConsoleWrite(&amp;quot;Is SubnetMask Valid: &amp;quot; &amp;amp; _IsSubnetMaskValid($aSubnetMaskIP3) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsSubnetMaskValid($aIP)&lt;br /&gt;
	If Not UBound($aIP)=4 Then Return SetError(1,0,False)	;Validate Input (4 element array)&lt;br /&gt;
&lt;br /&gt;
	Local $hIP = &amp;quot;&amp;quot;, $sHex = &amp;quot;&amp;quot;, $iSubnetDec = 0, $bIsValid = False   ;Define Local Variables&lt;br /&gt;
    For $iX = 0 To 3	;Convert Subnetmask into Hex&lt;br /&gt;
        $sHex &amp;amp;= Hex($aIP[$iX], 2)&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $hIP &amp;amp;= Dec($sHex, 2)	;Convert SubnetHex into Dec&lt;br /&gt;
&lt;br /&gt;
    For $iX = 0 To 32	;Validate Subnet mask congruity with bit logic&lt;br /&gt;
        If (((2 ^ 32) - 1) - ((2 ^ $iX) - 1)) = $hIP Then&lt;br /&gt;
            $bIsValid = True&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    Return $bIsValid&lt;br /&gt;
EndFunc   ;==&amp;gt;_IPSubnetMaskIsValid&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 20477-mrcreator&lt;br /&gt;
 | AuthorName = MrCreatoR&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local Const $sString = @IPAddress2 &amp;amp; &amp;quot;:8080&amp;quot; ;8080 is port value (for example)&lt;br /&gt;
&lt;br /&gt;
Local Const $GetValidIp = _IsValidIP($sString, &amp;quot;:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite($GetValidIp)&lt;br /&gt;
&lt;br /&gt;
Local $IPsArray = _StringToIPArray(&#039;99.77.88.255 567567567 text 155.99.66.6 some more text &#039; &amp;amp; @IPAddress1 &amp;amp; &#039;,&#039; &amp;amp; @IPAddress2)&lt;br /&gt;
&lt;br /&gt;
_ArrayDisplay($IPsArray)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidIP($sString, Const $sDelim = &amp;quot;&amp;quot;)&lt;br /&gt;
    If Not StringInStr($sString, &amp;quot;.&amp;quot;) Then Return 0&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then $sString = StringLeft($sString, StringInStr($sString, $sDelim) - 1)&lt;br /&gt;
&lt;br /&gt;
    If StringLen($sString) &amp;gt; 15 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    Local $Dot_Split = StringSplit($sString, &amp;quot;.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    Local $iUbound = UBound($Dot_Split) - 1&lt;br /&gt;
&lt;br /&gt;
    If $iUbound &amp;lt;&amp;gt; 4 Then Return 0&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To $iUbound&lt;br /&gt;
        If $Dot_Split[$i] = &amp;quot;&amp;quot; Then Return 0&lt;br /&gt;
        If StringRegExp($Dot_Split[$i], &#039;[^0-9]&#039;) Or Number($Dot_Split[$i]) &amp;gt; 255 Then Return 0&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $sDelim &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then Return $sString&lt;br /&gt;
    Return 1&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func _StringToIPArray($sString)&lt;br /&gt;
    Local $avArray = StringRegExp($sString, &#039;([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)&#039;, 3)&lt;br /&gt;
    Local $avRetArr[1], $iUbound&lt;br /&gt;
&lt;br /&gt;
    For $i = 0 To UBound($avArray)-1&lt;br /&gt;
        If _IsValidIP($avArray[$i]) Then&lt;br /&gt;
            $iUbound = UBound($avRetArr)&lt;br /&gt;
            ReDim $avRetArr[$iUbound+1]&lt;br /&gt;
            $avRetArr[$iUbound] = $avArray[$i]&lt;br /&gt;
        EndIf&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If $iUbound = 0 Then Return SetError(1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
    $avRetArr[0] = $iUbound&lt;br /&gt;
    Return $avRetArr&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _IsValidURL ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Author: JScript - Snippet Version No. = 1.0&lt;br /&gt;
;Snippet was Created Using AutoIt Version = 3.3.8.1, Creation Date = 22/05/12.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;http:www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&amp;quot;Is Valid URL? &amp;quot; &amp;amp; _IsValidURL(&amp;quot;www.autoitscript.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsValidURL($sPath)&lt;br /&gt;
    Local Const $sRet = DllCall(&amp;quot;Shlwapi.dll&amp;quot;, &amp;quot;BOOL&amp;quot;, &amp;quot;PathIsURL&amp;quot;, &amp;quot;str&amp;quot;, $sPath)&lt;br /&gt;
    Return $sRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidURL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Toggle_Images ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 8730-big-daddy&lt;br /&gt;
 | AuthorName = big_daddy&lt;br /&gt;
 | Desc = Toggle Internet Images On/Off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Toggle Internet Images On/Off&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;IE.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opt(&amp;quot;WinTitleMatchMode&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
_Toggle_Images(1)&lt;br /&gt;
Global Const $oIE = _IECreate ()&lt;br /&gt;
&lt;br /&gt;
_IENavigate ($oIE, &amp;quot;http:\\www.google.com&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
While WinExists(&amp;quot;Internet Explorer&amp;quot;)&lt;br /&gt;
    Sleep(250)&lt;br /&gt;
WEnd&lt;br /&gt;
_Toggle_Images()&lt;br /&gt;
&lt;br /&gt;
Func _Toggle_Images($On_Off=0)&lt;br /&gt;
    If $On_Off == 0 Then&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;yes&amp;quot;)&lt;br /&gt;
    Else&lt;br /&gt;
        RegWrite(&amp;quot;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main&amp;quot;, &amp;quot;Display Inline Images&amp;quot;, &amp;quot;REG_SZ&amp;quot;, &amp;quot;no&amp;quot;)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc ;==&amp;gt;_Toggle_Images()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _Tracert ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_Tracert(&amp;quot;www.duckduckgo.com&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _Tracert(Const $sURL)&lt;br /&gt;
	; -d = Do Not Resolve Host &amp;amp; -h Is The Number Of Hops.&lt;br /&gt;
	Local Const $sData = _RunStdOutRead(&#039;tracert -d -h 1 &#039; &amp;amp; $sURL, @SystemDir)&lt;br /&gt;
&lt;br /&gt;
	Local Const $aReturn = StringRegExp($sData, &#039;\[([\d.]{7,15})\]&#039;, 3)&lt;br /&gt;
&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(1, 0, -1)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	Return $aReturn[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_Tracert&lt;br /&gt;
&lt;br /&gt;
Func _RunStdOutRead($sCommand, $sWorkingDirectory = @SystemDir)&lt;br /&gt;
	Local Const $iPID = Run(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; $sCommand, $sWorkingDirectory, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sOutput = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	While 1&lt;br /&gt;
		$sOutput &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
&lt;br /&gt;
		If @error Then&lt;br /&gt;
			ExitLoop&lt;br /&gt;
		EndIf&lt;br /&gt;
	WEnd&lt;br /&gt;
&lt;br /&gt;
	Return $sOutput&lt;br /&gt;
EndFunc   ;==&amp;gt;_RunStdOutRead&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | Return To Contents]]&lt;br /&gt;
&lt;br /&gt;
== _ValidIP ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 58912-brewmannh&lt;br /&gt;
 | AuthorName = BrewManNH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt; ; This is only needed for the _ArrayDisplay function used in the example below, and is not needed for the _ValidIP function&lt;br /&gt;
&lt;br /&gt;
; IPv4 validation script&lt;br /&gt;
Global Const $IPAddress = &amp;quot;192.168.2.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Global Const $Return = _ValidIP($IPAddress)&lt;br /&gt;
&lt;br /&gt;
If $Return &amp;lt; 0 Then&lt;br /&gt;
    Switch @error&lt;br /&gt;
        Case 1&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&amp;quot;)&lt;br /&gt;
        Case 2&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&amp;quot;)&lt;br /&gt;
        Case 3&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&amp;quot;)&lt;br /&gt;
        Case 4&lt;br /&gt;
            MsgBox(64, &amp;quot;&amp;quot;, &amp;quot;Error in IP address: &amp;quot; &amp;amp; $IPAddress &amp;amp; @LF &amp;amp; &amp;quot;Error code is: 4 - Last octet is either 0 or 255&amp;quot;)&lt;br /&gt;
    EndSwitch&lt;br /&gt;
Else&lt;br /&gt;
    MsgBox(48, &amp;quot;&amp;quot;, $IPAddress &amp;amp; &amp;quot; is a valid Class &amp;quot; &amp;amp; $Return[5] &amp;amp; &amp;quot; IP address&amp;quot;)&lt;br /&gt;
    _ArrayDisplay($Return)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; FUNCTION# ===========================================================================================================&lt;br /&gt;
; Name...........: _ValidIP&lt;br /&gt;
; Description ...: Verifies whether an IP address is a valid IPv4 address or not&lt;br /&gt;
; Syntax.........: _ValidIP($sIP)&lt;br /&gt;
; Parameters ....: $sIP - IP address to validate&lt;br /&gt;
;&lt;br /&gt;
; Return values .: Success - Array containing split IP Address, IP address in Hex, and the Class of the IP address&lt;br /&gt;
;                            array[0] - [3] = the IP address split into octets&lt;br /&gt;
;                            array[4]       = IP address in Hex&lt;br /&gt;
;                            array[5]       = Class of the IP address [A through D]&lt;br /&gt;
;                  Failure - -1, sets @error&lt;br /&gt;
;                  |1 - IP address starts with an invalid number = 0, 127 , 169 or is &amp;gt; 239&lt;br /&gt;
;                  |2 - one of the octets of the IP address is out of the range 0-255 or contains invalid characters&lt;br /&gt;
;                  |3 - IP Address is not a valid dotted IP address (ex. valid address 190.40.100.20)&lt;br /&gt;
;                  |4 - Last octet ends in 0 or 255 which are invalid for an IP address&lt;br /&gt;
; Author ........: BrewManNH&lt;br /&gt;
; Modified.......:&lt;br /&gt;
; Remarks .......: This will accept an IP address that is 4 octets long, and contains only numbers and falls within&lt;br /&gt;
;                  valid IP address values. Class A networks can&#039;t start with 0 or 127. 169.xx.xx.xx is reserved and is&lt;br /&gt;
;                  invalid and any address that starts above 239, ex. 240.xx.xx.xx is reserved. The address range&lt;br /&gt;
;                  224-239 1s reserved as well for Multicast groups but can be a valid IP address range if you&#039;re using&lt;br /&gt;
;                  it as such. Any IP address ending in 0 or 255 is also invalid for an IP&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; =====================================================================================================================&lt;br /&gt;
Func _ValidIP($sIP)&lt;br /&gt;
    Local $adIPAddressInfo[6]&lt;br /&gt;
&lt;br /&gt;
    Local $aArray = StringSplit($sIP, &amp;quot;.&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
    If Not IsArray($aArray) Or UBound($aArray) &amp;lt;&amp;gt; 4 Then Return SetError(3, 0, -1)&lt;br /&gt;
&lt;br /&gt;
    Local $dString = &amp;quot;0x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    If $aArray[0] &amp;lt;= 0 Or $aArray[0] &amp;gt; 239 Or $aArray[0] = 127 Or $aArray[0] = 169 Then&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    For $I = 0 To 3&lt;br /&gt;
        If $I &amp;lt; 3 Then&lt;br /&gt;
            If $aArray[$I] &amp;lt; 0 Or $aArray[$I] &amp;gt; 255 Or Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        Else&lt;br /&gt;
            If Not StringIsDigit($aArray[$I]) Then&lt;br /&gt;
                Return SetError(2, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
            If $aArray[$I] &amp;lt; 1 Or $aArray[$I] &amp;gt; 254 Then&lt;br /&gt;
                Return SetError(4, 0, -1)&lt;br /&gt;
            EndIf&lt;br /&gt;
        EndIf&lt;br /&gt;
&lt;br /&gt;
        $dString &amp;amp;= StringRight(Hex($aArray[$I]), 2)&lt;br /&gt;
&lt;br /&gt;
        $adIPAddressInfo[$I] = $aArray[$I]&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $adIPAddressInfo[4] = $dString&lt;br /&gt;
&lt;br /&gt;
    Switch $aArray[0]&lt;br /&gt;
        Case 1 To 126&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;A&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 128 To 191&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;B&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 192 To 223&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;C&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
        Case 224 To 239&lt;br /&gt;
            $adIPAddressInfo[5] = &amp;quot;D&amp;quot;&lt;br /&gt;
            Return $adIPAddressInfo&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ValidIP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_AutoIt_Array_)&amp;diff=13609</id>
		<title>Snippets ( AutoIt Array )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_AutoIt_Array_)&amp;diff=13609"/>
		<updated>2017-03-03T07:30:06Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: /* _DynEnumArray */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== _1Dto2DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $aArray_1D[2] = [&amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;]&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
_1Dto2DArray($aArray_1D)&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
&lt;br /&gt;
Global $aArray_1D[10] = [&amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;]&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
_1Dto2DArray($aArray_1D, 9)&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
&lt;br /&gt;
Func _1Dto2DArray(ByRef $aArray, Const $iAdditionalColumns = 1)&lt;br /&gt;
    Local Const $iSize = UBound($aArray, 1)&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn[$iSize][$iAdditionalColumns + 1]&lt;br /&gt;
&lt;br /&gt;
    For $A = 0 To $iSize - 1&lt;br /&gt;
        $aReturn[$A][0] = $aArray[$A]&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $aArray = $aReturn&lt;br /&gt;
&lt;br /&gt;
    Return $aReturn&lt;br /&gt;
EndFunc   ;==&amp;gt;_1Dto2DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayAddEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example_1()&lt;br /&gt;
Example_2()&lt;br /&gt;
&lt;br /&gt;
Func Example_1()&lt;br /&gt;
    Local $aArray_1[1] = [&amp;quot;Data_0&amp;quot;], $iBegin&lt;br /&gt;
&lt;br /&gt;
    $iBegin = TimerInit() ; Start the timer.&lt;br /&gt;
    For $i = 1 To 5000&lt;br /&gt;
        _ArrayAdd($aArray_1, &amp;quot;Data_&amp;quot; &amp;amp; $i)&lt;br /&gt;
    Next&lt;br /&gt;
    $iBegin = TimerDiff($iBegin) ; End the timer and find the difference from start to finish.&lt;br /&gt;
    ConsoleWrite(&amp;quot;_ArrayAdd from Array.au3 &amp;gt;&amp;gt; &amp;quot; &amp;amp; $iBegin &amp;amp; @CRLF)&lt;br /&gt;
    _ArrayDisplay($aArray_1)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example_1&lt;br /&gt;
&lt;br /&gt;
Func Example_2()&lt;br /&gt;
    Local $aArray_2[1] = [&amp;quot;Data_0&amp;quot;], $iBegin, $iDimension, $iCount&lt;br /&gt;
&lt;br /&gt;
    $iBegin = TimerInit() ; Start the timer.&lt;br /&gt;
    For $i = 1 To 5000&lt;br /&gt;
        _ArrayAddEx($aArray_2, &amp;quot;Data_&amp;quot; &amp;amp; $i, $iDimension, $iCount) ; $iDimension is the overall size of the array &amp;amp; $iCount is the last index number, because regarding the overall size +1 as the next item will give false results as we&#039;re increasing the size of the array not by 1 but multiplying 2.&lt;br /&gt;
    Next&lt;br /&gt;
    $iBegin = TimerDiff($iBegin) ; End the timer and find the difference from start to finish.&lt;br /&gt;
    ConsoleWrite(&amp;quot;_ArrayAddEx by guinness &amp;gt;&amp;gt; &amp;quot; &amp;amp; $iBegin &amp;amp; @CRLF)&lt;br /&gt;
    ReDim $aArray_2[$iCount] ; Remove the empty rows.&lt;br /&gt;
    _ArrayDisplay($aArray_2)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example_2&lt;br /&gt;
&lt;br /&gt;
Func _ArrayAddEx(ByRef $aArray, $sData, ByRef $iDimension, ByRef $iCount) ; Taken from Array.au3 and modified by guinness to reduce the use of ReDim.&lt;br /&gt;
    If IsArray($aArray) = 0 Then&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    If UBound($aArray, 0) &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
        Return SetError(2, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    If $iCount = 0 Then&lt;br /&gt;
        $iCount = UBound($aArray, 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    $iCount += 1&lt;br /&gt;
    If ($iCount + 1) &amp;gt;= $iDimension Then&lt;br /&gt;
        $iDimension = (UBound($aArray, 1) + 1) * 2&lt;br /&gt;
        ReDim $aArray[$iDimension]&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aArray[$iCount - 1] = $sData&lt;br /&gt;
    Return $iCount - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayAddEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayEmpty ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
|Desc=Creates Empty 1D &amp;amp; 2D Array&#039;s&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $aMain[11] = [10]&lt;br /&gt;
_ArrayEmpty($aMain)&lt;br /&gt;
_ArrayDisplay($aMain, &amp;quot;Empty 1D Array.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Global $aMainEx[11][3] = [[10]]&lt;br /&gt;
_ArrayEmpty($aMainEx)&lt;br /&gt;
_ArrayDisplay($aMainEx, &amp;quot;Empty 2D Array.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ArrayEmpty(ByRef $aArray)&lt;br /&gt;
    Switch UBound($aArray, 0) ; Dimension, 1D or 2D array are supported.&lt;br /&gt;
        Case 1&lt;br /&gt;
            Local $aEmpty1D[1]&lt;br /&gt;
            $aArray = $aEmpty1D&lt;br /&gt;
&lt;br /&gt;
        Case 2&lt;br /&gt;
            ; Edit by DatMCEyeBall - Instead of emptying the array to [1][$x] we empty it to [$x][$y]&lt;br /&gt;
            ; where $x is the 1st dimensions size and $y the 2nd.&lt;br /&gt;
            ; Previous code was: Local $aEmpty2D[1][UBound($aArray, 2)]&lt;br /&gt;
            ; This way we preserve the arrays&#039; original size.&lt;br /&gt;
            Local $aEmpty2D[UBound($aArray, 1)][UBound($aArray, 2)]&lt;br /&gt;
            $aArray = $aEmpty2D&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayEmpty&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayGet ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31965-progandy&lt;br /&gt;
|AuthorName=ProgAndy&lt;br /&gt;
|Desc=Easy access for nested arrays up to 20 nested dimensions (including multidimensional arrays)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $b[2] = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;]&lt;br /&gt;
Global $a[3][2] = [[0, -1], [$b, &amp;quot;x&amp;quot;], [1, -2]]&lt;br /&gt;
&lt;br /&gt;
Global $c[5] = [11, 22, 33, 44, 55]&lt;br /&gt;
&lt;br /&gt;
MsgBox(0, &amp;quot;&amp;quot;, _ArrayGet($a, 1, 0, 1) &amp;amp; &amp;quot; # &amp;quot; &amp;amp; @error)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _ArrayGet&lt;br /&gt;
; Description ...: Gets a value from a nested multidimensional array&lt;br /&gt;
; Syntax ........: _ArrayGet(Byref $aArray, $i1[, $i2 = 0[, $i3 = 0[, $i4 = 0[, $i5 = 0[, $i6 = 0[, $i7 = 0[, $i8 = 0[,&lt;br /&gt;
;                 $i9 = 0[, $i10 = 0[, $i11 = 0[, $i12 = 0[, $i13 = 0[, $i14 = 0[, $i15 = 0[, $i16 = 0[, $i17 = 0[,&lt;br /&gt;
;                 $i18 = 0[, $i19 = 0[, $i20 = 0]]]]]]]]]]]]]]]]]]])&lt;br /&gt;
; Parameters ....: $aArray            - [in/out] An array of unknowns.&lt;br /&gt;
;                 $i1                 - first array index.&lt;br /&gt;
;                 $i2                 - [optional] second array index.&lt;br /&gt;
;                 $i3                 - [optional] third array index.&lt;br /&gt;
;                 $i4                 - [optional] fourth array index.&lt;br /&gt;
;                 $i5                 - [optional] fifth array index.&lt;br /&gt;
;                 $i6                 - [optional] sixth array index.&lt;br /&gt;
;                 $i7                 - [optional] seventh array index.&lt;br /&gt;
;                 $i8                 - [optional] eighth array index.&lt;br /&gt;
;                 $i9                 - [optional] ninth array index.&lt;br /&gt;
;                 $i10               - [optional] 10th array index.&lt;br /&gt;
;                 $i11               - [optional] 11th array index.&lt;br /&gt;
;                 $i12               - [optional] 12th array index.&lt;br /&gt;
;                 $i13               - [optional] 13th array index.&lt;br /&gt;
;                 $i14               - [optional] 14th array index.&lt;br /&gt;
;                 $i15               - [optional] 15th array index.&lt;br /&gt;
;                 $i16               - [optional] 16th array index.&lt;br /&gt;
;                 $i17               - [optional] 17th array index.&lt;br /&gt;
;                 $i18               - [optional] 18th array index.&lt;br /&gt;
;                 $i19               - [optional] 19th array index.&lt;br /&gt;
;                 $i20               - [optional] 20th array index.&lt;br /&gt;
; Return values .: Success: Value at the specified index&lt;br /&gt;
;                 Error: Nothing, Sets @error to:&lt;br /&gt;
;                 |1 - Trying to acces non-array as array&lt;br /&gt;
;                 |2 - Not enough dimensions for the last accessed array&lt;br /&gt;
;                 |3 - Index out of bounds for a dimension&lt;br /&gt;
;                 @extended contains the dimension in error (according to parameter list)&lt;br /&gt;
; Author ........: ProgAndy&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 _ArrayGet(ByRef $aArray, $i1, $i2=0, $i3=0, $i4=0, $i5=0, $i6=0, $i7=0, $i8=0, $i9=0, $i10=0, $i11=0, $i12=0, $i13=0, $i14=0, $i15=0, $i16=0, $i17=0, $i18=0, $i19=0, $i20=0)&lt;br /&gt;
	#forceref $i1, $i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10, $i11, $i12, $i13, $i14, $i15, $i16, $i17, $i18, $i19, $i20&lt;br /&gt;
   ; ProgAndy&lt;br /&gt;
    Local $NULL&lt;br /&gt;
    If Not IsArray($aArray) Then Return SetError(1, 1, $NULL)&lt;br /&gt;
    Local $iDims = UBound($aArray, 0)&lt;br /&gt;
    If @NumParams &amp;lt;= $iDims Then Return SetError(2, @NumParams, $NULL)&lt;br /&gt;
    Local $sAccess = &amp;quot;$aArray&amp;quot;&lt;br /&gt;
    For $i = 1 To $iDims&lt;br /&gt;
        Local $iIndex = Int(Eval(&amp;quot;i&amp;quot; &amp;amp; $i))&lt;br /&gt;
        If $iIndex &amp;gt;= UBound($aArray, $i) Then Return SetError(3, $i, $NULL)&lt;br /&gt;
        $sAccess &amp;amp;= &#039;[&#039; &amp;amp; $iIndex &amp;amp; &#039;]&#039;&lt;br /&gt;
    Next&lt;br /&gt;
    If @NumParams-1 &amp;gt; $iDims Then ; Still indices left&lt;br /&gt;
        For $i = $iDims+1 To @NumParams-1&lt;br /&gt;
            $sAccess &amp;amp;= &amp;quot;, $i&amp;quot; &amp;amp; $i&lt;br /&gt;
        Next&lt;br /&gt;
        Local $vResult = Execute(&amp;quot;_ArrayGet(&amp;quot; &amp;amp; $sAccess &amp;amp; &amp;quot;)&amp;quot;)&lt;br /&gt;
        If @error Then SetError(@error, @extended+$iDims)&lt;br /&gt;
        Return $vResult&lt;br /&gt;
    Else ;&lt;br /&gt;
        Return Execute($sAccess)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArraySet ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31965-progandy&lt;br /&gt;
|AuthorName=ProgAndy&lt;br /&gt;
|Desc=Easy access for nested arrays up to 20 nested dimensions (including multidimensional arrays)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $b[2] = [&#039;a&#039;, &#039;b&#039;&lt;br /&gt;
Global $a[3][2] = [[0, -1], [$b, &amp;quot;x&amp;quot;], [1, -2]]&lt;br /&gt;
&lt;br /&gt;
Global $c[5] = [11, 22, 33, 44, 55]&lt;br /&gt;
&lt;br /&gt;
_ArraySet($a, $c, 1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _ArraySet&lt;br /&gt;
; Description ...: Sets a value from a nested multidimensional array&lt;br /&gt;
; Syntax ........: _ArraySet(Byref $aArray, $vValue, $i1[, $i2 = 0[, $i3 = 0[, $i4 = 0[, $i5 = 0[, $i6 = 0[, $i7 = 0[, $i8 = 0[,&lt;br /&gt;
;                 $i9 = 0[, $i10 = 0[, $i11 = 0[, $i12 = 0[, $i13 = 0[, $i14 = 0[, $i15 = 0[, $i16 = 0[, $i17 = 0[,&lt;br /&gt;
;                 $i18 = 0[, $i19 = 0[, $i20 = 0]]]]]]]]]]]]]]]]]]])&lt;br /&gt;
; Parameters ....: $aArray            - [in/out] An array of unknowns.&lt;br /&gt;
;                 $vValue             - value to set at specified index.&lt;br /&gt;
;                 $i1                 - first array index.&lt;br /&gt;
;                 $i2                 - [optional] second array index.&lt;br /&gt;
;                 $i3                 - [optional] third array index.&lt;br /&gt;
;                 $i4                 - [optional] fourth array index.&lt;br /&gt;
;                 $i5                 - [optional] fifth array index.&lt;br /&gt;
;                 $i6                 - [optional] sixth array index.&lt;br /&gt;
;                 $i7                 - [optional] seventh array index.&lt;br /&gt;
;                 $i8                 - [optional] eighth array index.&lt;br /&gt;
;                 $i9                 - [optional] ninth array index.&lt;br /&gt;
;                 $i10               - [optional] 10th array index.&lt;br /&gt;
;                 $i11               - [optional] 11th array index.&lt;br /&gt;
;                 $i12               - [optional] 12th array index.&lt;br /&gt;
;                 $i13               - [optional] 13th array index.&lt;br /&gt;
;                 $i14               - [optional] 14th array index.&lt;br /&gt;
;                 $i15               - [optional] 15th array index.&lt;br /&gt;
;                 $i16               - [optional] 16th array index.&lt;br /&gt;
;                 $i17               - [optional] 17th array index.&lt;br /&gt;
;                 $i18               - [optional] 18th array index.&lt;br /&gt;
;                 $i19               - [optional] 19th array index.&lt;br /&gt;
;                 $i20               - [optional] 20th array index.&lt;br /&gt;
; Return values .: Success: True&lt;br /&gt;
;                 Error: False, Sets @error to:&lt;br /&gt;
;                 |1 - Trying to acces non-array as array&lt;br /&gt;
;                 |2 - Not enough dimensions for the last accessed array&lt;br /&gt;
;                 |3 - Index out of bounds for a dimension&lt;br /&gt;
;                 |all: - @extended contains the dimension in error (according to parameter list)&lt;br /&gt;
; Author ........: ProgAndy&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 _ArraySet(ByRef $aArray, Const $vValue, $i1, $i2=0, $i3=0, $i4=0, $i5=0, $i6=0, $i7=0, $i8=0, $i9=0, $i10=0, $i11=0, $i12=0, $i13=0, $i14=0, $i15=0, $i16=0, $i17=0, $i18=0, $i19=0, $i20=0)&lt;br /&gt;
    ; ProgAndy&lt;br /&gt;
    Local Const $NULL = False&lt;br /&gt;
&lt;br /&gt;
    If Not IsArray($aArray) Then Return SetError(1, 1, $NULL)&lt;br /&gt;
&lt;br /&gt;
    Local $iDims = UBound($aArray, 0)&lt;br /&gt;
&lt;br /&gt;
    If @NumParams-2 &amp;lt; $iDims Then Return SetError(2, @NumParams-1, $NULL)&lt;br /&gt;
&lt;br /&gt;
    Local $sAccess = &amp;quot;$aArray&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To $iDims&lt;br /&gt;
        Local $iIndex = Int(Eval(&amp;quot;i&amp;quot; &amp;amp; $i))&lt;br /&gt;
        If $iIndex &amp;gt;= UBound($aArray, $i) Then Return SetError(3, $i, $NULL)&lt;br /&gt;
        $sAccess &amp;amp;= &#039;[&#039; &amp;amp; $iIndex &amp;amp; &#039;]&#039;&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If @NumParams-2 &amp;gt; $iDims Then&lt;br /&gt;
        $sAccess &amp;amp;= &amp;quot;, $vValue&amp;quot;&lt;br /&gt;
        For $i = $iDims+1 To @NumParams-2&lt;br /&gt;
            $sAccess &amp;amp;= &amp;quot;, $i&amp;quot; &amp;amp; $i&lt;br /&gt;
        Next&lt;br /&gt;
        Local $fSuccess = Execute(&amp;quot;_ArraySet(&amp;quot; &amp;amp; $sAccess &amp;amp; &amp;quot;)&amp;quot;)&lt;br /&gt;
        If @error Then SetError(@error, @extended+$iDims)&lt;br /&gt;
        Return $fSuccess&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Switch $iDims&lt;br /&gt;
        Case 1&lt;br /&gt;
            $aArray[$i1] = $vValue&lt;br /&gt;
        Case 2&lt;br /&gt;
            $aArray[$i1][$i2] = $vValue&lt;br /&gt;
        Case 3&lt;br /&gt;
            $aArray[$i1][$i2][$i3] = $vValue&lt;br /&gt;
        Case 4&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4] = $vValue&lt;br /&gt;
        Case 5&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5] = $vValue&lt;br /&gt;
        Case 6&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6] = $vValue&lt;br /&gt;
        Case 7&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7] = $vValue&lt;br /&gt;
        Case 8&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8] = $vValue&lt;br /&gt;
        Case 9&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9] = $vValue&lt;br /&gt;
        Case 10&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10] = $vValue&lt;br /&gt;
        Case 11&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11] = $vValue&lt;br /&gt;
        Case 12&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12] = $vValue&lt;br /&gt;
        Case 13&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13] = $vValue&lt;br /&gt;
        Case 14&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14] = $vValue&lt;br /&gt;
        Case 15&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15] = $vValue&lt;br /&gt;
        Case 16&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16] = $vValue&lt;br /&gt;
        Case 17&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17] = $vValue&lt;br /&gt;
        Case 18&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18] = $vValue&lt;br /&gt;
        Case 19&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18][$i19] = $vValue&lt;br /&gt;
        Case 20&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18][$i19][$i20] = $vValue&lt;br /&gt;
	EndSwitch&lt;br /&gt;
&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayLength ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $aArray[2][50]&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 2) &amp;amp; @CRLF) ;= &amp;gt; 10 - Total items&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 1) &amp;amp; @CRLF) ;= &amp;gt; 5 - Columns&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 0) &amp;amp; @CRLF) ;= &amp;gt; 2 - Rows&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(@CRLF)&lt;br /&gt;
&lt;br /&gt;
Global $aArray[2]&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 2) &amp;amp; @CRLF) ;= &amp;gt; 2 - Total items&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 1) &amp;amp; @CRLF) ;= &amp;gt; 1 - Columns&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 0) &amp;amp; @CRLF) ;= &amp;gt; 2 - Rows&lt;br /&gt;
&lt;br /&gt;
Func _ArrayLength($aArray, $iType = 1)&lt;br /&gt;
    Local $iDim = UBound($aArray, 0)&lt;br /&gt;
&lt;br /&gt;
    If $iDim &amp;lt; 0 Or $iDim &amp;gt; 2 Then ; If not a 1D or 2D Array, then return -1 and set @error to non-zero.&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Switch $iType&lt;br /&gt;
        Case 2&lt;br /&gt;
            If $iDim = 2 Then&lt;br /&gt;
                Return UBound($aArray, 2) * UBound($aArray, 1)&lt;br /&gt;
            Else&lt;br /&gt;
                Return UBound($aArray, 1)&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
        Case 1&lt;br /&gt;
            If $iDim = 2 Then&lt;br /&gt;
                Return UBound($aArray, 2)&lt;br /&gt;
            Else&lt;br /&gt;
                Return 1&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
        Case Else&lt;br /&gt;
            Return UBound($aArray, 1)&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayLength&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArraySortNum ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=4813-smoke-n&lt;br /&gt;
|AuthorName=SmOke_N&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; ArraySortNum(ByRef $nArray, $Ascending = 0, $Start = 1)&lt;br /&gt;
; Sorts arrays based on TRUE Numerical Order, including Decimals&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Example sort Array created with StringSplit.&lt;br /&gt;
Global $avArray = StringSplit(&amp;quot;6,8,10,4,2,13,12,129,106.1,106.4&amp;quot;, &amp;quot;,&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
_ArraySortNum($avArray, 1)&lt;br /&gt;
_ArrayDisplay($avArray, &amp;quot;Sorted Desc starting at 1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ArraySortNum(ByRef $nArray, $Ascending = 0, $Start = 1)&lt;br /&gt;
	For $i = $Start To UBound($nArray) - 2&lt;br /&gt;
		Local $SE = $i&lt;br /&gt;
&lt;br /&gt;
		If $Ascending = 0 Then&lt;br /&gt;
			For $x = $i To UBound($nArray) - 1&lt;br /&gt;
				If Number($nArray[$SE]) &amp;lt; Number($nArray[$x]) Then $SE = $x&lt;br /&gt;
			Next&lt;br /&gt;
		Else&lt;br /&gt;
			For $x = $i To UBound($nArray) - 1&lt;br /&gt;
				If Number($nArray[$SE]) &amp;gt; Number($nArray[$x]) Then $SE = $x&lt;br /&gt;
			Next&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
		Local $HLD = $nArray[$i]&lt;br /&gt;
&lt;br /&gt;
		$nArray[$i] = $nArray[$SE]&lt;br /&gt;
&lt;br /&gt;
		$nArray[$SE] = $HLD&lt;br /&gt;
	Next&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArraySortNum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _AssocArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31149-milesahead&lt;br /&gt;
|AuthorName=MilesAhead&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; use Scripting.Dictionary object for simple associative arrays&lt;br /&gt;
; with string keys. Key comparisons are case insensitive.&lt;br /&gt;
&lt;br /&gt;
Global $myArray&lt;br /&gt;
$myArray = _AssocArray()&lt;br /&gt;
If @error Then&lt;br /&gt;
    MsgBox(0x1010,&amp;quot;_AssocArray() Error&amp;quot;, &amp;quot;Error Creating Associative Array!&amp;quot;)&lt;br /&gt;
    Exit&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
$myArray(&amp;quot;AntiqueWhite&amp;quot;) = 0xFAEBD7&lt;br /&gt;
$myArray(&amp;quot;Black&amp;quot;) = 0x000000&lt;br /&gt;
$myArray(&amp;quot;Blue&amp;quot;) = 0x0000FF&lt;br /&gt;
$myArray(&amp;quot;Brown&amp;quot;) = 0xA52A2A&lt;br /&gt;
$myArray(&amp;quot;CadetBlue&amp;quot;) = 0x5F9EA0&lt;br /&gt;
$myArray(&amp;quot;Chocolate&amp;quot;) = 0xD2691E&lt;br /&gt;
$myArray(&amp;quot;Coral&amp;quot;) = 0xFF7F50&lt;br /&gt;
&lt;br /&gt;
MsgBox(0x1040,&amp;quot;&amp;quot;,&amp;quot;Hex for Chocolate Color is: 0x&amp;quot; &amp;amp; Hex($myArray(&amp;quot;Chocolate&amp;quot;),6))&lt;br /&gt;
_AssocArrayDestroy($myArray)&lt;br /&gt;
&lt;br /&gt;
Func _AssocArray()&lt;br /&gt;
    Local $aArray = ObjCreate(&amp;quot;Scripting.Dictionary&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    $aArray.CompareMode = 1&lt;br /&gt;
&lt;br /&gt;
    Return $aArray&lt;br /&gt;
EndFunc   ;==&amp;gt;_AssocArray&lt;br /&gt;
&lt;br /&gt;
Func _AssocArrayDestroy(ByRef $aArray)&lt;br /&gt;
    If Not IsObj($aArray) Then&lt;br /&gt;
        Return False&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aArray.RemoveAll()&lt;br /&gt;
    $aArray = 0&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_AssocArrayDestroy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _DynEnumArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func _DynEnumArray($aArrayToEnum)&lt;br /&gt;
    Local $aDims[1][2]=[[&amp;quot;ElementIdx&amp;quot;,&amp;quot;ElementCount&amp;quot;]]   ;Create an Array to Track Dimensions and Elements&lt;br /&gt;
    For $iX = 1 to UBound($aArrayToEnum,0)&lt;br /&gt;
        ReDim $aDims[$iX+1][2]&lt;br /&gt;
        $aDims[$iX][0]=0&lt;br /&gt;
        $aDims[$iX][1]=UBound($aArrayToEnum,$iX)&lt;br /&gt;
    Next&lt;br /&gt;
    Do   ;Loop Through Array Elements&lt;br /&gt;
        $sArray = &amp;quot;$aArrayToEnum&amp;quot;&lt;br /&gt;
        For $iX = 1 to UBound($aDims)-1&lt;br /&gt;
            $sArray &amp;amp;= &amp;quot;[&amp;quot; &amp;amp; $aDims[$iX][0] &amp;amp; &amp;quot;]&amp;quot;&lt;br /&gt;
        Next&lt;br /&gt;
        ConsoleWrite($sArray &amp;amp; &amp;quot; &amp;quot; &amp;amp; Execute($sArray) &amp;amp; @CRLF)  ;Output Subscript and Value&lt;br /&gt;
&lt;br /&gt;
        $aDims[UBound($aDims)-1][0] += 1   ;Increment Last Dimension Element&lt;br /&gt;
        For $iY = UBound($aDims)-2 To 1 Step -1   ;Increment Dimension Element&lt;br /&gt;
            If $aDims[$iY+1][0] = $aDims[$iY+1][1] Then&lt;br /&gt;
                $aDims[$iY+1][0]=0&lt;br /&gt;
                $aDims[$iY][0]+=1&lt;br /&gt;
            EndIf&lt;br /&gt;
        Next&lt;br /&gt;
&lt;br /&gt;
    Until $aDims[1][0]=$aDims[1][1]&lt;br /&gt;
    Return ConsoleWrite(@CRLF)&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
;Demos&lt;br /&gt;
Local $aArray[5]=[&amp;quot;Never&amp;quot;,&amp;quot;Gonna&amp;quot;,&amp;quot;Give&amp;quot;,&amp;quot;You&amp;quot;,&amp;quot;Up&amp;quot;]&lt;br /&gt;
_DynEnumArray($aArray)&lt;br /&gt;
&lt;br /&gt;
Local $aArray[6][2]=[[&amp;quot;Penn&amp;quot;, &amp;quot;Teller&amp;quot;],[&amp;quot;Gilbert&amp;quot;, &amp;quot;Sullivan&amp;quot;],[&amp;quot;Sonny&amp;quot;, &amp;quot;Cher&amp;quot;],[&amp;quot;Stone&amp;quot;, &amp;quot;Parker&amp;quot;],[&amp;quot;Fischbacher&amp;quot;, &amp;quot;Horn&amp;quot;],[&amp;quot;Plant&amp;quot;, &amp;quot;Page&amp;quot;]]&lt;br /&gt;
_DynEnumArray($aArray)&lt;br /&gt;
&lt;br /&gt;
Local $aArray[2][3][2]=[[[&amp;quot;All&amp;quot;,&amp;quot;Your&amp;quot;],[&amp;quot;Base&amp;quot;,&amp;quot;Are&amp;quot;],[&amp;quot;Belong&amp;quot;,&amp;quot;To Us&amp;quot;]],[[&amp;quot;Is&amp;quot;,&amp;quot;This&amp;quot;],[&amp;quot;The&amp;quot;,&amp;quot;Way&amp;quot;],[&amp;quot;Back&amp;quot;,&amp;quot;Home&amp;quot;]]]&lt;br /&gt;
_DynEnumArray($aArray)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FuncListToArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=52-geosoft&lt;br /&gt;
|AuthorName=GEOSoft&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$aFlist = _FuncListToArray(@ScriptFullPath)&lt;br /&gt;
If NOT @Error Then&lt;br /&gt;
   For $i = 0 To Ubound($aFlist) -1&lt;br /&gt;
      MsgBox(0, &amp;quot;TEST&amp;quot;, $aFlist[$i], 2)&lt;br /&gt;
   Next&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
Func _FuncListToArray($sStr)&lt;br /&gt;
   If FileExists($sStr) Then $sStr = FileRead($sStr)&lt;br /&gt;
   Local $sRegEx = &amp;quot;(?i)(?m:^|\n)\s*Func\s+(\w+)\s*\(&amp;quot;&lt;br /&gt;
   $aRegEx = StringRegExp($sStr, $sRegEx, 3)&lt;br /&gt;
   If IsArray($aRegEx) Then Return $aRegEx&lt;br /&gt;
   Return SetError(1)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Identify Duplicate Values In Arrays ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=1967-garyfrost&lt;br /&gt;
|AuthorName=GaryFrost&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Identify Duplicate Values In Arrays&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $a1[3] = [1, 2, 3], $a2[5] = [5, 6, 7, 8, 9], $a3[2] = [3, 5]&lt;br /&gt;
Global $a_a[4] = [3, $a1, $a2, $a3]&lt;br /&gt;
MsgBox(0, &amp;quot;Dupes?&amp;quot;, _SearchForDupes($a_a))&lt;br /&gt;
&lt;br /&gt;
Func _SearchForDupes($a_arrays, $i_ReturnType = 0)&lt;br /&gt;
	Local $Dupes[1] = [0]&lt;br /&gt;
&lt;br /&gt;
	If $a_arrays[0] &amp;lt; 2 Then Return &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	For $i = 1 To $a_a[0] - 1&lt;br /&gt;
		For $j = $i + 1 To $a_a[0]&lt;br /&gt;
			_FindDupe($a_a[$i], $a_a[$j], $Dupes)&lt;br /&gt;
		Next&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	If $Dupes[0] = 0 Then Return &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	_ArraySort($Dupes)&lt;br /&gt;
&lt;br /&gt;
	If Not $i_ReturnType Then&lt;br /&gt;
		Local $s_return = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
		For $x = 1 To $Dupes[0]&lt;br /&gt;
			$s_return &amp;amp;= $Dupes[$x] &amp;amp; &#039;,&#039;&lt;br /&gt;
		Next&lt;br /&gt;
		Return StringTrimRight($s_return, 1)&lt;br /&gt;
	Else&lt;br /&gt;
		Return $Dupes&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_SearchForDupes&lt;br /&gt;
&lt;br /&gt;
Func _FindDupe(ByRef $a_array01, ByRef $a_array02, ByRef $Dupes)&lt;br /&gt;
	Local $found = False&lt;br /&gt;
&lt;br /&gt;
	For $i = 0 To UBound($a_array01) - 1&lt;br /&gt;
		For $j = 0 To UBound($a_array02) - 1&lt;br /&gt;
			If $a_array01[$i] = $a_array02[$j] Then&lt;br /&gt;
				$found = False&lt;br /&gt;
&lt;br /&gt;
				For $x = 1 To $Dupes[0]&lt;br /&gt;
					If $Dupes[$x] = $a_array01[$i] Then&lt;br /&gt;
						$found = True&lt;br /&gt;
						ExitLoop&lt;br /&gt;
					EndIf&lt;br /&gt;
				Next&lt;br /&gt;
&lt;br /&gt;
				If Not $found Then&lt;br /&gt;
					$Dupes[0] += 1&lt;br /&gt;
					ReDim $Dupes[$Dupes[0] + 1]&lt;br /&gt;
					$Dupes[$Dupes[0]] = $a_array01[$i]&lt;br /&gt;
				EndIf&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	Next&lt;br /&gt;
EndFunc   ;==&amp;gt;_FindDupe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _Is1DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;Local $sString = &#039;String&#039;&lt;br /&gt;
Local $a1DArray[2] = [1, &#039;Row_1&#039;]&lt;br /&gt;
Local $a2DArray[2][2] = [[1],[&#039;Row_1: Col_1&#039;, &#039;Row_1: Col_2&#039;]]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $sString a 1D Array?: &#039; &amp;amp; _Is1DArray($sString) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a1DArray a 1D Array?: &#039; &amp;amp; _Is1DArray($a1DArray) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a2DArray a 1D Array?: &#039; &amp;amp; _Is1DArray($a2DArray) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a variable is a 1D Array.&lt;br /&gt;
Func _Is1DArray(ByRef Const $aArray)&lt;br /&gt;
	Return UBound($aArray) And (UBound($aArray, 0) = 1)&lt;br /&gt;
EndFunc   ;==&amp;gt;_Is1DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _Is2DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
|Desc=Check if a variable is a 2D Array.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;Local $sString = &#039;String&#039;&lt;br /&gt;
Local $a1DArray[2] = [1, &#039;Row_1&#039;]&lt;br /&gt;
Local $a2DArray[2][2] = [[1],[&#039;Row_1: Col_1&#039;, &#039;Row_1: Col_2&#039;]]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $sString a 1D Array?: &#039; &amp;amp; _Is2DArray($sString) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a1DArray a 1D Array?: &#039; &amp;amp; _Is2DArray($a1DArray) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a2DArray a 1D Array?: &#039; &amp;amp; _Is2DArray($a2DArray) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a variable is a 2D Array.&lt;br /&gt;
Func _Is2DArray(ByRef Const $aArray)&lt;br /&gt;
	Return UBound($aArray) And (UBound($aArray, 0) = 2)&lt;br /&gt;
EndFunc   ;==&amp;gt;_Is2DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsInBounds ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local $aArray[5] = [&#039;Item_1&#039;, &#039;Item_2&#039;, &#039;Item_3&#039;, &#039;Item_4&#039;, &#039;Item_5&#039;]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 1) &amp;amp; @CRLF) ; Returns True as the Array has 5 items.&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 5) &amp;amp; @CRLF) ; Returns False as the Array has 5 items but starts from the 0th index not 1st.&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 0) &amp;amp; @CRLF) ; Returns True.&lt;br /&gt;
&lt;br /&gt;
If _IsInBounds($aArray, 4) Then&lt;br /&gt;
	MsgBox($MB_SYSTEMMODAL, &#039;&#039;, &#039;Position 4 contains the value: &amp;quot;&#039; &amp;amp; $aArray[4] &amp;amp; &#039;&amp;quot;&#039;)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
Func _IsInBounds(ByRef Const $aArray, $iIndex)&lt;br /&gt;
	Local $iDim = UBound($aArray, 0)&lt;br /&gt;
	If $iDim &amp;lt; 0 Or $iDim &amp;gt; 2 Then ; If not a 1D or 2D Array, then return -1 and set @error to non-zero.&lt;br /&gt;
		Return SetError(1, 0, False)&lt;br /&gt;
	EndIf&lt;br /&gt;
	Return $iIndex &amp;lt; UBound($aArray, 1)&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsInBounds&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _MultiFileListToArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=4920-valuater&lt;br /&gt;
|AuthorName=Valuater&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Multiple File List to Array&lt;br /&gt;
&lt;br /&gt;
$Files_List = _MultiFileListToArray(@ScriptDir, &amp;quot;*.txt|*.ini&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
; for display only&lt;br /&gt;
$GUI = GUICreate(&amp;quot; _MultiFileListToArray - DEMO&amp;quot;)&lt;br /&gt;
$Edit1 = GUICtrlCreateEdit(&amp;quot;&amp;quot;, 50, 50, 300, 300)&lt;br /&gt;
For $x = 1 To UBound($Files_List) - 1&lt;br /&gt;
    GUICtrlSetData(-1, $Files_List[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
Next&lt;br /&gt;
GUISetState()&lt;br /&gt;
&lt;br /&gt;
While GUIGetMsg() &amp;lt;&amp;gt; -3&lt;br /&gt;
WEnd&lt;br /&gt;
; end display only&lt;br /&gt;
&lt;br /&gt;
Func _MultiFileListToArray($sPath, $sFilter = &amp;quot;*&amp;quot;, $iFlag = 0)&lt;br /&gt;
    Local $hSearch, $sFile, $asFileList[1], $sCount&lt;br /&gt;
    If Not FileExists($sPath) Then Return SetError(1, 1, &amp;quot;&amp;quot;)&lt;br /&gt;
    If (StringInStr($sFilter, &amp;quot;\&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;/&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;:&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;&amp;gt;&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;&amp;lt;&amp;quot;)) Or (StringStripWS($sFilter, 8) = &amp;quot;&amp;quot;) Then Return SetError(2, 2, &amp;quot;&amp;quot;)&lt;br /&gt;
    $sFilter = (StringSplit($sFilter, &amp;quot;|&amp;quot;))&lt;br /&gt;
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, &amp;quot;&amp;quot;)&lt;br /&gt;
    For $sCount = 1 To $sFilter[0]&lt;br /&gt;
        $hSearch = FileFindFirstFile($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFilter[$sCount])&lt;br /&gt;
        If $hSearch = -1 Then&lt;br /&gt;
            If $sCount = $sFilter[0] Then Return SetError(4, 4, $asFileList)&lt;br /&gt;
            ContinueLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
        While 1&lt;br /&gt;
            $sFile = FileFindNextFile($hSearch)&lt;br /&gt;
            If @error Then&lt;br /&gt;
                SetError(0)&lt;br /&gt;
                ExitLoop&lt;br /&gt;
            EndIf&lt;br /&gt;
            If $iFlag = 1 And StringInStr(FileGetAttrib($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFile), &amp;quot;D&amp;quot;) &amp;lt;&amp;gt; 0 Then ContinueLoop&lt;br /&gt;
            If $iFlag = 2 And StringInStr(FileGetAttrib($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFile), &amp;quot;D&amp;quot;) = 0 Then ContinueLoop&lt;br /&gt;
            ReDim $asFileList[UBound($asFileList) + 1]&lt;br /&gt;
            $asFileList[0] = $asFileList[0] + 1&lt;br /&gt;
            $asFileList[UBound($asFileList) - 1] = $sFile&lt;br /&gt;
        WEnd&lt;br /&gt;
        FileClose($hSearch)&lt;br /&gt;
    Next&lt;br /&gt;
    Return $asFileList&lt;br /&gt;
EndFunc   ;==&amp;gt;_MultiFileListToArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Return Min or Max Number From One or Two Arrays ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=1967-garyfrost&lt;br /&gt;
|AuthorName=GaryFrost&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Func _MinMaxa($a_nums01, $MaxFlag = 0, $a_nums02 = 0)&lt;br /&gt;
   If Not IsArray($a_nums01) Then&lt;br /&gt;
      SetError(1)&lt;br /&gt;
      Return (0)&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   If @NumParams = 3 Then&lt;br /&gt;
      If Not IsArray($a_nums02) Then&lt;br /&gt;
         SetError(3)&lt;br /&gt;
         Return (0)&lt;br /&gt;
      EndIf&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   Local $idx&lt;br /&gt;
&lt;br /&gt;
   For $idx = 0 To UBound($a_nums01) - 1&lt;br /&gt;
      If StringIsFloat($a_nums01[$idx]) Or StringIsInt($a_nums01[$idx]) Then&lt;br /&gt;
         $a_nums01[$idx] = Number($a_nums01[$idx])&lt;br /&gt;
      Else&lt;br /&gt;
         SetError(2)&lt;br /&gt;
         Return (0)&lt;br /&gt;
      EndIf&lt;br /&gt;
   Next&lt;br /&gt;
&lt;br /&gt;
   _ArraySort($a_nums01, $MaxFlag)&lt;br /&gt;
&lt;br /&gt;
   If @NumParams = 3 Then&lt;br /&gt;
      For $idx = 0 To UBound($a_nums02) - 1&lt;br /&gt;
         If StringIsFloat($a_nums02[$idx]) Or StringIsInt($a_nums02[$idx]) Then&lt;br /&gt;
            $a_nums02[$idx] = Number($a_nums02[$idx])&lt;br /&gt;
         Else&lt;br /&gt;
            SetError(4)&lt;br /&gt;
            Return (0)&lt;br /&gt;
         EndIf&lt;br /&gt;
	  Next&lt;br /&gt;
&lt;br /&gt;
      _ArraySort($a_nums02, $MaxFlag)&lt;br /&gt;
&lt;br /&gt;
	  If $MaxFlag Then&lt;br /&gt;
         If Number($a_nums01[0]) &amp;gt; Number($a_nums02[0]) Then&lt;br /&gt;
            Return $a_nums01[0]&lt;br /&gt;
         Else&lt;br /&gt;
            Return $a_nums02[0]&lt;br /&gt;
         EndIf&lt;br /&gt;
      Else&lt;br /&gt;
         If Number($a_nums01[0]) &amp;lt; Number($a_nums02[0]) Then&lt;br /&gt;
            Return $a_nums01[0]&lt;br /&gt;
         Else&lt;br /&gt;
            Return $a_nums02[0]&lt;br /&gt;
         EndIf&lt;br /&gt;
      EndIf&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   Return $a_nums01[0]&lt;br /&gt;
EndFunc ;==&amp;gt;_MinMaxa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_AutoIt_Array_)&amp;diff=13570</id>
		<title>Snippets ( AutoIt Array )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_AutoIt_Array_)&amp;diff=13570"/>
		<updated>2017-01-06T20:56:10Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: /* _DynEnumArray */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== _1Dto2DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $aArray_1D[2] = [&amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;]&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
_1Dto2DArray($aArray_1D)&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
&lt;br /&gt;
Global $aArray_1D[10] = [&amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;]&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
_1Dto2DArray($aArray_1D, 9)&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
&lt;br /&gt;
Func _1Dto2DArray(ByRef $aArray, Const $iAdditionalColumns = 1)&lt;br /&gt;
    Local Const $iSize = UBound($aArray, 1)&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn[$iSize][$iAdditionalColumns + 1]&lt;br /&gt;
&lt;br /&gt;
    For $A = 0 To $iSize - 1&lt;br /&gt;
        $aReturn[$A][0] = $aArray[$A]&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $aArray = $aReturn&lt;br /&gt;
&lt;br /&gt;
    Return $aReturn&lt;br /&gt;
EndFunc   ;==&amp;gt;_1Dto2DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayAddEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example_1()&lt;br /&gt;
Example_2()&lt;br /&gt;
&lt;br /&gt;
Func Example_1()&lt;br /&gt;
    Local $aArray_1[1] = [&amp;quot;Data_0&amp;quot;], $iBegin&lt;br /&gt;
&lt;br /&gt;
    $iBegin = TimerInit() ; Start the timer.&lt;br /&gt;
    For $i = 1 To 5000&lt;br /&gt;
        _ArrayAdd($aArray_1, &amp;quot;Data_&amp;quot; &amp;amp; $i)&lt;br /&gt;
    Next&lt;br /&gt;
    $iBegin = TimerDiff($iBegin) ; End the timer and find the difference from start to finish.&lt;br /&gt;
    ConsoleWrite(&amp;quot;_ArrayAdd from Array.au3 &amp;gt;&amp;gt; &amp;quot; &amp;amp; $iBegin &amp;amp; @CRLF)&lt;br /&gt;
    _ArrayDisplay($aArray_1)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example_1&lt;br /&gt;
&lt;br /&gt;
Func Example_2()&lt;br /&gt;
    Local $aArray_2[1] = [&amp;quot;Data_0&amp;quot;], $iBegin, $iDimension, $iCount&lt;br /&gt;
&lt;br /&gt;
    $iBegin = TimerInit() ; Start the timer.&lt;br /&gt;
    For $i = 1 To 5000&lt;br /&gt;
        _ArrayAddEx($aArray_2, &amp;quot;Data_&amp;quot; &amp;amp; $i, $iDimension, $iCount) ; $iDimension is the overall size of the array &amp;amp; $iCount is the last index number, because regarding the overall size +1 as the next item will give false results as we&#039;re increasing the size of the array not by 1 but multiplying 2.&lt;br /&gt;
    Next&lt;br /&gt;
    $iBegin = TimerDiff($iBegin) ; End the timer and find the difference from start to finish.&lt;br /&gt;
    ConsoleWrite(&amp;quot;_ArrayAddEx by guinness &amp;gt;&amp;gt; &amp;quot; &amp;amp; $iBegin &amp;amp; @CRLF)&lt;br /&gt;
    ReDim $aArray_2[$iCount] ; Remove the empty rows.&lt;br /&gt;
    _ArrayDisplay($aArray_2)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example_2&lt;br /&gt;
&lt;br /&gt;
Func _ArrayAddEx(ByRef $aArray, $sData, ByRef $iDimension, ByRef $iCount) ; Taken from Array.au3 and modified by guinness to reduce the use of ReDim.&lt;br /&gt;
    If IsArray($aArray) = 0 Then&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    If UBound($aArray, 0) &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
        Return SetError(2, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    If $iCount = 0 Then&lt;br /&gt;
        $iCount = UBound($aArray, 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    $iCount += 1&lt;br /&gt;
    If ($iCount + 1) &amp;gt;= $iDimension Then&lt;br /&gt;
        $iDimension = (UBound($aArray, 1) + 1) * 2&lt;br /&gt;
        ReDim $aArray[$iDimension]&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aArray[$iCount - 1] = $sData&lt;br /&gt;
    Return $iCount - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayAddEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayEmpty ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
|Desc=Creates Empty 1D &amp;amp; 2D Array&#039;s&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $aMain[11] = [10]&lt;br /&gt;
_ArrayEmpty($aMain)&lt;br /&gt;
_ArrayDisplay($aMain, &amp;quot;Empty 1D Array.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Global $aMainEx[11][3] = [[10]]&lt;br /&gt;
_ArrayEmpty($aMainEx)&lt;br /&gt;
_ArrayDisplay($aMainEx, &amp;quot;Empty 2D Array.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ArrayEmpty(ByRef $aArray)&lt;br /&gt;
    Switch UBound($aArray, 0) ; Dimension, 1D or 2D array are supported.&lt;br /&gt;
        Case 1&lt;br /&gt;
            Local $aEmpty1D[1]&lt;br /&gt;
            $aArray = $aEmpty1D&lt;br /&gt;
&lt;br /&gt;
        Case 2&lt;br /&gt;
            ; Edit by DatMCEyeBall - Instead of emptying the array to [1][$x] we empty it to [$x][$y]&lt;br /&gt;
            ; where $x is the 1st dimensions size and $y the 2nd.&lt;br /&gt;
            ; Previous code was: Local $aEmpty2D[1][UBound($aArray, 2)]&lt;br /&gt;
            ; This way we preserve the arrays&#039; original size.&lt;br /&gt;
            Local $aEmpty2D[UBound($aArray, 1)][UBound($aArray, 2)]&lt;br /&gt;
            $aArray = $aEmpty2D&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayEmpty&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayGet ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31965-progandy&lt;br /&gt;
|AuthorName=ProgAndy&lt;br /&gt;
|Desc=Easy access for nested arrays up to 20 nested dimensions (including multidimensional arrays)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $b[2] = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;]&lt;br /&gt;
Global $a[3][2] = [[0, -1], [$b, &amp;quot;x&amp;quot;], [1, -2]]&lt;br /&gt;
&lt;br /&gt;
Global $c[5] = [11, 22, 33, 44, 55]&lt;br /&gt;
&lt;br /&gt;
MsgBox(0, &amp;quot;&amp;quot;, _ArrayGet($a, 1, 0, 1) &amp;amp; &amp;quot; # &amp;quot; &amp;amp; @error)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _ArrayGet&lt;br /&gt;
; Description ...: Gets a value from a nested multidimensional array&lt;br /&gt;
; Syntax ........: _ArrayGet(Byref $aArray, $i1[, $i2 = 0[, $i3 = 0[, $i4 = 0[, $i5 = 0[, $i6 = 0[, $i7 = 0[, $i8 = 0[,&lt;br /&gt;
;                 $i9 = 0[, $i10 = 0[, $i11 = 0[, $i12 = 0[, $i13 = 0[, $i14 = 0[, $i15 = 0[, $i16 = 0[, $i17 = 0[,&lt;br /&gt;
;                 $i18 = 0[, $i19 = 0[, $i20 = 0]]]]]]]]]]]]]]]]]]])&lt;br /&gt;
; Parameters ....: $aArray            - [in/out] An array of unknowns.&lt;br /&gt;
;                 $i1                 - first array index.&lt;br /&gt;
;                 $i2                 - [optional] second array index.&lt;br /&gt;
;                 $i3                 - [optional] third array index.&lt;br /&gt;
;                 $i4                 - [optional] fourth array index.&lt;br /&gt;
;                 $i5                 - [optional] fifth array index.&lt;br /&gt;
;                 $i6                 - [optional] sixth array index.&lt;br /&gt;
;                 $i7                 - [optional] seventh array index.&lt;br /&gt;
;                 $i8                 - [optional] eighth array index.&lt;br /&gt;
;                 $i9                 - [optional] ninth array index.&lt;br /&gt;
;                 $i10               - [optional] 10th array index.&lt;br /&gt;
;                 $i11               - [optional] 11th array index.&lt;br /&gt;
;                 $i12               - [optional] 12th array index.&lt;br /&gt;
;                 $i13               - [optional] 13th array index.&lt;br /&gt;
;                 $i14               - [optional] 14th array index.&lt;br /&gt;
;                 $i15               - [optional] 15th array index.&lt;br /&gt;
;                 $i16               - [optional] 16th array index.&lt;br /&gt;
;                 $i17               - [optional] 17th array index.&lt;br /&gt;
;                 $i18               - [optional] 18th array index.&lt;br /&gt;
;                 $i19               - [optional] 19th array index.&lt;br /&gt;
;                 $i20               - [optional] 20th array index.&lt;br /&gt;
; Return values .: Success: Value at the specified index&lt;br /&gt;
;                 Error: Nothing, Sets @error to:&lt;br /&gt;
;                 |1 - Trying to acces non-array as array&lt;br /&gt;
;                 |2 - Not enough dimensions for the last accessed array&lt;br /&gt;
;                 |3 - Index out of bounds for a dimension&lt;br /&gt;
;                 @extended contains the dimension in error (according to parameter list)&lt;br /&gt;
; Author ........: ProgAndy&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 _ArrayGet(ByRef $aArray, $i1, $i2=0, $i3=0, $i4=0, $i5=0, $i6=0, $i7=0, $i8=0, $i9=0, $i10=0, $i11=0, $i12=0, $i13=0, $i14=0, $i15=0, $i16=0, $i17=0, $i18=0, $i19=0, $i20=0)&lt;br /&gt;
	#forceref $i1, $i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10, $i11, $i12, $i13, $i14, $i15, $i16, $i17, $i18, $i19, $i20&lt;br /&gt;
   ; ProgAndy&lt;br /&gt;
    Local $NULL&lt;br /&gt;
    If Not IsArray($aArray) Then Return SetError(1, 1, $NULL)&lt;br /&gt;
    Local $iDims = UBound($aArray, 0)&lt;br /&gt;
    If @NumParams &amp;lt;= $iDims Then Return SetError(2, @NumParams, $NULL)&lt;br /&gt;
    Local $sAccess = &amp;quot;$aArray&amp;quot;&lt;br /&gt;
    For $i = 1 To $iDims&lt;br /&gt;
        Local $iIndex = Int(Eval(&amp;quot;i&amp;quot; &amp;amp; $i))&lt;br /&gt;
        If $iIndex &amp;gt;= UBound($aArray, $i) Then Return SetError(3, $i, $NULL)&lt;br /&gt;
        $sAccess &amp;amp;= &#039;[&#039; &amp;amp; $iIndex &amp;amp; &#039;]&#039;&lt;br /&gt;
    Next&lt;br /&gt;
    If @NumParams-1 &amp;gt; $iDims Then ; Still indices left&lt;br /&gt;
        For $i = $iDims+1 To @NumParams-1&lt;br /&gt;
            $sAccess &amp;amp;= &amp;quot;, $i&amp;quot; &amp;amp; $i&lt;br /&gt;
        Next&lt;br /&gt;
        Local $vResult = Execute(&amp;quot;_ArrayGet(&amp;quot; &amp;amp; $sAccess &amp;amp; &amp;quot;)&amp;quot;)&lt;br /&gt;
        If @error Then SetError(@error, @extended+$iDims)&lt;br /&gt;
        Return $vResult&lt;br /&gt;
    Else ;&lt;br /&gt;
        Return Execute($sAccess)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArraySet ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31965-progandy&lt;br /&gt;
|AuthorName=ProgAndy&lt;br /&gt;
|Desc=Easy access for nested arrays up to 20 nested dimensions (including multidimensional arrays)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $b[2] = [&#039;a&#039;, &#039;b&#039;&lt;br /&gt;
Global $a[3][2] = [[0, -1], [$b, &amp;quot;x&amp;quot;], [1, -2]]&lt;br /&gt;
&lt;br /&gt;
Global $c[5] = [11, 22, 33, 44, 55]&lt;br /&gt;
&lt;br /&gt;
_ArraySet($a, $c, 1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _ArraySet&lt;br /&gt;
; Description ...: Sets a value from a nested multidimensional array&lt;br /&gt;
; Syntax ........: _ArraySet(Byref $aArray, $vValue, $i1[, $i2 = 0[, $i3 = 0[, $i4 = 0[, $i5 = 0[, $i6 = 0[, $i7 = 0[, $i8 = 0[,&lt;br /&gt;
;                 $i9 = 0[, $i10 = 0[, $i11 = 0[, $i12 = 0[, $i13 = 0[, $i14 = 0[, $i15 = 0[, $i16 = 0[, $i17 = 0[,&lt;br /&gt;
;                 $i18 = 0[, $i19 = 0[, $i20 = 0]]]]]]]]]]]]]]]]]]])&lt;br /&gt;
; Parameters ....: $aArray            - [in/out] An array of unknowns.&lt;br /&gt;
;                 $vValue             - value to set at specified index.&lt;br /&gt;
;                 $i1                 - first array index.&lt;br /&gt;
;                 $i2                 - [optional] second array index.&lt;br /&gt;
;                 $i3                 - [optional] third array index.&lt;br /&gt;
;                 $i4                 - [optional] fourth array index.&lt;br /&gt;
;                 $i5                 - [optional] fifth array index.&lt;br /&gt;
;                 $i6                 - [optional] sixth array index.&lt;br /&gt;
;                 $i7                 - [optional] seventh array index.&lt;br /&gt;
;                 $i8                 - [optional] eighth array index.&lt;br /&gt;
;                 $i9                 - [optional] ninth array index.&lt;br /&gt;
;                 $i10               - [optional] 10th array index.&lt;br /&gt;
;                 $i11               - [optional] 11th array index.&lt;br /&gt;
;                 $i12               - [optional] 12th array index.&lt;br /&gt;
;                 $i13               - [optional] 13th array index.&lt;br /&gt;
;                 $i14               - [optional] 14th array index.&lt;br /&gt;
;                 $i15               - [optional] 15th array index.&lt;br /&gt;
;                 $i16               - [optional] 16th array index.&lt;br /&gt;
;                 $i17               - [optional] 17th array index.&lt;br /&gt;
;                 $i18               - [optional] 18th array index.&lt;br /&gt;
;                 $i19               - [optional] 19th array index.&lt;br /&gt;
;                 $i20               - [optional] 20th array index.&lt;br /&gt;
; Return values .: Success: True&lt;br /&gt;
;                 Error: False, Sets @error to:&lt;br /&gt;
;                 |1 - Trying to acces non-array as array&lt;br /&gt;
;                 |2 - Not enough dimensions for the last accessed array&lt;br /&gt;
;                 |3 - Index out of bounds for a dimension&lt;br /&gt;
;                 |all: - @extended contains the dimension in error (according to parameter list)&lt;br /&gt;
; Author ........: ProgAndy&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 _ArraySet(ByRef $aArray, Const $vValue, $i1, $i2=0, $i3=0, $i4=0, $i5=0, $i6=0, $i7=0, $i8=0, $i9=0, $i10=0, $i11=0, $i12=0, $i13=0, $i14=0, $i15=0, $i16=0, $i17=0, $i18=0, $i19=0, $i20=0)&lt;br /&gt;
    ; ProgAndy&lt;br /&gt;
    Local Const $NULL = False&lt;br /&gt;
&lt;br /&gt;
    If Not IsArray($aArray) Then Return SetError(1, 1, $NULL)&lt;br /&gt;
&lt;br /&gt;
    Local $iDims = UBound($aArray, 0)&lt;br /&gt;
&lt;br /&gt;
    If @NumParams-2 &amp;lt; $iDims Then Return SetError(2, @NumParams-1, $NULL)&lt;br /&gt;
&lt;br /&gt;
    Local $sAccess = &amp;quot;$aArray&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To $iDims&lt;br /&gt;
        Local $iIndex = Int(Eval(&amp;quot;i&amp;quot; &amp;amp; $i))&lt;br /&gt;
        If $iIndex &amp;gt;= UBound($aArray, $i) Then Return SetError(3, $i, $NULL)&lt;br /&gt;
        $sAccess &amp;amp;= &#039;[&#039; &amp;amp; $iIndex &amp;amp; &#039;]&#039;&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If @NumParams-2 &amp;gt; $iDims Then&lt;br /&gt;
        $sAccess &amp;amp;= &amp;quot;, $vValue&amp;quot;&lt;br /&gt;
        For $i = $iDims+1 To @NumParams-2&lt;br /&gt;
            $sAccess &amp;amp;= &amp;quot;, $i&amp;quot; &amp;amp; $i&lt;br /&gt;
        Next&lt;br /&gt;
        Local $fSuccess = Execute(&amp;quot;_ArraySet(&amp;quot; &amp;amp; $sAccess &amp;amp; &amp;quot;)&amp;quot;)&lt;br /&gt;
        If @error Then SetError(@error, @extended+$iDims)&lt;br /&gt;
        Return $fSuccess&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Switch $iDims&lt;br /&gt;
        Case 1&lt;br /&gt;
            $aArray[$i1] = $vValue&lt;br /&gt;
        Case 2&lt;br /&gt;
            $aArray[$i1][$i2] = $vValue&lt;br /&gt;
        Case 3&lt;br /&gt;
            $aArray[$i1][$i2][$i3] = $vValue&lt;br /&gt;
        Case 4&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4] = $vValue&lt;br /&gt;
        Case 5&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5] = $vValue&lt;br /&gt;
        Case 6&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6] = $vValue&lt;br /&gt;
        Case 7&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7] = $vValue&lt;br /&gt;
        Case 8&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8] = $vValue&lt;br /&gt;
        Case 9&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9] = $vValue&lt;br /&gt;
        Case 10&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10] = $vValue&lt;br /&gt;
        Case 11&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11] = $vValue&lt;br /&gt;
        Case 12&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12] = $vValue&lt;br /&gt;
        Case 13&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13] = $vValue&lt;br /&gt;
        Case 14&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14] = $vValue&lt;br /&gt;
        Case 15&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15] = $vValue&lt;br /&gt;
        Case 16&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16] = $vValue&lt;br /&gt;
        Case 17&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17] = $vValue&lt;br /&gt;
        Case 18&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18] = $vValue&lt;br /&gt;
        Case 19&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18][$i19] = $vValue&lt;br /&gt;
        Case 20&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18][$i19][$i20] = $vValue&lt;br /&gt;
	EndSwitch&lt;br /&gt;
&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayLength ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $aArray[2][50]&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 2) &amp;amp; @CRLF) ;= &amp;gt; 10 - Total items&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 1) &amp;amp; @CRLF) ;= &amp;gt; 5 - Columns&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 0) &amp;amp; @CRLF) ;= &amp;gt; 2 - Rows&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(@CRLF)&lt;br /&gt;
&lt;br /&gt;
Global $aArray[2]&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 2) &amp;amp; @CRLF) ;= &amp;gt; 2 - Total items&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 1) &amp;amp; @CRLF) ;= &amp;gt; 1 - Columns&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 0) &amp;amp; @CRLF) ;= &amp;gt; 2 - Rows&lt;br /&gt;
&lt;br /&gt;
Func _ArrayLength($aArray, $iType = 1)&lt;br /&gt;
    Local $iDim = UBound($aArray, 0)&lt;br /&gt;
&lt;br /&gt;
    If $iDim &amp;lt; 0 Or $iDim &amp;gt; 2 Then ; If not a 1D or 2D Array, then return -1 and set @error to non-zero.&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Switch $iType&lt;br /&gt;
        Case 2&lt;br /&gt;
            If $iDim = 2 Then&lt;br /&gt;
                Return UBound($aArray, 2) * UBound($aArray, 1)&lt;br /&gt;
            Else&lt;br /&gt;
                Return UBound($aArray, 1)&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
        Case 1&lt;br /&gt;
            If $iDim = 2 Then&lt;br /&gt;
                Return UBound($aArray, 2)&lt;br /&gt;
            Else&lt;br /&gt;
                Return 1&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
        Case Else&lt;br /&gt;
            Return UBound($aArray, 1)&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayLength&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArraySortNum ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=4813-smoke-n&lt;br /&gt;
|AuthorName=SmOke_N&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; ArraySortNum(ByRef $nArray, $Ascending = 0, $Start = 1)&lt;br /&gt;
; Sorts arrays based on TRUE Numerical Order, including Decimals&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Example sort Array created with StringSplit.&lt;br /&gt;
Global $avArray = StringSplit(&amp;quot;6,8,10,4,2,13,12,129,106.1,106.4&amp;quot;, &amp;quot;,&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
_ArraySortNum($avArray, 1)&lt;br /&gt;
_ArrayDisplay($avArray, &amp;quot;Sorted Desc starting at 1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ArraySortNum(ByRef $nArray, $Ascending = 0, $Start = 1)&lt;br /&gt;
	For $i = $Start To UBound($nArray) - 2&lt;br /&gt;
		Local $SE = $i&lt;br /&gt;
&lt;br /&gt;
		If $Ascending = 0 Then&lt;br /&gt;
			For $x = $i To UBound($nArray) - 1&lt;br /&gt;
				If Number($nArray[$SE]) &amp;lt; Number($nArray[$x]) Then $SE = $x&lt;br /&gt;
			Next&lt;br /&gt;
		Else&lt;br /&gt;
			For $x = $i To UBound($nArray) - 1&lt;br /&gt;
				If Number($nArray[$SE]) &amp;gt; Number($nArray[$x]) Then $SE = $x&lt;br /&gt;
			Next&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
		Local $HLD = $nArray[$i]&lt;br /&gt;
&lt;br /&gt;
		$nArray[$i] = $nArray[$SE]&lt;br /&gt;
&lt;br /&gt;
		$nArray[$SE] = $HLD&lt;br /&gt;
	Next&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArraySortNum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _AssocArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31149-milesahead&lt;br /&gt;
|AuthorName=MilesAhead&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; use Scripting.Dictionary object for simple associative arrays&lt;br /&gt;
; with string keys. Key comparisons are case insensitive.&lt;br /&gt;
&lt;br /&gt;
Global $myArray&lt;br /&gt;
$myArray = _AssocArray()&lt;br /&gt;
If @error Then&lt;br /&gt;
    MsgBox(0x1010,&amp;quot;_AssocArray() Error&amp;quot;, &amp;quot;Error Creating Associative Array!&amp;quot;)&lt;br /&gt;
    Exit&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
$myArray(&amp;quot;AntiqueWhite&amp;quot;) = 0xFAEBD7&lt;br /&gt;
$myArray(&amp;quot;Black&amp;quot;) = 0x000000&lt;br /&gt;
$myArray(&amp;quot;Blue&amp;quot;) = 0x0000FF&lt;br /&gt;
$myArray(&amp;quot;Brown&amp;quot;) = 0xA52A2A&lt;br /&gt;
$myArray(&amp;quot;CadetBlue&amp;quot;) = 0x5F9EA0&lt;br /&gt;
$myArray(&amp;quot;Chocolate&amp;quot;) = 0xD2691E&lt;br /&gt;
$myArray(&amp;quot;Coral&amp;quot;) = 0xFF7F50&lt;br /&gt;
&lt;br /&gt;
MsgBox(0x1040,&amp;quot;&amp;quot;,&amp;quot;Hex for Chocolate Color is: 0x&amp;quot; &amp;amp; Hex($myArray(&amp;quot;Chocolate&amp;quot;),6))&lt;br /&gt;
_AssocArrayDestroy($myArray)&lt;br /&gt;
&lt;br /&gt;
Func _AssocArray()&lt;br /&gt;
    Local $aArray = ObjCreate(&amp;quot;Scripting.Dictionary&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    $aArray.CompareMode = 1&lt;br /&gt;
&lt;br /&gt;
    Return $aArray&lt;br /&gt;
EndFunc   ;==&amp;gt;_AssocArray&lt;br /&gt;
&lt;br /&gt;
Func _AssocArrayDestroy(ByRef $aArray)&lt;br /&gt;
    If Not IsObj($aArray) Then&lt;br /&gt;
        Return False&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aArray.RemoveAll()&lt;br /&gt;
    $aArray = 0&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_AssocArrayDestroy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _DynEnumArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func _DynEnumArray($arr)&lt;br /&gt;
    Local $arrDims[1][2]=[[&amp;quot;ElementIdx&amp;quot;,&amp;quot;ElementCount&amp;quot;]]   ;Create an Array to Track Dimensions and Elements&lt;br /&gt;
    For $x = 1 to UBound($arr,0)&lt;br /&gt;
        ReDim $arrDims[$x+1][2]&lt;br /&gt;
        $arrDims[$x][0]=0&lt;br /&gt;
        $arrDims[$x][1]=UBound($arr,$x)&lt;br /&gt;
    Next&lt;br /&gt;
    Do   ;Loop Through Array Elements&lt;br /&gt;
        $var = &amp;quot;$arr&amp;quot;&lt;br /&gt;
        For $x = 1 to UBound($arrDims)-1&lt;br /&gt;
            $var &amp;amp;= &amp;quot;[&amp;quot; &amp;amp; $arrDims[$x][0] &amp;amp; &amp;quot;]&amp;quot;&lt;br /&gt;
        Next&lt;br /&gt;
        ConsoleWrite($var &amp;amp; &amp;quot; &amp;quot; &amp;amp; Execute($var) &amp;amp; @CRLF)  ;Output Subscript and Value&lt;br /&gt;
&lt;br /&gt;
        $arrDims[UBound($arrDims)-1][0] += 1   ;Increment Last Dimension Element&lt;br /&gt;
        For $y = UBound($arrDims)-2 To 1 Step -1   ;Increment Dimension Element&lt;br /&gt;
            If $arrDims[$y+1][0] = $arrDims[$y+1][1] Then&lt;br /&gt;
                $arrDims[$y+1][0]=0&lt;br /&gt;
                $arrDims[$y][0]+=1&lt;br /&gt;
            EndIf&lt;br /&gt;
        Next&lt;br /&gt;
&lt;br /&gt;
    Until $arrDims[1][0]=$arrDims[1][1]&lt;br /&gt;
    Return ConsoleWrite(@CRLF)&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
;Demos&lt;br /&gt;
Local $arr[5]=[&amp;quot;Never&amp;quot;,&amp;quot;Gonna&amp;quot;,&amp;quot;Give&amp;quot;,&amp;quot;You&amp;quot;,&amp;quot;Up&amp;quot;]&lt;br /&gt;
_DynEnumArray($arr)&lt;br /&gt;
&lt;br /&gt;
Local $arr[6][2]=[[&amp;quot;Penn&amp;quot;, &amp;quot;Teller&amp;quot;],[&amp;quot;Gilbert&amp;quot;, &amp;quot;Sullivan&amp;quot;],[&amp;quot;Sonny&amp;quot;, &amp;quot;Cher&amp;quot;],[&amp;quot;Stone&amp;quot;, &amp;quot;Parker&amp;quot;],[&amp;quot;Fischbacher&amp;quot;, &amp;quot;Horn&amp;quot;],[&amp;quot;Plant&amp;quot;, &amp;quot;Page&amp;quot;]]&lt;br /&gt;
_DynEnumArray($arr)&lt;br /&gt;
&lt;br /&gt;
Local $arr[2][3][2]=[[[&amp;quot;All&amp;quot;,&amp;quot;Your&amp;quot;],[&amp;quot;Base&amp;quot;,&amp;quot;Are&amp;quot;],[&amp;quot;Belong&amp;quot;,&amp;quot;To Us&amp;quot;]],[[&amp;quot;Is&amp;quot;,&amp;quot;This&amp;quot;],[&amp;quot;The&amp;quot;,&amp;quot;Way&amp;quot;],[&amp;quot;Back&amp;quot;,&amp;quot;Home&amp;quot;]]]&lt;br /&gt;
_DynEnumArray($arr)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FuncListToArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=52-geosoft&lt;br /&gt;
|AuthorName=GEOSoft&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$aFlist = _FuncListToArray(@ScriptFullPath)&lt;br /&gt;
If NOT @Error Then&lt;br /&gt;
   For $i = 0 To Ubound($aFlist) -1&lt;br /&gt;
      MsgBox(0, &amp;quot;TEST&amp;quot;, $aFlist[$i], 2)&lt;br /&gt;
   Next&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
Func _FuncListToArray($sStr)&lt;br /&gt;
   If FileExists($sStr) Then $sStr = FileRead($sStr)&lt;br /&gt;
   Local $sRegEx = &amp;quot;(?i)(?m:^|\n)\s*Func\s+(\w+)\s*\(&amp;quot;&lt;br /&gt;
   $aRegEx = StringRegExp($sStr, $sRegEx, 3)&lt;br /&gt;
   If IsArray($aRegEx) Then Return $aRegEx&lt;br /&gt;
   Return SetError(1)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Identify Duplicate Values In Arrays ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=1967-garyfrost&lt;br /&gt;
|AuthorName=GaryFrost&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Identify Duplicate Values In Arrays&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $a1[3] = [1, 2, 3], $a2[5] = [5, 6, 7, 8, 9], $a3[2] = [3, 5]&lt;br /&gt;
Global $a_a[4] = [3, $a1, $a2, $a3]&lt;br /&gt;
MsgBox(0, &amp;quot;Dupes?&amp;quot;, _SearchForDupes($a_a))&lt;br /&gt;
&lt;br /&gt;
Func _SearchForDupes($a_arrays, $i_ReturnType = 0)&lt;br /&gt;
	Local $Dupes[1] = [0]&lt;br /&gt;
&lt;br /&gt;
	If $a_arrays[0] &amp;lt; 2 Then Return &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	For $i = 1 To $a_a[0] - 1&lt;br /&gt;
		For $j = $i + 1 To $a_a[0]&lt;br /&gt;
			_FindDupe($a_a[$i], $a_a[$j], $Dupes)&lt;br /&gt;
		Next&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	If $Dupes[0] = 0 Then Return &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	_ArraySort($Dupes)&lt;br /&gt;
&lt;br /&gt;
	If Not $i_ReturnType Then&lt;br /&gt;
		Local $s_return = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
		For $x = 1 To $Dupes[0]&lt;br /&gt;
			$s_return &amp;amp;= $Dupes[$x] &amp;amp; &#039;,&#039;&lt;br /&gt;
		Next&lt;br /&gt;
		Return StringTrimRight($s_return, 1)&lt;br /&gt;
	Else&lt;br /&gt;
		Return $Dupes&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_SearchForDupes&lt;br /&gt;
&lt;br /&gt;
Func _FindDupe(ByRef $a_array01, ByRef $a_array02, ByRef $Dupes)&lt;br /&gt;
	Local $found = False&lt;br /&gt;
&lt;br /&gt;
	For $i = 0 To UBound($a_array01) - 1&lt;br /&gt;
		For $j = 0 To UBound($a_array02) - 1&lt;br /&gt;
			If $a_array01[$i] = $a_array02[$j] Then&lt;br /&gt;
				$found = False&lt;br /&gt;
&lt;br /&gt;
				For $x = 1 To $Dupes[0]&lt;br /&gt;
					If $Dupes[$x] = $a_array01[$i] Then&lt;br /&gt;
						$found = True&lt;br /&gt;
						ExitLoop&lt;br /&gt;
					EndIf&lt;br /&gt;
				Next&lt;br /&gt;
&lt;br /&gt;
				If Not $found Then&lt;br /&gt;
					$Dupes[0] += 1&lt;br /&gt;
					ReDim $Dupes[$Dupes[0] + 1]&lt;br /&gt;
					$Dupes[$Dupes[0]] = $a_array01[$i]&lt;br /&gt;
				EndIf&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	Next&lt;br /&gt;
EndFunc   ;==&amp;gt;_FindDupe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _Is1DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;Local $sString = &#039;String&#039;&lt;br /&gt;
Local $a1DArray[2] = [1, &#039;Row_1&#039;]&lt;br /&gt;
Local $a2DArray[2][2] = [[1],[&#039;Row_1: Col_1&#039;, &#039;Row_1: Col_2&#039;]]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $sString a 1D Array?: &#039; &amp;amp; _Is1DArray($sString) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a1DArray a 1D Array?: &#039; &amp;amp; _Is1DArray($a1DArray) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a2DArray a 1D Array?: &#039; &amp;amp; _Is1DArray($a2DArray) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a variable is a 1D Array.&lt;br /&gt;
Func _Is1DArray(ByRef Const $aArray)&lt;br /&gt;
	Return UBound($aArray) And (UBound($aArray, 0) = 1)&lt;br /&gt;
EndFunc   ;==&amp;gt;_Is1DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _Is2DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
|Desc=Check if a variable is a 2D Array.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;Local $sString = &#039;String&#039;&lt;br /&gt;
Local $a1DArray[2] = [1, &#039;Row_1&#039;]&lt;br /&gt;
Local $a2DArray[2][2] = [[1],[&#039;Row_1: Col_1&#039;, &#039;Row_1: Col_2&#039;]]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $sString a 1D Array?: &#039; &amp;amp; _Is2DArray($sString) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a1DArray a 1D Array?: &#039; &amp;amp; _Is2DArray($a1DArray) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a2DArray a 1D Array?: &#039; &amp;amp; _Is2DArray($a2DArray) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a variable is a 2D Array.&lt;br /&gt;
Func _Is2DArray(ByRef Const $aArray)&lt;br /&gt;
	Return UBound($aArray) And (UBound($aArray, 0) = 2)&lt;br /&gt;
EndFunc   ;==&amp;gt;_Is2DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsInBounds ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local $aArray[5] = [&#039;Item_1&#039;, &#039;Item_2&#039;, &#039;Item_3&#039;, &#039;Item_4&#039;, &#039;Item_5&#039;]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 1) &amp;amp; @CRLF) ; Returns True as the Array has 5 items.&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 5) &amp;amp; @CRLF) ; Returns False as the Array has 5 items but starts from the 0th index not 1st.&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 0) &amp;amp; @CRLF) ; Returns True.&lt;br /&gt;
&lt;br /&gt;
If _IsInBounds($aArray, 4) Then&lt;br /&gt;
	MsgBox($MB_SYSTEMMODAL, &#039;&#039;, &#039;Position 4 contains the value: &amp;quot;&#039; &amp;amp; $aArray[4] &amp;amp; &#039;&amp;quot;&#039;)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
Func _IsInBounds(ByRef Const $aArray, $iIndex)&lt;br /&gt;
	Local $iDim = UBound($aArray, 0)&lt;br /&gt;
	If $iDim &amp;lt; 0 Or $iDim &amp;gt; 2 Then ; If not a 1D or 2D Array, then return -1 and set @error to non-zero.&lt;br /&gt;
		Return SetError(1, 0, False)&lt;br /&gt;
	EndIf&lt;br /&gt;
	Return $iIndex &amp;lt; UBound($aArray, 1)&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsInBounds&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _MultiFileListToArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=4920-valuater&lt;br /&gt;
|AuthorName=Valuater&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Multiple File List to Array&lt;br /&gt;
&lt;br /&gt;
$Files_List = _MultiFileListToArray(@ScriptDir, &amp;quot;*.txt|*.ini&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
; for display only&lt;br /&gt;
$GUI = GUICreate(&amp;quot; _MultiFileListToArray - DEMO&amp;quot;)&lt;br /&gt;
$Edit1 = GUICtrlCreateEdit(&amp;quot;&amp;quot;, 50, 50, 300, 300)&lt;br /&gt;
For $x = 1 To UBound($Files_List) - 1&lt;br /&gt;
    GUICtrlSetData(-1, $Files_List[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
Next&lt;br /&gt;
GUISetState()&lt;br /&gt;
&lt;br /&gt;
While GUIGetMsg() &amp;lt;&amp;gt; -3&lt;br /&gt;
WEnd&lt;br /&gt;
; end display only&lt;br /&gt;
&lt;br /&gt;
Func _MultiFileListToArray($sPath, $sFilter = &amp;quot;*&amp;quot;, $iFlag = 0)&lt;br /&gt;
    Local $hSearch, $sFile, $asFileList[1], $sCount&lt;br /&gt;
    If Not FileExists($sPath) Then Return SetError(1, 1, &amp;quot;&amp;quot;)&lt;br /&gt;
    If (StringInStr($sFilter, &amp;quot;\&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;/&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;:&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;&amp;gt;&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;&amp;lt;&amp;quot;)) Or (StringStripWS($sFilter, 8) = &amp;quot;&amp;quot;) Then Return SetError(2, 2, &amp;quot;&amp;quot;)&lt;br /&gt;
    $sFilter = (StringSplit($sFilter, &amp;quot;|&amp;quot;))&lt;br /&gt;
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, &amp;quot;&amp;quot;)&lt;br /&gt;
    For $sCount = 1 To $sFilter[0]&lt;br /&gt;
        $hSearch = FileFindFirstFile($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFilter[$sCount])&lt;br /&gt;
        If $hSearch = -1 Then&lt;br /&gt;
            If $sCount = $sFilter[0] Then Return SetError(4, 4, $asFileList)&lt;br /&gt;
            ContinueLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
        While 1&lt;br /&gt;
            $sFile = FileFindNextFile($hSearch)&lt;br /&gt;
            If @error Then&lt;br /&gt;
                SetError(0)&lt;br /&gt;
                ExitLoop&lt;br /&gt;
            EndIf&lt;br /&gt;
            If $iFlag = 1 And StringInStr(FileGetAttrib($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFile), &amp;quot;D&amp;quot;) &amp;lt;&amp;gt; 0 Then ContinueLoop&lt;br /&gt;
            If $iFlag = 2 And StringInStr(FileGetAttrib($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFile), &amp;quot;D&amp;quot;) = 0 Then ContinueLoop&lt;br /&gt;
            ReDim $asFileList[UBound($asFileList) + 1]&lt;br /&gt;
            $asFileList[0] = $asFileList[0] + 1&lt;br /&gt;
            $asFileList[UBound($asFileList) - 1] = $sFile&lt;br /&gt;
        WEnd&lt;br /&gt;
        FileClose($hSearch)&lt;br /&gt;
    Next&lt;br /&gt;
    Return $asFileList&lt;br /&gt;
EndFunc   ;==&amp;gt;_MultiFileListToArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Return Min or Max Number From One or Two Arrays ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=1967-garyfrost&lt;br /&gt;
|AuthorName=GaryFrost&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Func _MinMaxa($a_nums01, $MaxFlag = 0, $a_nums02 = 0)&lt;br /&gt;
   If Not IsArray($a_nums01) Then&lt;br /&gt;
      SetError(1)&lt;br /&gt;
      Return (0)&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   If @NumParams = 3 Then&lt;br /&gt;
      If Not IsArray($a_nums02) Then&lt;br /&gt;
         SetError(3)&lt;br /&gt;
         Return (0)&lt;br /&gt;
      EndIf&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   Local $idx&lt;br /&gt;
&lt;br /&gt;
   For $idx = 0 To UBound($a_nums01) - 1&lt;br /&gt;
      If StringIsFloat($a_nums01[$idx]) Or StringIsInt($a_nums01[$idx]) Then&lt;br /&gt;
         $a_nums01[$idx] = Number($a_nums01[$idx])&lt;br /&gt;
      Else&lt;br /&gt;
         SetError(2)&lt;br /&gt;
         Return (0)&lt;br /&gt;
      EndIf&lt;br /&gt;
   Next&lt;br /&gt;
&lt;br /&gt;
   _ArraySort($a_nums01, $MaxFlag)&lt;br /&gt;
&lt;br /&gt;
   If @NumParams = 3 Then&lt;br /&gt;
      For $idx = 0 To UBound($a_nums02) - 1&lt;br /&gt;
         If StringIsFloat($a_nums02[$idx]) Or StringIsInt($a_nums02[$idx]) Then&lt;br /&gt;
            $a_nums02[$idx] = Number($a_nums02[$idx])&lt;br /&gt;
         Else&lt;br /&gt;
            SetError(4)&lt;br /&gt;
            Return (0)&lt;br /&gt;
         EndIf&lt;br /&gt;
	  Next&lt;br /&gt;
&lt;br /&gt;
      _ArraySort($a_nums02, $MaxFlag)&lt;br /&gt;
&lt;br /&gt;
	  If $MaxFlag Then&lt;br /&gt;
         If Number($a_nums01[0]) &amp;gt; Number($a_nums02[0]) Then&lt;br /&gt;
            Return $a_nums01[0]&lt;br /&gt;
         Else&lt;br /&gt;
            Return $a_nums02[0]&lt;br /&gt;
         EndIf&lt;br /&gt;
      Else&lt;br /&gt;
         If Number($a_nums01[0]) &amp;lt; Number($a_nums02[0]) Then&lt;br /&gt;
            Return $a_nums01[0]&lt;br /&gt;
         Else&lt;br /&gt;
            Return $a_nums02[0]&lt;br /&gt;
         EndIf&lt;br /&gt;
      EndIf&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   Return $a_nums01[0]&lt;br /&gt;
EndFunc ;==&amp;gt;_MinMaxa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_AutoIt_Array_)&amp;diff=13569</id>
		<title>Snippets ( AutoIt Array )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_AutoIt_Array_)&amp;diff=13569"/>
		<updated>2017-01-06T20:53:48Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== _1Dto2DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $aArray_1D[2] = [&amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;]&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
_1Dto2DArray($aArray_1D)&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
&lt;br /&gt;
Global $aArray_1D[10] = [&amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;, &amp;quot;Data&amp;quot;]&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
_1Dto2DArray($aArray_1D, 9)&lt;br /&gt;
_ArrayDisplay($aArray_1D)&lt;br /&gt;
&lt;br /&gt;
Func _1Dto2DArray(ByRef $aArray, Const $iAdditionalColumns = 1)&lt;br /&gt;
    Local Const $iSize = UBound($aArray, 1)&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn[$iSize][$iAdditionalColumns + 1]&lt;br /&gt;
&lt;br /&gt;
    For $A = 0 To $iSize - 1&lt;br /&gt;
        $aReturn[$A][0] = $aArray[$A]&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    $aArray = $aReturn&lt;br /&gt;
&lt;br /&gt;
    Return $aReturn&lt;br /&gt;
EndFunc   ;==&amp;gt;_1Dto2DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayAddEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example_1()&lt;br /&gt;
Example_2()&lt;br /&gt;
&lt;br /&gt;
Func Example_1()&lt;br /&gt;
    Local $aArray_1[1] = [&amp;quot;Data_0&amp;quot;], $iBegin&lt;br /&gt;
&lt;br /&gt;
    $iBegin = TimerInit() ; Start the timer.&lt;br /&gt;
    For $i = 1 To 5000&lt;br /&gt;
        _ArrayAdd($aArray_1, &amp;quot;Data_&amp;quot; &amp;amp; $i)&lt;br /&gt;
    Next&lt;br /&gt;
    $iBegin = TimerDiff($iBegin) ; End the timer and find the difference from start to finish.&lt;br /&gt;
    ConsoleWrite(&amp;quot;_ArrayAdd from Array.au3 &amp;gt;&amp;gt; &amp;quot; &amp;amp; $iBegin &amp;amp; @CRLF)&lt;br /&gt;
    _ArrayDisplay($aArray_1)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example_1&lt;br /&gt;
&lt;br /&gt;
Func Example_2()&lt;br /&gt;
    Local $aArray_2[1] = [&amp;quot;Data_0&amp;quot;], $iBegin, $iDimension, $iCount&lt;br /&gt;
&lt;br /&gt;
    $iBegin = TimerInit() ; Start the timer.&lt;br /&gt;
    For $i = 1 To 5000&lt;br /&gt;
        _ArrayAddEx($aArray_2, &amp;quot;Data_&amp;quot; &amp;amp; $i, $iDimension, $iCount) ; $iDimension is the overall size of the array &amp;amp; $iCount is the last index number, because regarding the overall size +1 as the next item will give false results as we&#039;re increasing the size of the array not by 1 but multiplying 2.&lt;br /&gt;
    Next&lt;br /&gt;
    $iBegin = TimerDiff($iBegin) ; End the timer and find the difference from start to finish.&lt;br /&gt;
    ConsoleWrite(&amp;quot;_ArrayAddEx by guinness &amp;gt;&amp;gt; &amp;quot; &amp;amp; $iBegin &amp;amp; @CRLF)&lt;br /&gt;
    ReDim $aArray_2[$iCount] ; Remove the empty rows.&lt;br /&gt;
    _ArrayDisplay($aArray_2)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example_2&lt;br /&gt;
&lt;br /&gt;
Func _ArrayAddEx(ByRef $aArray, $sData, ByRef $iDimension, ByRef $iCount) ; Taken from Array.au3 and modified by guinness to reduce the use of ReDim.&lt;br /&gt;
    If IsArray($aArray) = 0 Then&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    If UBound($aArray, 0) &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
        Return SetError(2, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    If $iCount = 0 Then&lt;br /&gt;
        $iCount = UBound($aArray, 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    $iCount += 1&lt;br /&gt;
    If ($iCount + 1) &amp;gt;= $iDimension Then&lt;br /&gt;
        $iDimension = (UBound($aArray, 1) + 1) * 2&lt;br /&gt;
        ReDim $aArray[$iDimension]&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aArray[$iCount - 1] = $sData&lt;br /&gt;
    Return $iCount - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayAddEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayEmpty ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
|Desc=Creates Empty 1D &amp;amp; 2D Array&#039;s&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $aMain[11] = [10]&lt;br /&gt;
_ArrayEmpty($aMain)&lt;br /&gt;
_ArrayDisplay($aMain, &amp;quot;Empty 1D Array.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Global $aMainEx[11][3] = [[10]]&lt;br /&gt;
_ArrayEmpty($aMainEx)&lt;br /&gt;
_ArrayDisplay($aMainEx, &amp;quot;Empty 2D Array.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ArrayEmpty(ByRef $aArray)&lt;br /&gt;
    Switch UBound($aArray, 0) ; Dimension, 1D or 2D array are supported.&lt;br /&gt;
        Case 1&lt;br /&gt;
            Local $aEmpty1D[1]&lt;br /&gt;
            $aArray = $aEmpty1D&lt;br /&gt;
&lt;br /&gt;
        Case 2&lt;br /&gt;
            ; Edit by DatMCEyeBall - Instead of emptying the array to [1][$x] we empty it to [$x][$y]&lt;br /&gt;
            ; where $x is the 1st dimensions size and $y the 2nd.&lt;br /&gt;
            ; Previous code was: Local $aEmpty2D[1][UBound($aArray, 2)]&lt;br /&gt;
            ; This way we preserve the arrays&#039; original size.&lt;br /&gt;
            Local $aEmpty2D[UBound($aArray, 1)][UBound($aArray, 2)]&lt;br /&gt;
            $aArray = $aEmpty2D&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayEmpty&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayGet ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31965-progandy&lt;br /&gt;
|AuthorName=ProgAndy&lt;br /&gt;
|Desc=Easy access for nested arrays up to 20 nested dimensions (including multidimensional arrays)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $b[2] = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;]&lt;br /&gt;
Global $a[3][2] = [[0, -1], [$b, &amp;quot;x&amp;quot;], [1, -2]]&lt;br /&gt;
&lt;br /&gt;
Global $c[5] = [11, 22, 33, 44, 55]&lt;br /&gt;
&lt;br /&gt;
MsgBox(0, &amp;quot;&amp;quot;, _ArrayGet($a, 1, 0, 1) &amp;amp; &amp;quot; # &amp;quot; &amp;amp; @error)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _ArrayGet&lt;br /&gt;
; Description ...: Gets a value from a nested multidimensional array&lt;br /&gt;
; Syntax ........: _ArrayGet(Byref $aArray, $i1[, $i2 = 0[, $i3 = 0[, $i4 = 0[, $i5 = 0[, $i6 = 0[, $i7 = 0[, $i8 = 0[,&lt;br /&gt;
;                 $i9 = 0[, $i10 = 0[, $i11 = 0[, $i12 = 0[, $i13 = 0[, $i14 = 0[, $i15 = 0[, $i16 = 0[, $i17 = 0[,&lt;br /&gt;
;                 $i18 = 0[, $i19 = 0[, $i20 = 0]]]]]]]]]]]]]]]]]]])&lt;br /&gt;
; Parameters ....: $aArray            - [in/out] An array of unknowns.&lt;br /&gt;
;                 $i1                 - first array index.&lt;br /&gt;
;                 $i2                 - [optional] second array index.&lt;br /&gt;
;                 $i3                 - [optional] third array index.&lt;br /&gt;
;                 $i4                 - [optional] fourth array index.&lt;br /&gt;
;                 $i5                 - [optional] fifth array index.&lt;br /&gt;
;                 $i6                 - [optional] sixth array index.&lt;br /&gt;
;                 $i7                 - [optional] seventh array index.&lt;br /&gt;
;                 $i8                 - [optional] eighth array index.&lt;br /&gt;
;                 $i9                 - [optional] ninth array index.&lt;br /&gt;
;                 $i10               - [optional] 10th array index.&lt;br /&gt;
;                 $i11               - [optional] 11th array index.&lt;br /&gt;
;                 $i12               - [optional] 12th array index.&lt;br /&gt;
;                 $i13               - [optional] 13th array index.&lt;br /&gt;
;                 $i14               - [optional] 14th array index.&lt;br /&gt;
;                 $i15               - [optional] 15th array index.&lt;br /&gt;
;                 $i16               - [optional] 16th array index.&lt;br /&gt;
;                 $i17               - [optional] 17th array index.&lt;br /&gt;
;                 $i18               - [optional] 18th array index.&lt;br /&gt;
;                 $i19               - [optional] 19th array index.&lt;br /&gt;
;                 $i20               - [optional] 20th array index.&lt;br /&gt;
; Return values .: Success: Value at the specified index&lt;br /&gt;
;                 Error: Nothing, Sets @error to:&lt;br /&gt;
;                 |1 - Trying to acces non-array as array&lt;br /&gt;
;                 |2 - Not enough dimensions for the last accessed array&lt;br /&gt;
;                 |3 - Index out of bounds for a dimension&lt;br /&gt;
;                 @extended contains the dimension in error (according to parameter list)&lt;br /&gt;
; Author ........: ProgAndy&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 _ArrayGet(ByRef $aArray, $i1, $i2=0, $i3=0, $i4=0, $i5=0, $i6=0, $i7=0, $i8=0, $i9=0, $i10=0, $i11=0, $i12=0, $i13=0, $i14=0, $i15=0, $i16=0, $i17=0, $i18=0, $i19=0, $i20=0)&lt;br /&gt;
	#forceref $i1, $i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10, $i11, $i12, $i13, $i14, $i15, $i16, $i17, $i18, $i19, $i20&lt;br /&gt;
   ; ProgAndy&lt;br /&gt;
    Local $NULL&lt;br /&gt;
    If Not IsArray($aArray) Then Return SetError(1, 1, $NULL)&lt;br /&gt;
    Local $iDims = UBound($aArray, 0)&lt;br /&gt;
    If @NumParams &amp;lt;= $iDims Then Return SetError(2, @NumParams, $NULL)&lt;br /&gt;
    Local $sAccess = &amp;quot;$aArray&amp;quot;&lt;br /&gt;
    For $i = 1 To $iDims&lt;br /&gt;
        Local $iIndex = Int(Eval(&amp;quot;i&amp;quot; &amp;amp; $i))&lt;br /&gt;
        If $iIndex &amp;gt;= UBound($aArray, $i) Then Return SetError(3, $i, $NULL)&lt;br /&gt;
        $sAccess &amp;amp;= &#039;[&#039; &amp;amp; $iIndex &amp;amp; &#039;]&#039;&lt;br /&gt;
    Next&lt;br /&gt;
    If @NumParams-1 &amp;gt; $iDims Then ; Still indices left&lt;br /&gt;
        For $i = $iDims+1 To @NumParams-1&lt;br /&gt;
            $sAccess &amp;amp;= &amp;quot;, $i&amp;quot; &amp;amp; $i&lt;br /&gt;
        Next&lt;br /&gt;
        Local $vResult = Execute(&amp;quot;_ArrayGet(&amp;quot; &amp;amp; $sAccess &amp;amp; &amp;quot;)&amp;quot;)&lt;br /&gt;
        If @error Then SetError(@error, @extended+$iDims)&lt;br /&gt;
        Return $vResult&lt;br /&gt;
    Else ;&lt;br /&gt;
        Return Execute($sAccess)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArraySet ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31965-progandy&lt;br /&gt;
|AuthorName=ProgAndy&lt;br /&gt;
|Desc=Easy access for nested arrays up to 20 nested dimensions (including multidimensional arrays)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $b[2] = [&#039;a&#039;, &#039;b&#039;&lt;br /&gt;
Global $a[3][2] = [[0, -1], [$b, &amp;quot;x&amp;quot;], [1, -2]]&lt;br /&gt;
&lt;br /&gt;
Global $c[5] = [11, 22, 33, 44, 55]&lt;br /&gt;
&lt;br /&gt;
_ArraySet($a, $c, 1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _ArraySet&lt;br /&gt;
; Description ...: Sets a value from a nested multidimensional array&lt;br /&gt;
; Syntax ........: _ArraySet(Byref $aArray, $vValue, $i1[, $i2 = 0[, $i3 = 0[, $i4 = 0[, $i5 = 0[, $i6 = 0[, $i7 = 0[, $i8 = 0[,&lt;br /&gt;
;                 $i9 = 0[, $i10 = 0[, $i11 = 0[, $i12 = 0[, $i13 = 0[, $i14 = 0[, $i15 = 0[, $i16 = 0[, $i17 = 0[,&lt;br /&gt;
;                 $i18 = 0[, $i19 = 0[, $i20 = 0]]]]]]]]]]]]]]]]]]])&lt;br /&gt;
; Parameters ....: $aArray            - [in/out] An array of unknowns.&lt;br /&gt;
;                 $vValue             - value to set at specified index.&lt;br /&gt;
;                 $i1                 - first array index.&lt;br /&gt;
;                 $i2                 - [optional] second array index.&lt;br /&gt;
;                 $i3                 - [optional] third array index.&lt;br /&gt;
;                 $i4                 - [optional] fourth array index.&lt;br /&gt;
;                 $i5                 - [optional] fifth array index.&lt;br /&gt;
;                 $i6                 - [optional] sixth array index.&lt;br /&gt;
;                 $i7                 - [optional] seventh array index.&lt;br /&gt;
;                 $i8                 - [optional] eighth array index.&lt;br /&gt;
;                 $i9                 - [optional] ninth array index.&lt;br /&gt;
;                 $i10               - [optional] 10th array index.&lt;br /&gt;
;                 $i11               - [optional] 11th array index.&lt;br /&gt;
;                 $i12               - [optional] 12th array index.&lt;br /&gt;
;                 $i13               - [optional] 13th array index.&lt;br /&gt;
;                 $i14               - [optional] 14th array index.&lt;br /&gt;
;                 $i15               - [optional] 15th array index.&lt;br /&gt;
;                 $i16               - [optional] 16th array index.&lt;br /&gt;
;                 $i17               - [optional] 17th array index.&lt;br /&gt;
;                 $i18               - [optional] 18th array index.&lt;br /&gt;
;                 $i19               - [optional] 19th array index.&lt;br /&gt;
;                 $i20               - [optional] 20th array index.&lt;br /&gt;
; Return values .: Success: True&lt;br /&gt;
;                 Error: False, Sets @error to:&lt;br /&gt;
;                 |1 - Trying to acces non-array as array&lt;br /&gt;
;                 |2 - Not enough dimensions for the last accessed array&lt;br /&gt;
;                 |3 - Index out of bounds for a dimension&lt;br /&gt;
;                 |all: - @extended contains the dimension in error (according to parameter list)&lt;br /&gt;
; Author ........: ProgAndy&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 _ArraySet(ByRef $aArray, Const $vValue, $i1, $i2=0, $i3=0, $i4=0, $i5=0, $i6=0, $i7=0, $i8=0, $i9=0, $i10=0, $i11=0, $i12=0, $i13=0, $i14=0, $i15=0, $i16=0, $i17=0, $i18=0, $i19=0, $i20=0)&lt;br /&gt;
    ; ProgAndy&lt;br /&gt;
    Local Const $NULL = False&lt;br /&gt;
&lt;br /&gt;
    If Not IsArray($aArray) Then Return SetError(1, 1, $NULL)&lt;br /&gt;
&lt;br /&gt;
    Local $iDims = UBound($aArray, 0)&lt;br /&gt;
&lt;br /&gt;
    If @NumParams-2 &amp;lt; $iDims Then Return SetError(2, @NumParams-1, $NULL)&lt;br /&gt;
&lt;br /&gt;
    Local $sAccess = &amp;quot;$aArray&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To $iDims&lt;br /&gt;
        Local $iIndex = Int(Eval(&amp;quot;i&amp;quot; &amp;amp; $i))&lt;br /&gt;
        If $iIndex &amp;gt;= UBound($aArray, $i) Then Return SetError(3, $i, $NULL)&lt;br /&gt;
        $sAccess &amp;amp;= &#039;[&#039; &amp;amp; $iIndex &amp;amp; &#039;]&#039;&lt;br /&gt;
    Next&lt;br /&gt;
&lt;br /&gt;
    If @NumParams-2 &amp;gt; $iDims Then&lt;br /&gt;
        $sAccess &amp;amp;= &amp;quot;, $vValue&amp;quot;&lt;br /&gt;
        For $i = $iDims+1 To @NumParams-2&lt;br /&gt;
            $sAccess &amp;amp;= &amp;quot;, $i&amp;quot; &amp;amp; $i&lt;br /&gt;
        Next&lt;br /&gt;
        Local $fSuccess = Execute(&amp;quot;_ArraySet(&amp;quot; &amp;amp; $sAccess &amp;amp; &amp;quot;)&amp;quot;)&lt;br /&gt;
        If @error Then SetError(@error, @extended+$iDims)&lt;br /&gt;
        Return $fSuccess&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Switch $iDims&lt;br /&gt;
        Case 1&lt;br /&gt;
            $aArray[$i1] = $vValue&lt;br /&gt;
        Case 2&lt;br /&gt;
            $aArray[$i1][$i2] = $vValue&lt;br /&gt;
        Case 3&lt;br /&gt;
            $aArray[$i1][$i2][$i3] = $vValue&lt;br /&gt;
        Case 4&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4] = $vValue&lt;br /&gt;
        Case 5&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5] = $vValue&lt;br /&gt;
        Case 6&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6] = $vValue&lt;br /&gt;
        Case 7&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7] = $vValue&lt;br /&gt;
        Case 8&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8] = $vValue&lt;br /&gt;
        Case 9&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9] = $vValue&lt;br /&gt;
        Case 10&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10] = $vValue&lt;br /&gt;
        Case 11&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11] = $vValue&lt;br /&gt;
        Case 12&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12] = $vValue&lt;br /&gt;
        Case 13&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13] = $vValue&lt;br /&gt;
        Case 14&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14] = $vValue&lt;br /&gt;
        Case 15&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15] = $vValue&lt;br /&gt;
        Case 16&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16] = $vValue&lt;br /&gt;
        Case 17&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17] = $vValue&lt;br /&gt;
        Case 18&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18] = $vValue&lt;br /&gt;
        Case 19&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18][$i19] = $vValue&lt;br /&gt;
        Case 20&lt;br /&gt;
            $aArray[$i1][$i2][$i3][$i4][$i5][$i6][$i7][$i8][$i9][$i10][$i11][$i12][$i13][$i14][$i15][$i16][$i17][$i18][$i19][$i20] = $vValue&lt;br /&gt;
	EndSwitch&lt;br /&gt;
&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArrayLength ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Global $aArray[2][50]&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 2) &amp;amp; @CRLF) ;= &amp;gt; 10 - Total items&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 1) &amp;amp; @CRLF) ;= &amp;gt; 5 - Columns&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 0) &amp;amp; @CRLF) ;= &amp;gt; 2 - Rows&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(@CRLF)&lt;br /&gt;
&lt;br /&gt;
Global $aArray[2]&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 2) &amp;amp; @CRLF) ;= &amp;gt; 2 - Total items&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 1) &amp;amp; @CRLF) ;= &amp;gt; 1 - Columns&lt;br /&gt;
ConsoleWrite(_ArrayLength($aArray, 0) &amp;amp; @CRLF) ;= &amp;gt; 2 - Rows&lt;br /&gt;
&lt;br /&gt;
Func _ArrayLength($aArray, $iType = 1)&lt;br /&gt;
    Local $iDim = UBound($aArray, 0)&lt;br /&gt;
&lt;br /&gt;
    If $iDim &amp;lt; 0 Or $iDim &amp;gt; 2 Then ; If not a 1D or 2D Array, then return -1 and set @error to non-zero.&lt;br /&gt;
        Return SetError(1, 0, -1)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Switch $iType&lt;br /&gt;
        Case 2&lt;br /&gt;
            If $iDim = 2 Then&lt;br /&gt;
                Return UBound($aArray, 2) * UBound($aArray, 1)&lt;br /&gt;
            Else&lt;br /&gt;
                Return UBound($aArray, 1)&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
        Case 1&lt;br /&gt;
            If $iDim = 2 Then&lt;br /&gt;
                Return UBound($aArray, 2)&lt;br /&gt;
            Else&lt;br /&gt;
                Return 1&lt;br /&gt;
            EndIf&lt;br /&gt;
&lt;br /&gt;
        Case Else&lt;br /&gt;
            Return UBound($aArray, 1)&lt;br /&gt;
    EndSwitch&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArrayLength&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ArraySortNum ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=4813-smoke-n&lt;br /&gt;
|AuthorName=SmOke_N&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; ArraySortNum(ByRef $nArray, $Ascending = 0, $Start = 1)&lt;br /&gt;
; Sorts arrays based on TRUE Numerical Order, including Decimals&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Example sort Array created with StringSplit.&lt;br /&gt;
Global $avArray = StringSplit(&amp;quot;6,8,10,4,2,13,12,129,106.1,106.4&amp;quot;, &amp;quot;,&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
_ArraySortNum($avArray, 1)&lt;br /&gt;
_ArrayDisplay($avArray, &amp;quot;Sorted Desc starting at 1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ArraySortNum(ByRef $nArray, $Ascending = 0, $Start = 1)&lt;br /&gt;
	For $i = $Start To UBound($nArray) - 2&lt;br /&gt;
		Local $SE = $i&lt;br /&gt;
&lt;br /&gt;
		If $Ascending = 0 Then&lt;br /&gt;
			For $x = $i To UBound($nArray) - 1&lt;br /&gt;
				If Number($nArray[$SE]) &amp;lt; Number($nArray[$x]) Then $SE = $x&lt;br /&gt;
			Next&lt;br /&gt;
		Else&lt;br /&gt;
			For $x = $i To UBound($nArray) - 1&lt;br /&gt;
				If Number($nArray[$SE]) &amp;gt; Number($nArray[$x]) Then $SE = $x&lt;br /&gt;
			Next&lt;br /&gt;
		EndIf&lt;br /&gt;
&lt;br /&gt;
		Local $HLD = $nArray[$i]&lt;br /&gt;
&lt;br /&gt;
		$nArray[$i] = $nArray[$SE]&lt;br /&gt;
&lt;br /&gt;
		$nArray[$SE] = $HLD&lt;br /&gt;
	Next&lt;br /&gt;
EndFunc   ;==&amp;gt;_ArraySortNum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _AssocArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=31149-milesahead&lt;br /&gt;
|AuthorName=MilesAhead&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; use Scripting.Dictionary object for simple associative arrays&lt;br /&gt;
; with string keys. Key comparisons are case insensitive.&lt;br /&gt;
&lt;br /&gt;
Global $myArray&lt;br /&gt;
$myArray = _AssocArray()&lt;br /&gt;
If @error Then&lt;br /&gt;
    MsgBox(0x1010,&amp;quot;_AssocArray() Error&amp;quot;, &amp;quot;Error Creating Associative Array!&amp;quot;)&lt;br /&gt;
    Exit&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
$myArray(&amp;quot;AntiqueWhite&amp;quot;) = 0xFAEBD7&lt;br /&gt;
$myArray(&amp;quot;Black&amp;quot;) = 0x000000&lt;br /&gt;
$myArray(&amp;quot;Blue&amp;quot;) = 0x0000FF&lt;br /&gt;
$myArray(&amp;quot;Brown&amp;quot;) = 0xA52A2A&lt;br /&gt;
$myArray(&amp;quot;CadetBlue&amp;quot;) = 0x5F9EA0&lt;br /&gt;
$myArray(&amp;quot;Chocolate&amp;quot;) = 0xD2691E&lt;br /&gt;
$myArray(&amp;quot;Coral&amp;quot;) = 0xFF7F50&lt;br /&gt;
&lt;br /&gt;
MsgBox(0x1040,&amp;quot;&amp;quot;,&amp;quot;Hex for Chocolate Color is: 0x&amp;quot; &amp;amp; Hex($myArray(&amp;quot;Chocolate&amp;quot;),6))&lt;br /&gt;
_AssocArrayDestroy($myArray)&lt;br /&gt;
&lt;br /&gt;
Func _AssocArray()&lt;br /&gt;
    Local $aArray = ObjCreate(&amp;quot;Scripting.Dictionary&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    $aArray.CompareMode = 1&lt;br /&gt;
&lt;br /&gt;
    Return $aArray&lt;br /&gt;
EndFunc   ;==&amp;gt;_AssocArray&lt;br /&gt;
&lt;br /&gt;
Func _AssocArrayDestroy(ByRef $aArray)&lt;br /&gt;
    If Not IsObj($aArray) Then&lt;br /&gt;
        Return False&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aArray.RemoveAll()&lt;br /&gt;
    $aArray = 0&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_AssocArrayDestroy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _DynEnumArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func _DynEnumArray($arr)&lt;br /&gt;
    Local $arrDims[1][2]=[[&amp;quot;ElementIdx&amp;quot;,&amp;quot;ElementCount&amp;quot;]]   ;Create an Array to Track Dimensions and Elements&lt;br /&gt;
    For $x = 1 to UBound($arr,0)&lt;br /&gt;
        ReDim $arrDims[$x+1][2]&lt;br /&gt;
        $arrDims[$x][0]=0&lt;br /&gt;
        $arrDims[$x][1]=UBound($arr,$x)&lt;br /&gt;
    Next&lt;br /&gt;
    Do   ;Loop Through Array Elements&lt;br /&gt;
        $var = &amp;quot;$arr&amp;quot;&lt;br /&gt;
        For $x = 1 to UBound($arrDims)-1&lt;br /&gt;
            $var &amp;amp;= &amp;quot;[&amp;quot; &amp;amp; $arrDims[$x][0] &amp;amp; &amp;quot;]&amp;quot;&lt;br /&gt;
        Next&lt;br /&gt;
        ConsoleWrite($var &amp;amp; &amp;quot; &amp;quot; &amp;amp; Execute($var) &amp;amp; @CRLF)  ;Output Subscript and Value&lt;br /&gt;
&lt;br /&gt;
        $arrDims[UBound($arrDims)-1][0] += 1   ;Increment Last Dimension Element&lt;br /&gt;
        For $y = UBound($arrDims)-2 To 1 Step -1   ;Increment Dimension Element&lt;br /&gt;
            If $arrDims[$y+1][0] = $arrDims[$y+1][1] Then&lt;br /&gt;
                $arrDims[$y+1][0]=0&lt;br /&gt;
                $arrDims[$y][0]+=1&lt;br /&gt;
            EndIf&lt;br /&gt;
        Next&lt;br /&gt;
&lt;br /&gt;
    Until $arrDims[1][0]=$arrDims[1][1]&lt;br /&gt;
    Return ConsoleWrite(@CRLF)&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
;Demos&lt;br /&gt;
Local $arr[5]=[&amp;quot;Never&amp;quot;,&amp;quot;Gonna&amp;quot;,&amp;quot;Give&amp;quot;,&amp;quot;You&amp;quot;,&amp;quot;Up&amp;quot;]&lt;br /&gt;
_DynEnumArray($arr)&lt;br /&gt;
&lt;br /&gt;
Local $arr[6][2]=[[&amp;quot;Penn&amp;quot;, &amp;quot;Teller&amp;quot;],[&amp;quot;Gilbert&amp;quot;, &amp;quot;Sullivan&amp;quot;],[&amp;quot;Sonny&amp;quot;, &amp;quot;Cher&amp;quot;],[&amp;quot;Stone&amp;quot;, &amp;quot;Parker&amp;quot;],[&amp;quot;Fischbacher&amp;quot;, &amp;quot;Horn&amp;quot;],[&amp;quot;Plant&amp;quot;, &amp;quot;Page&amp;quot;]]&lt;br /&gt;
_DynEnumArray($arr)&lt;br /&gt;
&lt;br /&gt;
Local $arr[2][3][2]=[[[&amp;quot;All&amp;quot;,&amp;quot;Your&amp;quot;],[&amp;quot;Base&amp;quot;,&amp;quot;Are&amp;quot;],[&amp;quot;Belong&amp;quot;,&amp;quot;To Us&amp;quot;]],[[&amp;quot;Is&amp;quot;,&amp;quot;This&amp;quot;],[&amp;quot;The&amp;quot;,&amp;quot;Way&amp;quot;],[&amp;quot;Back&amp;quot;,&amp;quot;Home&amp;quot;]]]&lt;br /&gt;
_DynEnumArray($arr)&lt;br /&gt;
&lt;br /&gt;
;Added 64 dimension array for fun.  *Note this causes known bug in Au3Check - http://www.autoitscript.com/trac/autoit/ticket/2333&lt;br /&gt;
Local $arr[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][3]=[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[1,2,3]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]&lt;br /&gt;
_DynEnumArray($arr)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FuncListToArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=52-geosoft&lt;br /&gt;
|AuthorName=GEOSoft&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$aFlist = _FuncListToArray(@ScriptFullPath)&lt;br /&gt;
If NOT @Error Then&lt;br /&gt;
   For $i = 0 To Ubound($aFlist) -1&lt;br /&gt;
      MsgBox(0, &amp;quot;TEST&amp;quot;, $aFlist[$i], 2)&lt;br /&gt;
   Next&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
Func _FuncListToArray($sStr)&lt;br /&gt;
   If FileExists($sStr) Then $sStr = FileRead($sStr)&lt;br /&gt;
   Local $sRegEx = &amp;quot;(?i)(?m:^|\n)\s*Func\s+(\w+)\s*\(&amp;quot;&lt;br /&gt;
   $aRegEx = StringRegExp($sStr, $sRegEx, 3)&lt;br /&gt;
   If IsArray($aRegEx) Then Return $aRegEx&lt;br /&gt;
   Return SetError(1)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Identify Duplicate Values In Arrays ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=1967-garyfrost&lt;br /&gt;
|AuthorName=GaryFrost&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Identify Duplicate Values In Arrays&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $a1[3] = [1, 2, 3], $a2[5] = [5, 6, 7, 8, 9], $a3[2] = [3, 5]&lt;br /&gt;
Global $a_a[4] = [3, $a1, $a2, $a3]&lt;br /&gt;
MsgBox(0, &amp;quot;Dupes?&amp;quot;, _SearchForDupes($a_a))&lt;br /&gt;
&lt;br /&gt;
Func _SearchForDupes($a_arrays, $i_ReturnType = 0)&lt;br /&gt;
	Local $Dupes[1] = [0]&lt;br /&gt;
&lt;br /&gt;
	If $a_arrays[0] &amp;lt; 2 Then Return &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	For $i = 1 To $a_a[0] - 1&lt;br /&gt;
		For $j = $i + 1 To $a_a[0]&lt;br /&gt;
			_FindDupe($a_a[$i], $a_a[$j], $Dupes)&lt;br /&gt;
		Next&lt;br /&gt;
	Next&lt;br /&gt;
&lt;br /&gt;
	If $Dupes[0] = 0 Then Return &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	_ArraySort($Dupes)&lt;br /&gt;
&lt;br /&gt;
	If Not $i_ReturnType Then&lt;br /&gt;
		Local $s_return = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
		For $x = 1 To $Dupes[0]&lt;br /&gt;
			$s_return &amp;amp;= $Dupes[$x] &amp;amp; &#039;,&#039;&lt;br /&gt;
		Next&lt;br /&gt;
		Return StringTrimRight($s_return, 1)&lt;br /&gt;
	Else&lt;br /&gt;
		Return $Dupes&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_SearchForDupes&lt;br /&gt;
&lt;br /&gt;
Func _FindDupe(ByRef $a_array01, ByRef $a_array02, ByRef $Dupes)&lt;br /&gt;
	Local $found = False&lt;br /&gt;
&lt;br /&gt;
	For $i = 0 To UBound($a_array01) - 1&lt;br /&gt;
		For $j = 0 To UBound($a_array02) - 1&lt;br /&gt;
			If $a_array01[$i] = $a_array02[$j] Then&lt;br /&gt;
				$found = False&lt;br /&gt;
&lt;br /&gt;
				For $x = 1 To $Dupes[0]&lt;br /&gt;
					If $Dupes[$x] = $a_array01[$i] Then&lt;br /&gt;
						$found = True&lt;br /&gt;
						ExitLoop&lt;br /&gt;
					EndIf&lt;br /&gt;
				Next&lt;br /&gt;
&lt;br /&gt;
				If Not $found Then&lt;br /&gt;
					$Dupes[0] += 1&lt;br /&gt;
					ReDim $Dupes[$Dupes[0] + 1]&lt;br /&gt;
					$Dupes[$Dupes[0]] = $a_array01[$i]&lt;br /&gt;
				EndIf&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	Next&lt;br /&gt;
EndFunc   ;==&amp;gt;_FindDupe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _Is1DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;Local $sString = &#039;String&#039;&lt;br /&gt;
Local $a1DArray[2] = [1, &#039;Row_1&#039;]&lt;br /&gt;
Local $a2DArray[2][2] = [[1],[&#039;Row_1: Col_1&#039;, &#039;Row_1: Col_2&#039;]]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $sString a 1D Array?: &#039; &amp;amp; _Is1DArray($sString) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a1DArray a 1D Array?: &#039; &amp;amp; _Is1DArray($a1DArray) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a2DArray a 1D Array?: &#039; &amp;amp; _Is1DArray($a2DArray) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a variable is a 1D Array.&lt;br /&gt;
Func _Is1DArray(ByRef Const $aArray)&lt;br /&gt;
	Return UBound($aArray) And (UBound($aArray, 0) = 1)&lt;br /&gt;
EndFunc   ;==&amp;gt;_Is1DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _Is2DArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
|Desc=Check if a variable is a 2D Array.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;Local $sString = &#039;String&#039;&lt;br /&gt;
Local $a1DArray[2] = [1, &#039;Row_1&#039;]&lt;br /&gt;
Local $a2DArray[2][2] = [[1],[&#039;Row_1: Col_1&#039;, &#039;Row_1: Col_2&#039;]]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $sString a 1D Array?: &#039; &amp;amp; _Is2DArray($sString) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a1DArray a 1D Array?: &#039; &amp;amp; _Is2DArray($a1DArray) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(&#039;Is the variable $a2DArray a 1D Array?: &#039; &amp;amp; _Is2DArray($a2DArray) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a variable is a 2D Array.&lt;br /&gt;
Func _Is2DArray(ByRef Const $aArray)&lt;br /&gt;
	Return UBound($aArray) And (UBound($aArray, 0) = 2)&lt;br /&gt;
EndFunc   ;==&amp;gt;_Is2DArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsInBounds ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=35302-guinness&lt;br /&gt;
|AuthorName=guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local $aArray[5] = [&#039;Item_1&#039;, &#039;Item_2&#039;, &#039;Item_3&#039;, &#039;Item_4&#039;, &#039;Item_5&#039;]&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 1) &amp;amp; @CRLF) ; Returns True as the Array has 5 items.&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 5) &amp;amp; @CRLF) ; Returns False as the Array has 5 items but starts from the 0th index not 1st.&lt;br /&gt;
ConsoleWrite(_IsInBounds($aArray, 0) &amp;amp; @CRLF) ; Returns True.&lt;br /&gt;
&lt;br /&gt;
If _IsInBounds($aArray, 4) Then&lt;br /&gt;
	MsgBox($MB_SYSTEMMODAL, &#039;&#039;, &#039;Position 4 contains the value: &amp;quot;&#039; &amp;amp; $aArray[4] &amp;amp; &#039;&amp;quot;&#039;)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
Func _IsInBounds(ByRef Const $aArray, $iIndex)&lt;br /&gt;
	Local $iDim = UBound($aArray, 0)&lt;br /&gt;
	If $iDim &amp;lt; 0 Or $iDim &amp;gt; 2 Then ; If not a 1D or 2D Array, then return -1 and set @error to non-zero.&lt;br /&gt;
		Return SetError(1, 0, False)&lt;br /&gt;
	EndIf&lt;br /&gt;
	Return $iIndex &amp;lt; UBound($aArray, 1)&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsInBounds&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _MultiFileListToArray ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=4920-valuater&lt;br /&gt;
|AuthorName=Valuater&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Multiple File List to Array&lt;br /&gt;
&lt;br /&gt;
$Files_List = _MultiFileListToArray(@ScriptDir, &amp;quot;*.txt|*.ini&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
; for display only&lt;br /&gt;
$GUI = GUICreate(&amp;quot; _MultiFileListToArray - DEMO&amp;quot;)&lt;br /&gt;
$Edit1 = GUICtrlCreateEdit(&amp;quot;&amp;quot;, 50, 50, 300, 300)&lt;br /&gt;
For $x = 1 To UBound($Files_List) - 1&lt;br /&gt;
    GUICtrlSetData(-1, $Files_List[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
Next&lt;br /&gt;
GUISetState()&lt;br /&gt;
&lt;br /&gt;
While GUIGetMsg() &amp;lt;&amp;gt; -3&lt;br /&gt;
WEnd&lt;br /&gt;
; end display only&lt;br /&gt;
&lt;br /&gt;
Func _MultiFileListToArray($sPath, $sFilter = &amp;quot;*&amp;quot;, $iFlag = 0)&lt;br /&gt;
    Local $hSearch, $sFile, $asFileList[1], $sCount&lt;br /&gt;
    If Not FileExists($sPath) Then Return SetError(1, 1, &amp;quot;&amp;quot;)&lt;br /&gt;
    If (StringInStr($sFilter, &amp;quot;\&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;/&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;:&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;&amp;gt;&amp;quot;)) Or (StringInStr($sFilter, &amp;quot;&amp;lt;&amp;quot;)) Or (StringStripWS($sFilter, 8) = &amp;quot;&amp;quot;) Then Return SetError(2, 2, &amp;quot;&amp;quot;)&lt;br /&gt;
    $sFilter = (StringSplit($sFilter, &amp;quot;|&amp;quot;))&lt;br /&gt;
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, &amp;quot;&amp;quot;)&lt;br /&gt;
    For $sCount = 1 To $sFilter[0]&lt;br /&gt;
        $hSearch = FileFindFirstFile($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFilter[$sCount])&lt;br /&gt;
        If $hSearch = -1 Then&lt;br /&gt;
            If $sCount = $sFilter[0] Then Return SetError(4, 4, $asFileList)&lt;br /&gt;
            ContinueLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
        While 1&lt;br /&gt;
            $sFile = FileFindNextFile($hSearch)&lt;br /&gt;
            If @error Then&lt;br /&gt;
                SetError(0)&lt;br /&gt;
                ExitLoop&lt;br /&gt;
            EndIf&lt;br /&gt;
            If $iFlag = 1 And StringInStr(FileGetAttrib($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFile), &amp;quot;D&amp;quot;) &amp;lt;&amp;gt; 0 Then ContinueLoop&lt;br /&gt;
            If $iFlag = 2 And StringInStr(FileGetAttrib($sPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $sFile), &amp;quot;D&amp;quot;) = 0 Then ContinueLoop&lt;br /&gt;
            ReDim $asFileList[UBound($asFileList) + 1]&lt;br /&gt;
            $asFileList[0] = $asFileList[0] + 1&lt;br /&gt;
            $asFileList[UBound($asFileList) - 1] = $sFile&lt;br /&gt;
        WEnd&lt;br /&gt;
        FileClose($hSearch)&lt;br /&gt;
    Next&lt;br /&gt;
    Return $asFileList&lt;br /&gt;
EndFunc   ;==&amp;gt;_MultiFileListToArray&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Return Min or Max Number From One or Two Arrays ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
|AuthorURL=1967-garyfrost&lt;br /&gt;
|AuthorName=GaryFrost&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Func _MinMaxa($a_nums01, $MaxFlag = 0, $a_nums02 = 0)&lt;br /&gt;
   If Not IsArray($a_nums01) Then&lt;br /&gt;
      SetError(1)&lt;br /&gt;
      Return (0)&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   If @NumParams = 3 Then&lt;br /&gt;
      If Not IsArray($a_nums02) Then&lt;br /&gt;
         SetError(3)&lt;br /&gt;
         Return (0)&lt;br /&gt;
      EndIf&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   Local $idx&lt;br /&gt;
&lt;br /&gt;
   For $idx = 0 To UBound($a_nums01) - 1&lt;br /&gt;
      If StringIsFloat($a_nums01[$idx]) Or StringIsInt($a_nums01[$idx]) Then&lt;br /&gt;
         $a_nums01[$idx] = Number($a_nums01[$idx])&lt;br /&gt;
      Else&lt;br /&gt;
         SetError(2)&lt;br /&gt;
         Return (0)&lt;br /&gt;
      EndIf&lt;br /&gt;
   Next&lt;br /&gt;
&lt;br /&gt;
   _ArraySort($a_nums01, $MaxFlag)&lt;br /&gt;
&lt;br /&gt;
   If @NumParams = 3 Then&lt;br /&gt;
      For $idx = 0 To UBound($a_nums02) - 1&lt;br /&gt;
         If StringIsFloat($a_nums02[$idx]) Or StringIsInt($a_nums02[$idx]) Then&lt;br /&gt;
            $a_nums02[$idx] = Number($a_nums02[$idx])&lt;br /&gt;
         Else&lt;br /&gt;
            SetError(4)&lt;br /&gt;
            Return (0)&lt;br /&gt;
         EndIf&lt;br /&gt;
	  Next&lt;br /&gt;
&lt;br /&gt;
      _ArraySort($a_nums02, $MaxFlag)&lt;br /&gt;
&lt;br /&gt;
	  If $MaxFlag Then&lt;br /&gt;
         If Number($a_nums01[0]) &amp;gt; Number($a_nums02[0]) Then&lt;br /&gt;
            Return $a_nums01[0]&lt;br /&gt;
         Else&lt;br /&gt;
            Return $a_nums02[0]&lt;br /&gt;
         EndIf&lt;br /&gt;
      Else&lt;br /&gt;
         If Number($a_nums01[0]) &amp;lt; Number($a_nums02[0]) Then&lt;br /&gt;
            Return $a_nums01[0]&lt;br /&gt;
         Else&lt;br /&gt;
            Return $a_nums02[0]&lt;br /&gt;
         EndIf&lt;br /&gt;
      EndIf&lt;br /&gt;
   EndIf&lt;br /&gt;
&lt;br /&gt;
   Return $a_nums01[0]&lt;br /&gt;
EndFunc ;==&amp;gt;_MinMaxa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12948</id>
		<title>Snippets ( Windows Users )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12948"/>
		<updated>2015-04-01T17:19:50Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: /* _GetLocalAdmins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Add User Accounts ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
_NetUser(&#039;Jack&#039;, &#039;pw_abc&#039;)&lt;br /&gt;
_NetUser(&#039;Jill&#039;, &#039;pw_def&#039;)&lt;br /&gt;
&lt;br /&gt;
; Add User Accounts&lt;br /&gt;
Func _NetUser($sName, $sPassword = &#039;&#039;, $sGroupName = &#039;Administrators&#039;, $iAutoLogon = 0)&lt;br /&gt;
	; Creates user accounts. Only 1 user can have autologon, if set.&lt;br /&gt;
	If Not FileExists(EnvGet(&#039;AllUsersProfile&#039;) &amp;amp; &#039;\..\&#039; &amp;amp; $sName) Then&lt;br /&gt;
		RunWait(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; _&lt;br /&gt;
				&#039;Net User &#039; &amp;amp; $sName &amp;amp; &#039; &#039; &amp;amp; $sPassword &amp;amp; &#039; /add &amp;amp;&amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net LocalGroup &#039; &amp;amp; $sGroupName &amp;amp; &#039; &#039; &amp;amp; $sName &amp;amp; &#039; /add &amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net Accounts /MaxPwAge:UnLimited&#039;, &#039;&#039;, @SW_HIDE)&lt;br /&gt;
		If $iAutoLogon Then&lt;br /&gt;
			Local $sRegKey = &#039;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon&#039;&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultUserName&#039;, &#039;Reg_sz&#039;, $sName)&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultPassword&#039;, &#039;Reg_sz&#039;, $sPassword)&lt;br /&gt;
			RegWrite($sRegKey, &#039;AutoAdminLogon&#039;, &#039;Reg_sz&#039;, 1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_NetUser&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLogonTime ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Get the last date and time the user logged on.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_GetLogonTime() &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _GetLogonTime($sUserName = @UserName, $sComputerName = &amp;quot;.&amp;quot;) ; Idea by trancexx: http://www.autoitscript.com/forum/topic/113611-if-isadmin-not-detected-as-admin/&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetUserGetInfo&amp;quot;, &amp;quot;wstr&amp;quot;, $sComputerName, &amp;quot;wstr&amp;quot;, $sUserName, &amp;quot;dword&amp;quot;, 11, &amp;quot;ptr*&amp;quot;, 0)&lt;br /&gt;
    If @error Or $aRet[0] Then Return SetError(1, 0, False)&lt;br /&gt;
    Local $sHours = DllStructGetData(DllStructCreate(&amp;quot;ptr;ptr;ptr;ptr;dword;dword;dword;ptr;ptr;dword;dword;dword;dword;ptr;dword;ptr;dword;dword;byte;dword&amp;quot;, $aRet[4]), 18)&lt;br /&gt;
    DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetApiBufferFree&amp;quot;, &amp;quot;ptr&amp;quot;, $aRet[4])&lt;br /&gt;
    Return _DateAdd(&amp;quot;h&amp;quot;, &amp;quot;-&amp;quot; &amp;amp; $sHours, _NowCalc())&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLogonTime&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetUserFullName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&#039;Current user&#039;&#039;s full name is: &#039; &amp;amp; _GetUserFullName() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the full name of the current user. May be blank if you haven&#039;t set a full name.&lt;br /&gt;
Func _GetUserFullName()&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;), $sReturn = &#039;&#039;&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount&#039;, &#039;WQL&#039;)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.FullName&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetUserFullName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalUsers ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalUsers() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Local Machine Users&lt;br /&gt;
Func _GetLocalUsers($sHost = @ComputerName)&lt;br /&gt;
   Local $sUsers = &amp;quot;&amp;quot;&lt;br /&gt;
   Local $oColUsers = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $sHost &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
   If Not IsObj($oColUsers) Then Return 0&lt;br /&gt;
   Dim $aFilter[1] = [&amp;quot;user&amp;quot;]&lt;br /&gt;
   $oColUsers.Filter = $aFilter&lt;br /&gt;
   For $oUser In $oColUsers&lt;br /&gt;
	  $sUsers &amp;amp;= $oUser.name &amp;amp; @CR&lt;br /&gt;
   Next&lt;br /&gt;
   $sUsers = StringTrimRight($sUsers,1)&lt;br /&gt;
   $oColUsers = 0&lt;br /&gt;
   $aFilter = 0&lt;br /&gt;
   Return $sUsers&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalUsers&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalAdmins ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalAdmins() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Members of the Local Administrators Group&lt;br /&gt;
Func _GetLocalAdmins($sHost = @ComputerName)&lt;br /&gt;
   Local $sAdminUsers = &amp;quot;&amp;quot;&lt;br /&gt;
   Local $oColGroups = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $sHost &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
   If Not IsObj($oColGroups) Then Return 0&lt;br /&gt;
   Local Const $bAdminGroupSID = &amp;quot;0x01020000000000052000000020020000&amp;quot;&lt;br /&gt;
   Local $aFilter[1] = [&amp;quot;group&amp;quot;]&lt;br /&gt;
   $oColGroups.Filter = $aFilter&lt;br /&gt;
   For $oGroup In $oColGroups&lt;br /&gt;
	  If $oGroup.objectSID = $bAdminGroupSID Then&lt;br /&gt;
		 For $oUser In $oGroup.Members&lt;br /&gt;
			$sAdminUsers &amp;amp;= $oUser.Name &amp;amp; @CR&lt;br /&gt;
		 Next&lt;br /&gt;
		 $sAdminUsers = StringTrimRight($sAdminUsers,1)&lt;br /&gt;
	  EndIf&lt;br /&gt;
   Next&lt;br /&gt;
   $oColGroups = 0&lt;br /&gt;
   $aFlter = 0&lt;br /&gt;
   Return $sAdminUsers&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalAdmins&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsAdminEnabled() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsAdminEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Administrator&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsAdminEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Administrator account is enabled. Using &#039;net user&#039; and reading the Standard Stream Output.&lt;br /&gt;
Func _IsAdminEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Administrator&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsGuestEnabled() &amp;amp; @CRLF)&lt;br /&gt;
Func _IsGuestEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Guest&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsGuestEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Guest account is enabled. Idea by Chimaera.&lt;br /&gt;
Func _IsGuestEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Guest&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsPasswordExpired ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsPasswordExpired() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsPasswordExpired($sComputerName = @UserName)&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount Where Name = &amp;quot;&#039; &amp;amp; $sComputerName &amp;amp; &#039;&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.PasswordExpires&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsPasswordExpired&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SetWorkGroupName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sNewWorkgroupName = &amp;quot;HOMEOS&amp;quot;&lt;br /&gt;
_SetWorkGroupName($sNewWorkgroupName)&lt;br /&gt;
&lt;br /&gt;
Func _SetWorkGroupName($sGroupName)&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;Netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetJoinDomain&amp;quot;, &amp;quot;int&amp;quot;, 0, &amp;quot;wstr&amp;quot;, $sGroupName, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 0x00000040)&lt;br /&gt;
    Return $aRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_SetWorkGroupName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _WhoAmI ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_WhoAmI() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Displays the username and domain for the currently logged in user.&lt;br /&gt;
Func _WhoAmI()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c whoami&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return StringRegExpReplace(StringUpper($sReturn), &#039;\n|\r&#039;, &#039;&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_WhoAmI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12947</id>
		<title>Snippets ( Windows Users )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12947"/>
		<updated>2015-04-01T17:18:31Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: /* _GetLocalUsers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Add User Accounts ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
_NetUser(&#039;Jack&#039;, &#039;pw_abc&#039;)&lt;br /&gt;
_NetUser(&#039;Jill&#039;, &#039;pw_def&#039;)&lt;br /&gt;
&lt;br /&gt;
; Add User Accounts&lt;br /&gt;
Func _NetUser($sName, $sPassword = &#039;&#039;, $sGroupName = &#039;Administrators&#039;, $iAutoLogon = 0)&lt;br /&gt;
	; Creates user accounts. Only 1 user can have autologon, if set.&lt;br /&gt;
	If Not FileExists(EnvGet(&#039;AllUsersProfile&#039;) &amp;amp; &#039;\..\&#039; &amp;amp; $sName) Then&lt;br /&gt;
		RunWait(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; _&lt;br /&gt;
				&#039;Net User &#039; &amp;amp; $sName &amp;amp; &#039; &#039; &amp;amp; $sPassword &amp;amp; &#039; /add &amp;amp;&amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net LocalGroup &#039; &amp;amp; $sGroupName &amp;amp; &#039; &#039; &amp;amp; $sName &amp;amp; &#039; /add &amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net Accounts /MaxPwAge:UnLimited&#039;, &#039;&#039;, @SW_HIDE)&lt;br /&gt;
		If $iAutoLogon Then&lt;br /&gt;
			Local $sRegKey = &#039;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon&#039;&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultUserName&#039;, &#039;Reg_sz&#039;, $sName)&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultPassword&#039;, &#039;Reg_sz&#039;, $sPassword)&lt;br /&gt;
			RegWrite($sRegKey, &#039;AutoAdminLogon&#039;, &#039;Reg_sz&#039;, 1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_NetUser&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLogonTime ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Get the last date and time the user logged on.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_GetLogonTime() &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _GetLogonTime($sUserName = @UserName, $sComputerName = &amp;quot;.&amp;quot;) ; Idea by trancexx: http://www.autoitscript.com/forum/topic/113611-if-isadmin-not-detected-as-admin/&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetUserGetInfo&amp;quot;, &amp;quot;wstr&amp;quot;, $sComputerName, &amp;quot;wstr&amp;quot;, $sUserName, &amp;quot;dword&amp;quot;, 11, &amp;quot;ptr*&amp;quot;, 0)&lt;br /&gt;
    If @error Or $aRet[0] Then Return SetError(1, 0, False)&lt;br /&gt;
    Local $sHours = DllStructGetData(DllStructCreate(&amp;quot;ptr;ptr;ptr;ptr;dword;dword;dword;ptr;ptr;dword;dword;dword;dword;ptr;dword;ptr;dword;dword;byte;dword&amp;quot;, $aRet[4]), 18)&lt;br /&gt;
    DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetApiBufferFree&amp;quot;, &amp;quot;ptr&amp;quot;, $aRet[4])&lt;br /&gt;
    Return _DateAdd(&amp;quot;h&amp;quot;, &amp;quot;-&amp;quot; &amp;amp; $sHours, _NowCalc())&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLogonTime&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetUserFullName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&#039;Current user&#039;&#039;s full name is: &#039; &amp;amp; _GetUserFullName() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the full name of the current user. May be blank if you haven&#039;t set a full name.&lt;br /&gt;
Func _GetUserFullName()&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;), $sReturn = &#039;&#039;&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount&#039;, &#039;WQL&#039;)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.FullName&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetUserFullName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalUsers ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalUsers() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Local Machine Users&lt;br /&gt;
Func _GetLocalUsers($sHost = @ComputerName)&lt;br /&gt;
   Local $sUsers = &amp;quot;&amp;quot;&lt;br /&gt;
   Local $oColUsers = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $sHost &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
   If Not IsObj($oColUsers) Then Return 0&lt;br /&gt;
   Dim $aFilter[1] = [&amp;quot;user&amp;quot;]&lt;br /&gt;
   $oColUsers.Filter = $aFilter&lt;br /&gt;
   For $oUser In $oColUsers&lt;br /&gt;
	  $sUsers &amp;amp;= $oUser.name &amp;amp; @CR&lt;br /&gt;
   Next&lt;br /&gt;
   $sUsers = StringTrimRight($sUsers,1)&lt;br /&gt;
   $oColUsers = 0&lt;br /&gt;
   $aFilter = 0&lt;br /&gt;
   Return $sUsers&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalUsers&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalAdmins ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalAdmins() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Members of the Local Administrators Group&lt;br /&gt;
Func _GetLocalAdmins($sHost = @ComputerName)&lt;br /&gt;
   Local $sAdminUsers = &amp;quot;&amp;quot;&lt;br /&gt;
   Local $cGroups = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $sHost &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
   If Not IsObj($cGroups) Then Return 0&lt;br /&gt;
   Local Const $bAdminGroupSID = &amp;quot;0x01020000000000052000000020020000&amp;quot;&lt;br /&gt;
   Local $aFilter[1] = [&amp;quot;group&amp;quot;]&lt;br /&gt;
   $cGroups.Filter = $aFilter&lt;br /&gt;
   For $oGroup In $cGroups&lt;br /&gt;
	  If $oGroup.objectSID = $bAdminGroupSID Then&lt;br /&gt;
		 For $oUser In $oGroup.Members&lt;br /&gt;
			$sAdminUsers &amp;amp;= $oUser.Name &amp;amp; @CR&lt;br /&gt;
		 Next&lt;br /&gt;
		 $sAdminUsers = StringTrimRight($sAdminUsers,1)&lt;br /&gt;
	  EndIf&lt;br /&gt;
   Next&lt;br /&gt;
   $cGroups = 0&lt;br /&gt;
   $aFlter = 0&lt;br /&gt;
   Return $sAdminUsers&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalAdmins&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsAdminEnabled() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsAdminEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Administrator&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsAdminEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Administrator account is enabled. Using &#039;net user&#039; and reading the Standard Stream Output.&lt;br /&gt;
Func _IsAdminEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Administrator&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsGuestEnabled() &amp;amp; @CRLF)&lt;br /&gt;
Func _IsGuestEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Guest&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsGuestEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Guest account is enabled. Idea by Chimaera.&lt;br /&gt;
Func _IsGuestEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Guest&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsPasswordExpired ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsPasswordExpired() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsPasswordExpired($sComputerName = @UserName)&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount Where Name = &amp;quot;&#039; &amp;amp; $sComputerName &amp;amp; &#039;&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.PasswordExpires&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsPasswordExpired&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SetWorkGroupName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sNewWorkgroupName = &amp;quot;HOMEOS&amp;quot;&lt;br /&gt;
_SetWorkGroupName($sNewWorkgroupName)&lt;br /&gt;
&lt;br /&gt;
Func _SetWorkGroupName($sGroupName)&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;Netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetJoinDomain&amp;quot;, &amp;quot;int&amp;quot;, 0, &amp;quot;wstr&amp;quot;, $sGroupName, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 0x00000040)&lt;br /&gt;
    Return $aRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_SetWorkGroupName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _WhoAmI ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_WhoAmI() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Displays the username and domain for the currently logged in user.&lt;br /&gt;
Func _WhoAmI()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c whoami&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return StringRegExpReplace(StringUpper($sReturn), &#039;\n|\r&#039;, &#039;&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_WhoAmI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12946</id>
		<title>Snippets ( Windows Users )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12946"/>
		<updated>2015-04-01T17:17:10Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: /* _GetLocalAdmins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Add User Accounts ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
_NetUser(&#039;Jack&#039;, &#039;pw_abc&#039;)&lt;br /&gt;
_NetUser(&#039;Jill&#039;, &#039;pw_def&#039;)&lt;br /&gt;
&lt;br /&gt;
; Add User Accounts&lt;br /&gt;
Func _NetUser($sName, $sPassword = &#039;&#039;, $sGroupName = &#039;Administrators&#039;, $iAutoLogon = 0)&lt;br /&gt;
	; Creates user accounts. Only 1 user can have autologon, if set.&lt;br /&gt;
	If Not FileExists(EnvGet(&#039;AllUsersProfile&#039;) &amp;amp; &#039;\..\&#039; &amp;amp; $sName) Then&lt;br /&gt;
		RunWait(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; _&lt;br /&gt;
				&#039;Net User &#039; &amp;amp; $sName &amp;amp; &#039; &#039; &amp;amp; $sPassword &amp;amp; &#039; /add &amp;amp;&amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net LocalGroup &#039; &amp;amp; $sGroupName &amp;amp; &#039; &#039; &amp;amp; $sName &amp;amp; &#039; /add &amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net Accounts /MaxPwAge:UnLimited&#039;, &#039;&#039;, @SW_HIDE)&lt;br /&gt;
		If $iAutoLogon Then&lt;br /&gt;
			Local $sRegKey = &#039;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon&#039;&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultUserName&#039;, &#039;Reg_sz&#039;, $sName)&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultPassword&#039;, &#039;Reg_sz&#039;, $sPassword)&lt;br /&gt;
			RegWrite($sRegKey, &#039;AutoAdminLogon&#039;, &#039;Reg_sz&#039;, 1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_NetUser&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLogonTime ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Get the last date and time the user logged on.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_GetLogonTime() &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _GetLogonTime($sUserName = @UserName, $sComputerName = &amp;quot;.&amp;quot;) ; Idea by trancexx: http://www.autoitscript.com/forum/topic/113611-if-isadmin-not-detected-as-admin/&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetUserGetInfo&amp;quot;, &amp;quot;wstr&amp;quot;, $sComputerName, &amp;quot;wstr&amp;quot;, $sUserName, &amp;quot;dword&amp;quot;, 11, &amp;quot;ptr*&amp;quot;, 0)&lt;br /&gt;
    If @error Or $aRet[0] Then Return SetError(1, 0, False)&lt;br /&gt;
    Local $sHours = DllStructGetData(DllStructCreate(&amp;quot;ptr;ptr;ptr;ptr;dword;dword;dword;ptr;ptr;dword;dword;dword;dword;ptr;dword;ptr;dword;dword;byte;dword&amp;quot;, $aRet[4]), 18)&lt;br /&gt;
    DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetApiBufferFree&amp;quot;, &amp;quot;ptr&amp;quot;, $aRet[4])&lt;br /&gt;
    Return _DateAdd(&amp;quot;h&amp;quot;, &amp;quot;-&amp;quot; &amp;amp; $sHours, _NowCalc())&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLogonTime&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetUserFullName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&#039;Current user&#039;&#039;s full name is: &#039; &amp;amp; _GetUserFullName() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the full name of the current user. May be blank if you haven&#039;t set a full name.&lt;br /&gt;
Func _GetUserFullName()&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;), $sReturn = &#039;&#039;&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount&#039;, &#039;WQL&#039;)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.FullName&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetUserFullName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalUsers ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalUsers() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Local Machine Users&lt;br /&gt;
Func _GetLocalUsers($host = @ComputerName)&lt;br /&gt;
	Local $Users = &amp;quot;&amp;quot;&lt;br /&gt;
	Local $colUsers = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $host &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
	If Not IsObj($colUsers) Then Return 0&lt;br /&gt;
	Dim $filter[1] = [&amp;quot;user&amp;quot;]&lt;br /&gt;
	$colUsers.Filter = $filter&lt;br /&gt;
	For $objUser In $colUsers&lt;br /&gt;
		$Users &amp;amp;= $objUser.name &amp;amp; @CR&lt;br /&gt;
	Next&lt;br /&gt;
	$Users = StringTrimRight($Users,1)&lt;br /&gt;
	$colUsers = 0&lt;br /&gt;
	$filter = 0&lt;br /&gt;
	Return $Users&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalUsers&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalAdmins ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalAdmins() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Members of the Local Administrators Group&lt;br /&gt;
Func _GetLocalAdmins($sHost = @ComputerName)&lt;br /&gt;
   Local $sAdminUsers = &amp;quot;&amp;quot;&lt;br /&gt;
   Local $cGroups = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $sHost &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
   If Not IsObj($cGroups) Then Return 0&lt;br /&gt;
   Local Const $bAdminGroupSID = &amp;quot;0x01020000000000052000000020020000&amp;quot;&lt;br /&gt;
   Local $aFilter[1] = [&amp;quot;group&amp;quot;]&lt;br /&gt;
   $cGroups.Filter = $aFilter&lt;br /&gt;
   For $oGroup In $cGroups&lt;br /&gt;
	  If $oGroup.objectSID = $bAdminGroupSID Then&lt;br /&gt;
		 For $oUser In $oGroup.Members&lt;br /&gt;
			$sAdminUsers &amp;amp;= $oUser.Name &amp;amp; @CR&lt;br /&gt;
		 Next&lt;br /&gt;
		 $sAdminUsers = StringTrimRight($sAdminUsers,1)&lt;br /&gt;
	  EndIf&lt;br /&gt;
   Next&lt;br /&gt;
   $cGroups = 0&lt;br /&gt;
   $aFlter = 0&lt;br /&gt;
   Return $sAdminUsers&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalAdmins&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsAdminEnabled() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsAdminEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Administrator&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsAdminEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Administrator account is enabled. Using &#039;net user&#039; and reading the Standard Stream Output.&lt;br /&gt;
Func _IsAdminEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Administrator&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsGuestEnabled() &amp;amp; @CRLF)&lt;br /&gt;
Func _IsGuestEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Guest&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsGuestEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Guest account is enabled. Idea by Chimaera.&lt;br /&gt;
Func _IsGuestEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Guest&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsPasswordExpired ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsPasswordExpired() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsPasswordExpired($sComputerName = @UserName)&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount Where Name = &amp;quot;&#039; &amp;amp; $sComputerName &amp;amp; &#039;&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.PasswordExpires&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsPasswordExpired&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SetWorkGroupName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sNewWorkgroupName = &amp;quot;HOMEOS&amp;quot;&lt;br /&gt;
_SetWorkGroupName($sNewWorkgroupName)&lt;br /&gt;
&lt;br /&gt;
Func _SetWorkGroupName($sGroupName)&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;Netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetJoinDomain&amp;quot;, &amp;quot;int&amp;quot;, 0, &amp;quot;wstr&amp;quot;, $sGroupName, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 0x00000040)&lt;br /&gt;
    Return $aRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_SetWorkGroupName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _WhoAmI ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_WhoAmI() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Displays the username and domain for the currently logged in user.&lt;br /&gt;
Func _WhoAmI()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c whoami&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return StringRegExpReplace(StringUpper($sReturn), &#039;\n|\r&#039;, &#039;&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_WhoAmI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12473</id>
		<title>Snippets ( Windows Users )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12473"/>
		<updated>2014-06-19T15:06:20Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Add User Accounts ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
_NetUser(&#039;Jack&#039;, &#039;pw_abc&#039;)&lt;br /&gt;
_NetUser(&#039;Jill&#039;, &#039;pw_def&#039;)&lt;br /&gt;
&lt;br /&gt;
; Add User Accounts&lt;br /&gt;
Func _NetUser($sName, $sPassword = &#039;&#039;, $sGroupName = &#039;Administrators&#039;, $iAutoLogon = 0)&lt;br /&gt;
	; Creates user accounts. Only 1 user can have autologon, if set.&lt;br /&gt;
	If Not FileExists(EnvGet(&#039;AllUsersProfile&#039;) &amp;amp; &#039;\..\&#039; &amp;amp; $sName) Then&lt;br /&gt;
		RunWait(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; _&lt;br /&gt;
				&#039;Net User &#039; &amp;amp; $sName &amp;amp; &#039; &#039; &amp;amp; $sPassword &amp;amp; &#039; /add &amp;amp;&amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net LocalGroup &#039; &amp;amp; $sGroupName &amp;amp; &#039; &#039; &amp;amp; $sName &amp;amp; &#039; /add &amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net Accounts /MaxPwAge:UnLimited&#039;, &#039;&#039;, @SW_HIDE)&lt;br /&gt;
		If $iAutoLogon Then&lt;br /&gt;
			Local $sRegKey = &#039;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon&#039;&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultUserName&#039;, &#039;Reg_sz&#039;, $sName)&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultPassword&#039;, &#039;Reg_sz&#039;, $sPassword)&lt;br /&gt;
			RegWrite($sRegKey, &#039;AutoAdminLogon&#039;, &#039;Reg_sz&#039;, 1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_NetUser&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLogonTime ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Get the last date and time the user logged on.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_GetLogonTime() &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _GetLogonTime($sUserName = @UserName, $sComputerName = &amp;quot;.&amp;quot;) ; Idea by trancexx: http://www.autoitscript.com/forum/topic/113611-if-isadmin-not-detected-as-admin/&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetUserGetInfo&amp;quot;, &amp;quot;wstr&amp;quot;, $sComputerName, &amp;quot;wstr&amp;quot;, $sUserName, &amp;quot;dword&amp;quot;, 11, &amp;quot;ptr*&amp;quot;, 0)&lt;br /&gt;
    If @error Or $aRet[0] Then Return SetError(1, 0, False)&lt;br /&gt;
    Local $sHours = DllStructGetData(DllStructCreate(&amp;quot;ptr;ptr;ptr;ptr;dword;dword;dword;ptr;ptr;dword;dword;dword;dword;ptr;dword;ptr;dword;dword;byte;dword&amp;quot;, $aRet[4]), 18)&lt;br /&gt;
    DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetApiBufferFree&amp;quot;, &amp;quot;ptr&amp;quot;, $aRet[4])&lt;br /&gt;
    Return _DateAdd(&amp;quot;h&amp;quot;, &amp;quot;-&amp;quot; &amp;amp; $sHours, _NowCalc())&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLogonTime&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetUserFullName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&#039;Current user&#039;&#039;s full name is: &#039; &amp;amp; _GetUserFullName() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the full name of the current user. May be blank if you haven&#039;t set a full name.&lt;br /&gt;
Func _GetUserFullName()&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;), $sReturn = &#039;&#039;&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount&#039;, &#039;WQL&#039;)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.FullName&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetUserFullName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalUsers ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalUsers() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Local Machine Users&lt;br /&gt;
Func _GetLocalUsers($host = @ComputerName)&lt;br /&gt;
	Local $Users = &amp;quot;&amp;quot;&lt;br /&gt;
	Local $colUsers = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $host &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
	If Not IsObj($colUsers) Then Return 0&lt;br /&gt;
	Dim $filter[1] = [&amp;quot;user&amp;quot;]&lt;br /&gt;
	$colUsers.Filter = $filter&lt;br /&gt;
	For $objUser In $colUsers&lt;br /&gt;
		$Users &amp;amp;= $objUser.name &amp;amp; @CR&lt;br /&gt;
	Next&lt;br /&gt;
	$Users = StringTrimRight($Users,1)&lt;br /&gt;
	$colUsers = 0&lt;br /&gt;
	$filter = 0&lt;br /&gt;
	Return $Users&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalUsers&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalAdmins ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalAdmins() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Members of the Local Administrators Group&lt;br /&gt;
Func _GetLocalAdmins($host = @ComputerName)&lt;br /&gt;
	Local $AdminUsers = &amp;quot;&amp;quot;&lt;br /&gt;
	Local $colGroups = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $host &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
	If Not IsObj($colGroups) Then Return 0&lt;br /&gt;
	Dim $filter[1] = [&amp;quot;group&amp;quot;]&lt;br /&gt;
	$colGroups.Filter = $filter&lt;br /&gt;
	For $objGroup In $colGroups&lt;br /&gt;
		If $objGroup.name = &amp;quot;Administrators&amp;quot; Then&lt;br /&gt;
			For $objUser In $objGroup.Members&lt;br /&gt;
				$AdminUsers &amp;amp;= $objUser.name &amp;amp; @CR&lt;br /&gt;
			Next&lt;br /&gt;
			$AdminUsers = StringTrimRight($AdminUsers,1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
	$colGroups = 0&lt;br /&gt;
	$filter = 0&lt;br /&gt;
	Return $AdminUsers&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalAdmins&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsAdminEnabled() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsAdminEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Administrator&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsAdminEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Administrator account is enabled. Using &#039;net user&#039; and reading the Standard Stream Output.&lt;br /&gt;
Func _IsAdminEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Administrator&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsGuestEnabled() &amp;amp; @CRLF)&lt;br /&gt;
Func _IsGuestEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Guest&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsGuestEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Guest account is enabled. Idea by Chimaera.&lt;br /&gt;
Func _IsGuestEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Guest&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsPasswordExpired ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsPasswordExpired() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsPasswordExpired($sComputerName = @UserName)&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount Where Name = &amp;quot;&#039; &amp;amp; $sComputerName &amp;amp; &#039;&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.PasswordExpires&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsPasswordExpired&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SetWorkGroupName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sNewWorkgroupName = &amp;quot;HOMEOS&amp;quot;&lt;br /&gt;
_SetWorkGroupName($sNewWorkgroupName)&lt;br /&gt;
&lt;br /&gt;
Func _SetWorkGroupName($sGroupName)&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;Netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetJoinDomain&amp;quot;, &amp;quot;int&amp;quot;, 0, &amp;quot;wstr&amp;quot;, $sGroupName, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 0x00000040)&lt;br /&gt;
    Return $aRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_SetWorkGroupName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _WhoAmI ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_WhoAmI() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Displays the username and domain for the currently logged in user.&lt;br /&gt;
Func _WhoAmI()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c whoami&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return StringRegExpReplace(StringUpper($sReturn), &#039;\n|\r&#039;, &#039;&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_WhoAmI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12472</id>
		<title>Snippets ( Windows Users )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12472"/>
		<updated>2014-06-19T15:04:25Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: /* _GetLocalAdmins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Add User Accounts ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
_NetUser(&#039;Jack&#039;, &#039;pw_abc&#039;)&lt;br /&gt;
_NetUser(&#039;Jill&#039;, &#039;pw_def&#039;)&lt;br /&gt;
&lt;br /&gt;
; Add User Accounts&lt;br /&gt;
Func _NetUser($sName, $sPassword = &#039;&#039;, $sGroupName = &#039;Administrators&#039;, $iAutoLogon = 0)&lt;br /&gt;
	; Creates user accounts. Only 1 user can have autologon, if set.&lt;br /&gt;
	If Not FileExists(EnvGet(&#039;AllUsersProfile&#039;) &amp;amp; &#039;\..\&#039; &amp;amp; $sName) Then&lt;br /&gt;
		RunWait(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; _&lt;br /&gt;
				&#039;Net User &#039; &amp;amp; $sName &amp;amp; &#039; &#039; &amp;amp; $sPassword &amp;amp; &#039; /add &amp;amp;&amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net LocalGroup &#039; &amp;amp; $sGroupName &amp;amp; &#039; &#039; &amp;amp; $sName &amp;amp; &#039; /add &amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net Accounts /MaxPwAge:UnLimited&#039;, &#039;&#039;, @SW_HIDE)&lt;br /&gt;
		If $iAutoLogon Then&lt;br /&gt;
			Local $sRegKey = &#039;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon&#039;&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultUserName&#039;, &#039;Reg_sz&#039;, $sName)&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultPassword&#039;, &#039;Reg_sz&#039;, $sPassword)&lt;br /&gt;
			RegWrite($sRegKey, &#039;AutoAdminLogon&#039;, &#039;Reg_sz&#039;, 1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_NetUser&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLogonTime ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Get the last date and time the user logged on.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_GetLogonTime() &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _GetLogonTime($sUserName = @UserName, $sComputerName = &amp;quot;.&amp;quot;) ; Idea by trancexx: http://www.autoitscript.com/forum/topic/113611-if-isadmin-not-detected-as-admin/&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetUserGetInfo&amp;quot;, &amp;quot;wstr&amp;quot;, $sComputerName, &amp;quot;wstr&amp;quot;, $sUserName, &amp;quot;dword&amp;quot;, 11, &amp;quot;ptr*&amp;quot;, 0)&lt;br /&gt;
    If @error Or $aRet[0] Then Return SetError(1, 0, False)&lt;br /&gt;
    Local $sHours = DllStructGetData(DllStructCreate(&amp;quot;ptr;ptr;ptr;ptr;dword;dword;dword;ptr;ptr;dword;dword;dword;dword;ptr;dword;ptr;dword;dword;byte;dword&amp;quot;, $aRet[4]), 18)&lt;br /&gt;
    DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetApiBufferFree&amp;quot;, &amp;quot;ptr&amp;quot;, $aRet[4])&lt;br /&gt;
    Return _DateAdd(&amp;quot;h&amp;quot;, &amp;quot;-&amp;quot; &amp;amp; $sHours, _NowCalc())&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLogonTime&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetUserFullName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&#039;Current user&#039;&#039;s full name is: &#039; &amp;amp; _GetUserFullName() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the full name of the current user. May be blank if you haven&#039;t set a full name.&lt;br /&gt;
Func _GetUserFullName()&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;), $sReturn = &#039;&#039;&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount&#039;, &#039;WQL&#039;)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.FullName&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetUserFullName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalAdmins ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalAdmins() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Members of the Local Administrators Group&lt;br /&gt;
Func _GetLocalAdmins($host = @ComputerName)&lt;br /&gt;
	Local $AdminUsers = &amp;quot;&amp;quot;&lt;br /&gt;
	Local $colGroups = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $host &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
	If Not IsObj($colGroups) Then Return 0&lt;br /&gt;
	Dim $filter[1] = [&amp;quot;group&amp;quot;]&lt;br /&gt;
	$colGroups.Filter = $filter&lt;br /&gt;
	For $objGroup In $colGroups&lt;br /&gt;
		If $objGroup.name = &amp;quot;Administrators&amp;quot; Then&lt;br /&gt;
			For $objUser In $objGroup.Members&lt;br /&gt;
				$AdminUsers &amp;amp;= $objUser.name &amp;amp; @CR&lt;br /&gt;
			Next&lt;br /&gt;
			$AdminUsers = StringTrimRight($AdminUsers,1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
	$colGroups = 0&lt;br /&gt;
	$filter = 0&lt;br /&gt;
	Return $AdminUsers&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalAdmins&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsAdminEnabled() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsAdminEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Administrator&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsAdminEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Administrator account is enabled. Using &#039;net user&#039; and reading the Standard Stream Output.&lt;br /&gt;
Func _IsAdminEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Administrator&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsGuestEnabled() &amp;amp; @CRLF)&lt;br /&gt;
Func _IsGuestEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Guest&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsGuestEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Guest account is enabled. Idea by Chimaera.&lt;br /&gt;
Func _IsGuestEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Guest&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsPasswordExpired ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsPasswordExpired() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsPasswordExpired($sComputerName = @UserName)&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount Where Name = &amp;quot;&#039; &amp;amp; $sComputerName &amp;amp; &#039;&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.PasswordExpires&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsPasswordExpired&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SetWorkGroupName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sNewWorkgroupName = &amp;quot;HOMEOS&amp;quot;&lt;br /&gt;
_SetWorkGroupName($sNewWorkgroupName)&lt;br /&gt;
&lt;br /&gt;
Func _SetWorkGroupName($sGroupName)&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;Netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetJoinDomain&amp;quot;, &amp;quot;int&amp;quot;, 0, &amp;quot;wstr&amp;quot;, $sGroupName, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 0x00000040)&lt;br /&gt;
    Return $aRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_SetWorkGroupName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _WhoAmI ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_WhoAmI() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Displays the username and domain for the currently logged in user.&lt;br /&gt;
Func _WhoAmI()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c whoami&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return StringRegExpReplace(StringUpper($sReturn), &#039;\n|\r&#039;, &#039;&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_WhoAmI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12044</id>
		<title>Snippets ( Windows Users )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Windows_Users_)&amp;diff=12044"/>
		<updated>2013-12-31T18:08:22Z</updated>

		<summary type="html">&lt;p&gt;Spudw2k: Added _GetLocalAdmins Snippet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[category:Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{Snippet Credit Header}}&lt;br /&gt;
&lt;br /&gt;
== Add User Accounts ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
_NetUser(&#039;Jack&#039;, &#039;pw_abc&#039;)&lt;br /&gt;
_NetUser(&#039;Jill&#039;, &#039;pw_def&#039;)&lt;br /&gt;
&lt;br /&gt;
; Add User Accounts&lt;br /&gt;
Func _NetUser($sName, $sPassword = &#039;&#039;, $sGroupName = &#039;Administrators&#039;, $iAutoLogon = 0)&lt;br /&gt;
	; Creates user accounts. Only 1 user can have autologon, if set.&lt;br /&gt;
	If Not FileExists(EnvGet(&#039;AllUsersProfile&#039;) &amp;amp; &#039;\..\&#039; &amp;amp; $sName) Then&lt;br /&gt;
		RunWait(@ComSpec &amp;amp; &#039; /c &#039; &amp;amp; _&lt;br /&gt;
				&#039;Net User &#039; &amp;amp; $sName &amp;amp; &#039; &#039; &amp;amp; $sPassword &amp;amp; &#039; /add &amp;amp;&amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net LocalGroup &#039; &amp;amp; $sGroupName &amp;amp; &#039; &#039; &amp;amp; $sName &amp;amp; &#039; /add &amp;amp;&#039; &amp;amp; _&lt;br /&gt;
				&#039;Net Accounts /MaxPwAge:UnLimited&#039;, &#039;&#039;, @SW_HIDE)&lt;br /&gt;
		If $iAutoLogon Then&lt;br /&gt;
			Local $sRegKey = &#039;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon&#039;&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultUserName&#039;, &#039;Reg_sz&#039;, $sName)&lt;br /&gt;
			RegWrite($sRegKey, &#039;DefaultPassword&#039;, &#039;Reg_sz&#039;, $sPassword)&lt;br /&gt;
			RegWrite($sRegKey, &#039;AutoAdminLogon&#039;, &#039;Reg_sz&#039;, 1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_NetUser&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLogonTime ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Get the last date and time the user logged on.&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_GetLogonTime() &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _GetLogonTime($sUserName = @UserName, $sComputerName = &amp;quot;.&amp;quot;) ; Idea by trancexx: http://www.autoitscript.com/forum/topic/113611-if-isadmin-not-detected-as-admin/&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetUserGetInfo&amp;quot;, &amp;quot;wstr&amp;quot;, $sComputerName, &amp;quot;wstr&amp;quot;, $sUserName, &amp;quot;dword&amp;quot;, 11, &amp;quot;ptr*&amp;quot;, 0)&lt;br /&gt;
    If @error Or $aRet[0] Then Return SetError(1, 0, False)&lt;br /&gt;
    Local $sHours = DllStructGetData(DllStructCreate(&amp;quot;ptr;ptr;ptr;ptr;dword;dword;dword;ptr;ptr;dword;dword;dword;dword;ptr;dword;ptr;dword;dword;byte;dword&amp;quot;, $aRet[4]), 18)&lt;br /&gt;
    DllCall(&amp;quot;netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetApiBufferFree&amp;quot;, &amp;quot;ptr&amp;quot;, $aRet[4])&lt;br /&gt;
    Return _DateAdd(&amp;quot;h&amp;quot;, &amp;quot;-&amp;quot; &amp;amp; $sHours, _NowCalc())&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLogonTime&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetUserFullName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(&#039;Current user&#039;&#039;s full name is: &#039; &amp;amp; _GetUserFullName() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the full name of the current user. May be blank if you haven&#039;t set a full name.&lt;br /&gt;
Func _GetUserFullName()&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;), $sReturn = &#039;&#039;&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount&#039;, &#039;WQL&#039;)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.FullName&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetUserFullName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetLocalAdmins ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 26215-spudw2k&lt;br /&gt;
 | AuthorName = spudw2k&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_GetLocalAdmins() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
;Retrieve Memebrs of the Local Administrators Group&lt;br /&gt;
Func _GetLocalAdmins($host = @ComputerName)&lt;br /&gt;
	$AdminUsers = &amp;quot;&amp;quot;&lt;br /&gt;
	Dim $filter[1] = [&amp;quot;group&amp;quot;]&lt;br /&gt;
	$colGroups = ObjGet(&amp;quot;WinNT://&amp;quot; &amp;amp; $host &amp;amp; &amp;quot;&amp;quot;)&lt;br /&gt;
	If Not IsObj($colGroups) Then Return 0&lt;br /&gt;
	$colGroups.Filter = $filter&lt;br /&gt;
	For $objGroup In $colGroups&lt;br /&gt;
		If $objGroup.name = &amp;quot;Administrators&amp;quot; Then&lt;br /&gt;
			For $objUser In $objGroup.Members&lt;br /&gt;
				$AdminUsers &amp;amp;= $objUser.name &amp;amp; @CR&lt;br /&gt;
			Next&lt;br /&gt;
			$AdminUsers = StringTrimRight($AdminUsers,1)&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
	Return $AdminUsers&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetLocalAdmins&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsAdminEnabled() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsAdminEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Administrator&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsAdminEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsAdminEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Administrator account is enabled. Using &#039;net user&#039; and reading the Standard Stream Output.&lt;br /&gt;
Func _IsAdminEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Administrator&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsAdminEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabled ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsGuestEnabled() &amp;amp; @CRLF)&lt;br /&gt;
Func _IsGuestEnabled() ; By Rover and guinness&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;SELECT * FROM Win32_UserAccount WHERE Name = &amp;quot;Guest&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.Disabled = False&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabled&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsGuestEnabledEx ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_IsGuestEnabledEx() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if the Guest account is enabled. Idea by Chimaera.&lt;br /&gt;
Func _IsGuestEnabledEx()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c net user Guest&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
&lt;br /&gt;
    Local $aReturn = StringRegExp($sReturn, &#039;Account active\s*(.*?)\r&#039;, 3)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, False)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $aReturn[0] = &#039;Yes&#039;&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsGuestEnabledEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsPasswordExpired ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
ConsoleWrite(_IsPasswordExpired() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _IsPasswordExpired($sComputerName = @UserName)&lt;br /&gt;
    Local $oWMIService = ObjGet(&#039;winmgmts:\\localhost\root\CIMV2&#039;)&lt;br /&gt;
    Local $oColItems = $oWMIService.ExecQuery(&#039;Select * From Win32_UserAccount Where Name = &amp;quot;&#039; &amp;amp; $sComputerName &amp;amp; &#039;&amp;quot;&#039;, &amp;quot;WQL&amp;quot;, 0x30)&lt;br /&gt;
    If IsObj($oColItems) Then&lt;br /&gt;
        For $oItem In $oColItems&lt;br /&gt;
            Return $oItem.PasswordExpires&lt;br /&gt;
        Next&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return True&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsPasswordExpired&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SetWorkGroupName ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 44525-jscript&lt;br /&gt;
 | AuthorName = JScript&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sNewWorkgroupName = &amp;quot;HOMEOS&amp;quot;&lt;br /&gt;
_SetWorkGroupName($sNewWorkgroupName)&lt;br /&gt;
&lt;br /&gt;
Func _SetWorkGroupName($sGroupName)&lt;br /&gt;
    Local $aRet = DllCall(&amp;quot;Netapi32.dll&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;NetJoinDomain&amp;quot;, &amp;quot;int&amp;quot;, 0, &amp;quot;wstr&amp;quot;, $sGroupName, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 0x00000040)&lt;br /&gt;
    Return $aRet[0]&lt;br /&gt;
EndFunc   ;==&amp;gt;_SetWorkGroupName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _WhoAmI ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Constants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_WhoAmI() &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Displays the username and domain for the currently logged in user.&lt;br /&gt;
Func _WhoAmI()&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c whoami&#039;, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sReturn = &#039;&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $sReturn &amp;amp;= StdoutRead($iPID)&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return StringRegExpReplace(StringUpper($sReturn), &#039;\n|\r&#039;, &#039;&#039;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_WhoAmI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>Spudw2k</name></author>
	</entry>
</feed>