<?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=JohnOne</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=JohnOne"/>
	<link rel="alternate" type="text/html" href="https://www.autoitscript.com/wiki/Special:Contributions/JohnOne"/>
	<updated>2026-04-21T09:40:11Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Files_%26_Folders_)&amp;diff=12312</id>
		<title>Snippets ( Files &amp; Folders )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Files_%26_Folders_)&amp;diff=12312"/>
		<updated>2014-03-01T20:36:22Z</updated>

		<summary type="html">&lt;p&gt;JohnOne: /* _FileRename */&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;
== _ConvertFileToUTF16 ==&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;
_ConvertFileToUTF16(@ScriptDir &amp;amp; &amp;quot;\Example.xml&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ConvertFileToUTF16($sFilePath)&lt;br /&gt;
    Local $iEncoding = FileGetEncoding($sFilePath)&lt;br /&gt;
    Local $hFileOpen = FileOpen($sFilePath, $iEncoding)&lt;br /&gt;
    If $hFileOpen = -1 Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Local $sData = FileRead($hFileOpen)&lt;br /&gt;
    FileClose($hFileOpen)&lt;br /&gt;
&lt;br /&gt;
    $hFileOpen = FileOpen($sFilePath, 2 + 32)&lt;br /&gt;
    If $hFileOpen = -1 Then&lt;br /&gt;
        Return SetError(2, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    FileWrite($hFileOpen, $sData)&lt;br /&gt;
    Return FileClose($hFileOpen)&lt;br /&gt;
EndFunc   ;==&amp;gt;_ConvertFileToUTF16&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== DropFiles ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
 | Desc = Dropping multiple files onto a GUI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Dropping multiple files onto a GUI&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;APIConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $__aDropFiles&lt;br /&gt;
&lt;br /&gt;
Example()&lt;br /&gt;
&lt;br /&gt;
Func Example()&lt;br /&gt;
	Local $hGUI = GUICreate(&#039;&#039;, 500, 500, -1, -1, -1, $WS_EX_ACCEPTFILES)&lt;br /&gt;
&lt;br /&gt;
	; Create a label that is transparent which will accept &#039;drop&#039; events.&lt;br /&gt;
	GUICtrlCreateLabel(&amp;quot;&amp;quot;, 0, 0, 500, 500)&lt;br /&gt;
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
	GUICtrlSetResizing(-1, $GUI_DOCKALL)&lt;br /&gt;
	GUICtrlSetState(-1, $GUI_DROPACCEPTED)&lt;br /&gt;
&lt;br /&gt;
	GUIRegisterMsg($WM_DROPFILES, &amp;quot;WM_DROPFILES&amp;quot;)&lt;br /&gt;
	GUISetState(@SW_SHOW, $hGUI)&lt;br /&gt;
&lt;br /&gt;
	While 1&lt;br /&gt;
		Switch GUIGetMsg()&lt;br /&gt;
			Case $GUI_EVENT_CLOSE&lt;br /&gt;
				ExitLoop&lt;br /&gt;
&lt;br /&gt;
			Case $GUI_EVENT_DROPPED&lt;br /&gt;
				If $__aDropFiles[0] &amp;gt; 0 Then&lt;br /&gt;
					_ArrayDisplay($__aDropFiles)&lt;br /&gt;
				EndIf&lt;br /&gt;
&lt;br /&gt;
		EndSwitch&lt;br /&gt;
	WEnd&lt;br /&gt;
	GUIDelete($hGUI)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example&lt;br /&gt;
&lt;br /&gt;
Func WM_DROPFILES($hWnd, $iMsg, $iwParam, $ilParam)&lt;br /&gt;
	#forceref $hWnd, $ilParam&lt;br /&gt;
	Switch $iMsg&lt;br /&gt;
		Case $WM_DROPFILES&lt;br /&gt;
			Local $aReturn = _WinAPI_DragQueryFileEx($iwParam)&lt;br /&gt;
			If IsArray($aReturn) Then&lt;br /&gt;
				Local $aError[1] = [0]&lt;br /&gt;
				$__aDropFiles = $aReturn&lt;br /&gt;
			Else&lt;br /&gt;
				$__aDropFiles = $aError&lt;br /&gt;
			EndIf&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Return $GUI_RUNDEFMSG&lt;br /&gt;
EndFunc   ;==&amp;gt;WM_DROPFILES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ExitCheckTextChange ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 8007-negativenrg&lt;br /&gt;
 | AuthorName = NegativeNrG&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Check(when Exit), if Text is not equal to $e_to Then, prompt the user to save or not save.&lt;br /&gt;
;_ExitCheckText Change $Edit Handle, $title of messagebox, $message of messagebox, $equal to(default = NULL).&lt;br /&gt;
&lt;br /&gt;
Func _ExitCheckTextChange($E_hnd,$title,$message,$e_to = &#039;&#039;)&lt;br /&gt;
	Local $buffer, $choice, $filetosave, $handle1&lt;br /&gt;
                $buffer = GUIctrlread($E_hnd)&lt;br /&gt;
        If $buffer &amp;lt;&amp;gt; $e_to Then&lt;br /&gt;
            $choice = Msgbox(4,$title,$message)&lt;br /&gt;
            If $choice = 6 Then&lt;br /&gt;
                $filetosave = FileSaveDialog(&#039;Choose File&#039;,@scriptdir,&#039;(*.au3)&#039;)&lt;br /&gt;
                $handle1 = FileOpen($filetosave,2)&lt;br /&gt;
                FileWrite($handle1,$buffer)&lt;br /&gt;
                Exit&lt;br /&gt;
            Elseif $choice &amp;lt;&amp;gt; 6 Then&lt;br /&gt;
            Exit&lt;br /&gt;
        EndIf&lt;br /&gt;
        Else&lt;br /&gt;
        Exit&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;
== _FileDeleteEx ==&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;
; Ref: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;APIConstants.au3&amp;gt; ; Included with WinAPIEx.au3&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt; ; Download From http://www.autoitscript.com/forum/topic/98712-winapiex-udf/ by Yashied.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_FileDeleteEx(&amp;quot;C:\Example.dat&amp;quot;) &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _FileDeleteEx($sFilePath)&lt;br /&gt;
    Local $iReturn = FileDelete($sFilePath)&lt;br /&gt;
    If $iReturn Then&lt;br /&gt;
        Return $iReturn&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return _WinAPI_MoveFileEx(FileGetShortName($sFilePath), &amp;quot;&amp;quot;, $MOVE_FILE_DELAY_UNTIL_REBOOT)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileDeleteEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileCheck ==&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;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Check if the file was modified less than 24 hours ago.&lt;br /&gt;
ConsoleWrite( _FileCheck(@ScriptFullPath, 24) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _FileCheck($sFilePath, $iHours = 24)&lt;br /&gt;
    Local $aTime&lt;br /&gt;
    If FileExists($sFilePath) = 0 Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aTime = FileGetTime($sFilePath, 0, 0)&lt;br /&gt;
    Return Number(_DateDiff(&amp;quot;h&amp;quot;, $aTime[0] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aTime[1] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aTime[2] &amp;amp; &amp;quot; &amp;quot; &amp;amp; $aTime[3] &amp;amp; &amp;quot;:&amp;quot; &amp;amp; $aTime[4] &amp;amp; &amp;quot;:&amp;quot; &amp;amp; $aTime[5], @YEAR &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MON &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MDAY &amp;amp; &amp;quot; &amp;quot; &amp;amp; @HOUR &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @MIN &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @SEC) &amp;lt; $iHours)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileCheck&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileCreateEx ==&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;
_FileCreateEx(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;, 42)&lt;br /&gt;
&lt;br /&gt;
; Create a blank file with a certain size in bytes.&lt;br /&gt;
Func _FileCreateEx($sFilePath, $iBytes = 0)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c fsutil file createnew &amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot; &#039; &amp;amp; Int($iBytes), @WorkingDir, @SW_HIDE)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileCreateEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileID ==&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;
FileClose(FileOpen(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;, 2))&lt;br /&gt;
ConsoleWrite(_FileID(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;) &amp;amp; @CRLF)&lt;br /&gt;
FileDelete(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;)&lt;br /&gt;
&lt;br /&gt;
; Rerieve the file id of a filepath.&lt;br /&gt;
Func _FileID($sFilePath)&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c fsutil file queryfileid &amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot;&#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 StringStripWS(StringRegExpReplace($sReturn, &#039;File\sID\sis\s(.*?)&#039;, &#039;$1&#039;), 8)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileExistsWithQuotes ==&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(_FileExistsWithQuotes(&#039;&amp;quot;&#039; &amp;amp; @ScriptDir &amp;amp; &#039;&amp;quot;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_FileExistsWithQuotes(&amp;quot;&#039;&amp;quot; &amp;amp; @ScriptDir &amp;amp; &amp;quot;&#039;&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_FileExistsWithQuotes(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Version: 1.00. AutoIt: V3.3.8.1&lt;br /&gt;
; Check a filepath ecists even if the path contains quotation marks.&lt;br /&gt;
Func _FileExistsWithQuotes($sFilePath)&lt;br /&gt;
    Return FileExists(StringRegExpReplace($sFilePath, &#039;^(&amp;quot;|&#039;&#039;)*([^&amp;quot;&#039;&#039;]+)(&amp;quot;|&#039;&#039;)*$&#039;, &#039;\2&#039;))&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileExistsWithQuotes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== FileLineCount ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 71214-mkish&lt;br /&gt;
 | AuthorName = MKISH&lt;br /&gt;
 | Desc = Checks the number of lines in a file (useful for larger files as well)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Author - MKISH&lt;br /&gt;
&lt;br /&gt;
; Checks the number of lines in a file (useful for larger files as well)&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WinAPI.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local $FILE = &amp;quot;G:\WIN7\sources\boot.wim&amp;quot;&lt;br /&gt;
Local $COUNT = 0&lt;br /&gt;
Local $start = default&lt;br /&gt;
Local $res, $fLen, $err&lt;br /&gt;
&lt;br /&gt;
While 1&lt;br /&gt;
	$res = _HexSearch($FILE, StringToBinary(&amp;quot;&amp;quot; &amp;amp; @crlf), $start)&lt;br /&gt;
	$start = $res + 2&lt;br /&gt;
	$COUNT = $COUNT + 1&lt;br /&gt;
	If $res = -1 then exitloop&lt;br /&gt;
Wend&lt;br /&gt;
&lt;br /&gt;
msgbox(64, &amp;quot;&amp;quot;, &amp;quot;Lines count: &amp;quot; &amp;amp; $COUNT)&lt;br /&gt;
&lt;br /&gt;
; _HexSearch function (originally written by Zinthose, modified by MKISH)&lt;br /&gt;
Func _HexSearch($FilePath, $BinaryValue, $StartOffset = Default)&lt;br /&gt;
        Local $Buffer, $ptr, $hFile, $Result, $Read, $SearchValue, $Pos, $BufferSize = 2048&lt;br /&gt;
            If $StartOffset = Default     Then $StartOffset = 0&lt;br /&gt;
            If Not FileExists($FilePath)    Then    Return SetError(1, @error, 0)&lt;br /&gt;
            $fLen = FileGetSize($FilePath)&lt;br /&gt;
            If $StartOffset &amp;gt; $fLen   Then   Return SetError(2, @error, 0)&lt;br /&gt;
            If Not IsBinary($BinaryValue)   Then    Return SetError(3, @error, 0)&lt;br /&gt;
            If Not IsNumber($StartOffset)   Then    Return SetError(4, @error, 0)&lt;br /&gt;
            $SearchValue = BinaryToString($BinaryValue)&lt;br /&gt;
            $Buffer = DllStructCreate(&amp;quot;byte[&amp;quot; &amp;amp; $BufferSize &amp;amp; &amp;quot;]&amp;quot;)&lt;br /&gt;
            $ptr = DllStructGetPtr($Buffer)&lt;br /&gt;
                $hFile = _WinAPI_CreateFile($FilePath, 2, 2, 1)&lt;br /&gt;
                If $hFile = 0 Then Return SetError(5, @error, 0)&lt;br /&gt;
            $Result = _WinAPI_SetFilePointer($hFile, $StartOffset)&lt;br /&gt;
            $err = @error&lt;br /&gt;
            If $Result = 0xFFFFFFFF Then&lt;br /&gt;
                _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                Return SetError(5, $err, 0)&lt;br /&gt;
            EndIf&lt;br /&gt;
            $Pos = $StartOffset&lt;br /&gt;
            While True&lt;br /&gt;
                    $Read = 0&lt;br /&gt;
                    $Result = _WinAPI_ReadFile($hFile, $ptr, $BufferSize, $Read)&lt;br /&gt;
                    $err = @error&lt;br /&gt;
                    If Not $Result Then&lt;br /&gt;
                        _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                        Return SetError(6, $err, 0)&lt;br /&gt;
                    EndIf&lt;br /&gt;
                    $Result = DllStructGetData($Buffer, 1)&lt;br /&gt;
                    $Result = BinaryToString($Result)&lt;br /&gt;
                    $Result = StringInStr($Result, $SearchValue)&lt;br /&gt;
                    If $Result &amp;gt; 0 Then ExitLoop&lt;br /&gt;
                    If $Read &amp;lt; $BufferSize Then&lt;br /&gt;
                        _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                        Return -1&lt;br /&gt;
                    EndIf&lt;br /&gt;
                    $Pos += $Read&lt;br /&gt;
&lt;br /&gt;
            WEnd&lt;br /&gt;
            _WinAPI_CloseHandle($hFile)&lt;br /&gt;
            If Not $Result Then Return SetError(7, @error, 0)&lt;br /&gt;
            $Result = $Pos + $Result - 1&lt;br /&gt;
            Return $Result&lt;br /&gt;
    EndFunc; ==&amp;gt; _HexSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileOpenDialog ==&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;
Local $sFilePath = _FileOpenDialog(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Images (*.jpg;*.bmp)|Videos (*.avi;*.mpg)&amp;quot;, Random(1, @DesktopWidth, 1), Random(1, @DesktopHeight, 1), 1 + 4, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;File = &#039; &amp;amp; $sFilePath &amp;amp; &#039;, @error = &#039; &amp;amp; @error &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _FileOpenDialog&lt;br /&gt;
; Description ...: Initiates a Open File Dialog with the option to set the position of the GUI.&lt;br /&gt;
; Syntax ........: _FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter[, $iLeft = -1[, $iTop = -1[, $iOptions = 0[,&lt;br /&gt;
;                  $sDefaultName = &amp;quot;&amp;quot;]]]])&lt;br /&gt;
; Parameters ....: $sTitle              - Title text of the Dialog GUI.&lt;br /&gt;
;                  $sIntitialDirectory  - Initial directory selected in the GUI file tree.&lt;br /&gt;
;                  $sFilter             - File type single filter such as &amp;quot;All (*.*)&amp;quot; or &amp;quot;Text files (*.txt)&amp;quot;.&lt;br /&gt;
;                  $iLeft               - [optional] The left side of the dialog box. By default (-1), the window is centered.&lt;br /&gt;
;                  $iTop                - [optional] The top of the dialog box. Default (-1) is centered&lt;br /&gt;
;                  $iOptions            - [optional] Dialog Options: To use more than one option, add the required values together. See FileOpenDialog. Default is 0.&lt;br /&gt;
;                  $sDefaultName        - [optional] Suggested file name for the user to open. Default is blank (&amp;quot;&amp;quot;).&lt;br /&gt;
; Return values .: Success: Returns the full path of the file(s) chosen. Results for multiple selections are &amp;quot;Directory|file1|file2|...&amp;quot;&lt;br /&gt;
;                  Failure: Sets @error to non-zero.&lt;br /&gt;
; Author ........: guinness&lt;br /&gt;
; Remarks........: This doesn&#039;t change the working directory of the script like FileOpenDialog does.&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter, $iLeft = -1, $iTop = -1, $iOptions = 0, $sDefaultName = &amp;quot;&amp;quot;)&lt;br /&gt;
    Local $hGUI = GUICreate(&#039;&#039;, -1, -1, $iLeft, $iTop), $sWorkingDir = @WorkingDir&lt;br /&gt;
    Local $sFilePath = FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter, $iOptions, $sDefaultName, $hGUI)&lt;br /&gt;
    Local $iError = @error&lt;br /&gt;
    FileChangeDir($sWorkingDir)&lt;br /&gt;
    Return SetError($iError, GUIDelete($hGUI), $sFilePath)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileOpenDialog()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileRename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 52374-johnone&lt;br /&gt;
 | AuthorName = JohnOne&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;### Rename a file ###&lt;br /&gt;
;$sFile = Full path to file&lt;br /&gt;
;$sRename = New Filename&lt;br /&gt;
;$iOverWrite = 0 or 1&lt;br /&gt;
&lt;br /&gt;
;Success returns 1&lt;br /&gt;
;failure, returns 0 and sets @error&lt;br /&gt;
; 1 if FileMove fails, &lt;br /&gt;
; 2 if $sFile does not exist&lt;br /&gt;
;@extended&lt;br /&gt;
; 0 if the new file does not already exist / existed&lt;br /&gt;
; 1 if the new file already exists / existed&lt;br /&gt;
&lt;br /&gt;
;#### Example ####&lt;br /&gt;
$File = @ScriptDir &amp;amp; &#039;\filetorename.txt&#039;&lt;br /&gt;
FileWrite($File, &#039;Test&#039;)&lt;br /&gt;
_FileRename($File, &#039;newname.txt&#039;)&lt;br /&gt;
If @error Then MsgBox(0, &amp;quot;Error&amp;quot;, @error)&lt;br /&gt;
&lt;br /&gt;
Func _FileRename($sFile, $sRename, $iOverWrite = 0)&lt;br /&gt;
    Local Const $FILENOTEXIST = 2&lt;br /&gt;
    If Not FileExists($sFile) Then Return SetError($FILENOTEXIST, 0, 0)&lt;br /&gt;
    Local $_StringLen = StringLen($sFile)&lt;br /&gt;
    Local $_StringInStr = StringInStr($sFile, &amp;quot;\&amp;quot;, 0, -1, $_StringLen)&lt;br /&gt;
    Local $_Count = $_StringLen - $_StringInStr&lt;br /&gt;
    Local $_Dir = StringLeft($sFile, $_StringInStr)&lt;br /&gt;
    Local $_NewFile = $_Dir &amp;amp; $sRename&lt;br /&gt;
    Local $_NewFileExists = FileExists($_NewFile)&lt;br /&gt;
    Local $_FileMove = FileMove($sFile, $_NewFile, $iOverWrite)&lt;br /&gt;
    Return SetError(Not $_FileMove, $_NewFileExists, $_FileMove)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileRename&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== _FileRename Alternative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;FileRename(PathFile, RenameFile)&lt;br /&gt;
;JohnOne&lt;br /&gt;
&lt;br /&gt;
FileRename(@ScriptDir &amp;amp; &amp;quot;\rename.txt&amp;quot;, @ScriptDir &amp;amp; &amp;quot;\renamed.txt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func FileRename($FileName, $ReName)&lt;br /&gt;
&lt;br /&gt;
	Local $SHFILEOPSTRUCT, $SourceStruct, $DestStruct&lt;br /&gt;
	Local Const $FO_RENAME = 0x0004&lt;br /&gt;
	Local Const $FOF_SILENT = 0x0004&lt;br /&gt;
	Local Const $FOF_NOCONFIRMATION = 0x0010&lt;br /&gt;
	Local Const $FOF_NOERRORUI = 0x0400&lt;br /&gt;
	Local Const $FOF_NOCONFIRMMKDIR = 0x0200&lt;br /&gt;
	Local Const $NULL = 0&lt;br /&gt;
&lt;br /&gt;
	$SourceStruct = _StringToStruct($FileName)&lt;br /&gt;
	$DestStruct = _StringToStruct($ReName)&lt;br /&gt;
&lt;br /&gt;
	$SHFILEOPSTRUCT = DllStructCreate(&amp;quot;hwnd hWnd;uint wFunc;ptr pFrom;ptr pTo;int fFlags;int fAnyOperationsAborted;ptr hNameMappings;ptr lpszProgressTitle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;hWnd&amp;quot;, $NULL)&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;wFunc&amp;quot;, $FO_RENAME)&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;pFrom&amp;quot;, DllStructGetPtr($SourceStruct))&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;pTo&amp;quot;, DllStructGetPtr($DestStruct))&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;fFlags&amp;quot;, BitOR($FOF_SILENT, $FOF_NOCONFIRMATION, $FOF_NOERRORUI, $FOF_NOCONFIRMMKDIR))&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;fAnyOperationsAborted&amp;quot;, $NULL)&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;hNameMappings&amp;quot;, $NULL)&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;lpszProgressTitle&amp;quot;, $NULL)&lt;br /&gt;
&lt;br /&gt;
	$acall = DllCall(&amp;quot;shell32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;SHFileOperation&amp;quot;, &amp;quot;ptr&amp;quot;, DllStructGetPtr($SHFILEOPSTRUCT))&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(@error, @extended, 0)&lt;br /&gt;
	EndIf&lt;br /&gt;
	Return 1&lt;br /&gt;
EndFunc   ;==&amp;gt;FileRename&lt;br /&gt;
&lt;br /&gt;
Func _StringToStruct($string)&lt;br /&gt;
&lt;br /&gt;
	Local $iLen = StringLen($string)&lt;br /&gt;
	Local $Struct = DllStructCreate(&amp;quot;char[&amp;quot; &amp;amp; String($iLen + 2) &amp;amp; &amp;quot;]&amp;quot;)&lt;br /&gt;
	DllStructSetData($Struct, 1, $string)&lt;br /&gt;
	DllStructSetData($Struct, 1, 0, $iLen + 1)&lt;br /&gt;
	DllStructSetData($Struct, 1, 0, $iLen + 2)&lt;br /&gt;
&lt;br /&gt;
	Return $Struct&lt;br /&gt;
EndFunc   ;==&amp;gt;_StringToStruct&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetFolderDepth ==&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;
; Autoit 3.3.5.4 and Below&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir &amp;amp; &#039;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptFullPath) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the folder depth of a filepath.&lt;br /&gt;
Func _GetFolderDepth($sFilePath)&lt;br /&gt;
    If StringInStr($sFilePath, &#039;.&#039;, 2, -1) Then&lt;br /&gt;
        $sFilePath = StringLeft($sFilePath, StringInStr($sFilePath, &amp;quot;&amp;quot;, 2, -1) - 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Local $aArray = StringSplit(StringRegExpReplace($sFilePath, &#039;[/]+z&#039;, &#039;&#039;), &#039;&#039;)&lt;br /&gt;
    Return $aArray[0] - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetFolderDepth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetFolderDepth ==&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;
; Autoit 3.3.5.4 and Above&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir &amp;amp; &#039;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptFullPath) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the folder depth of a filepath. Works with V3.3.5.4+&lt;br /&gt;
Func _GetFolderDepth($sFilePath)&lt;br /&gt;
    If StringInStr($sFilePath, &#039;.&#039;, 2, -1) Then&lt;br /&gt;
        $sFilePath = StringLeft($sFilePath, StringInStr($sFilePath, &amp;quot;&amp;quot;, 2, -1) - 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return StringSplit(StringRegExpReplace($sFilePath, &#039;[/]+z&#039;, &#039;&#039;), &#039;&#039;)[0] - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetFolderDepth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsDir ==&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;IsDir: Using a file - &amp;quot; &amp;amp; IsDir(@ScriptFullPath) &amp;amp; @CRLF) ; Return 0&lt;br /&gt;
ConsoleWrite(&amp;quot;IsFile: Using a file - &amp;quot; &amp;amp; IsFile(@ScriptFullPath) &amp;amp; @CRLF) ; Return 1&lt;br /&gt;
ConsoleWrite(&amp;quot;IsDir: Using a directory - &amp;quot; &amp;amp; IsDir(@ScriptDir) &amp;amp; @CRLF) ; Return 1&lt;br /&gt;
ConsoleWrite(&amp;quot;IsFile: Using a directory - &amp;quot; &amp;amp; IsFile(@ScriptDir) &amp;amp; @CRLF) ; Return 0&lt;br /&gt;
&lt;br /&gt;
Func IsDir($sFilePath)&lt;br /&gt;
    Return Number(FileExists($sFilePath) And StringInStr(FileGetAttrib($sFilePath), &amp;quot;D&amp;quot;, 2, 1) &amp;gt; 0)&lt;br /&gt;
EndFunc   ;==&amp;gt;IsDir&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFile ==&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;
Func IsFile($sFilePath)&lt;br /&gt;
    Return Number(FileExists($sFilePath) And StringInStr(FileGetAttrib($sFilePath), &amp;quot;D&amp;quot;, 2, 1) = 0)&lt;br /&gt;
EndFunc   ;==&amp;gt;IsFile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileDiff ==&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(_IsFileDiff(@ScriptFullPath, @ScriptFullPath) &amp;amp; @CRLF) ; This will return False as the files are exactly the same.&lt;br /&gt;
ConsoleWrite(_IsFileDiff(@ScriptFullPath, @AutoItExe) &amp;amp; @CRLF) ; This will return True as the files are different.&lt;br /&gt;
&lt;br /&gt;
; Check if a file is different.&lt;br /&gt;
Func _IsFileDiff($sFilePath_1, $sFilePath_2)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c FC /B /W &amp;quot;&#039; &amp;amp; $sFilePath_1 &amp;amp; &#039;&amp;quot; &amp;quot;&#039; &amp;amp; $sFilePath_2 &amp;amp; &#039;&amp;quot;&#039;, @WorkingDir, @SW_HIDE) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileDiff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileOlder ==&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;Date.au3&amp;gt; ; Required for _DateDiff()&lt;br /&gt;
&lt;br /&gt;
; Check if the current script is older than 10 days.&lt;br /&gt;
If _IsFileOlder(@ScriptFullPath, 10) Then&lt;br /&gt;
	MsgBox(4096, &#039;&#039;, &#039;File is older than 10 days.&#039;)&lt;br /&gt;
Else&lt;br /&gt;
	MsgBox(4096, &#039;&#039;, &#039;File isn&#039;&#039;t older than 10 days.&#039;)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; Is a file older than a certain number of days.&lt;br /&gt;
Func _IsFileOlder($sFilePath, $iDays)&lt;br /&gt;
	Local $aArray = FileGetTime($sFilePath, 0)&lt;br /&gt;
	Return _DateDiff(&#039;D&#039;, $aArray[0] &amp;amp; &#039;/&#039; &amp;amp; $aArray[1] &amp;amp; &#039;/&#039; &amp;amp; $aArray[2] &amp;amp; &#039; &#039; &amp;amp; $aArray[3] &amp;amp; &#039;:&#039; &amp;amp; $aArray[4] &amp;amp; &#039;:&#039; &amp;amp; $aArray[5], @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) &amp;gt;= $iDays&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileOlder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileSame ==&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(_IsFileSame(@ScriptFullPath, @ScriptFullPath) &amp;amp; @CRLF) ; This will return True as the files are exactly the same.&lt;br /&gt;
ConsoleWrite(_IsFileSame(@ScriptFullPath, @AutoItExe) &amp;amp; @CRLF) ; This will return False as the files are different.&lt;br /&gt;
&lt;br /&gt;
; Check if a file is the same.&lt;br /&gt;
Func _IsFileSame($sFilePath_1, $sFilePath_2)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c FC /B /W &amp;quot;&#039; &amp;amp; $sFilePath_1 &amp;amp; &#039;&amp;quot; &amp;quot;&#039; &amp;amp; $sFilePath_2 &amp;amp; &#039;&amp;quot;&#039;, @WorkingDir, @SW_HIDE) = 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileSame&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IniReadFile ==&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;
__INIFileFill(@ScriptDir &amp;amp; &#039;\Example.ini&#039;) ; Create an INI file with random data.&lt;br /&gt;
&lt;br /&gt;
Local $aArray = _IniReadFile(@ScriptDir &amp;amp; &#039;\Example.ini&#039;)&lt;br /&gt;
FileDelete(@ScriptDir &amp;amp; &#039;\Example.ini&#039;)&lt;br /&gt;
_ArrayDisplay($aArray)&lt;br /&gt;
&lt;br /&gt;
Func _IniReadFile($sFilePath)&lt;br /&gt;
    Local $aReturn[1][3] = [[0, 3]], $aSectionArray, $aSectionNameArray, $iCount = 0&lt;br /&gt;
    $aSectionNameArray = IniReadSectionNames($sFilePath)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, $aReturn)&lt;br /&gt;
    EndIf&lt;br /&gt;
    For $A = 1 To $aSectionNameArray[0]&lt;br /&gt;
        $aSectionArray = IniReadSection($sFilePath, $aSectionNameArray[$A])&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ContinueLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
        For $B = 1 To $aSectionArray[0][0]&lt;br /&gt;
            $aReturn[0][0] += 1&lt;br /&gt;
            $iCount += 1&lt;br /&gt;
            If $aReturn[0][0] &amp;lt;= $iCount + 1 Then&lt;br /&gt;
                ReDim $aReturn[$aReturn[0][0] * 2][$aReturn[0][1]]&lt;br /&gt;
            EndIf&lt;br /&gt;
            $aReturn[$iCount][0] = $aSectionArray[$B][0]&lt;br /&gt;
            $aReturn[$iCount][1] = $aSectionArray[$B][1]&lt;br /&gt;
            $aReturn[$iCount][2] = $aSectionNameArray[$A]&lt;br /&gt;
        Next&lt;br /&gt;
    Next&lt;br /&gt;
    ReDim $aReturn[$aReturn[0][0] + 1][$aReturn[0][1]] ; Remove empty entries.&lt;br /&gt;
    Return $aReturn&lt;br /&gt;
EndFunc   ;==&amp;gt;_IniReadFile&lt;br /&gt;
&lt;br /&gt;
Func __INIFileFill($sFilePath)&lt;br /&gt;
    Local $sData = &#039;&#039;, $sHeader = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To Random(1, 5, 1)&lt;br /&gt;
        $sHeader = _RandomText(Random(5, 25, 1))&lt;br /&gt;
        $sData = &amp;quot;&amp;quot;&lt;br /&gt;
        For $j = 1 To Random(1, 25, 1)&lt;br /&gt;
            $sData &amp;amp;= _RandomText(Random(5, 25, 1)) &amp;amp; &#039;=&#039; &amp;amp; _RandomText(Random(5, 25, 1)) &amp;amp; @LF&lt;br /&gt;
        Next&lt;br /&gt;
        IniWriteSection($sFilePath, $sHeader, $sData)&lt;br /&gt;
    Next&lt;br /&gt;
EndFunc   ;==&amp;gt;__FillINIFile&lt;br /&gt;
&lt;br /&gt;
Func _RandomText($iLength = 10)&lt;br /&gt;
    Local $sData = &#039;&#039;, $sRandom = &#039;&#039;&lt;br /&gt;
    For $i = 1 To $iLength&lt;br /&gt;
        $sRandom = Random(55, 116, 1)&lt;br /&gt;
        $sData &amp;amp;= Chr($sRandom + 6 * ($sRandom &amp;gt; 90) - 7 * ($sRandom &amp;lt; 65))&lt;br /&gt;
    Next&lt;br /&gt;
    Return $sData&lt;br /&gt;
EndFunc   ;==&amp;gt;_RandomText&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IniReadInit ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 9370-mlowery&lt;br /&gt;
 | AuthorName = mlowery&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;===============================================================================&lt;br /&gt;
; Description:     Reads values from INI or creates INI with initial values.&lt;br /&gt;
;                  Intended to ensure all available INI settings are exposed&lt;br /&gt;
;                  and editable.&lt;br /&gt;
;                  Parameters are identical to IniRead()&lt;br /&gt;
; Parameter(s):    $filename  = filename of INI&lt;br /&gt;
;                  $section  = section name of INI&lt;br /&gt;
;                  $key      = key name in section&lt;br /&gt;
;                  $default  = default value (written to INI if not exists)&lt;br /&gt;
; Requirement(s):  None&lt;br /&gt;
; Return Value(s): Returns value from INI (or default if not defined)&lt;br /&gt;
; Note(s):         Chr(127) used to detect non-existing value since won&#039;t normally exist in a text file&lt;br /&gt;
;===============================================================================&lt;br /&gt;
Func _IniReadInit($filename, $section, $key, $default)&lt;br /&gt;
  Local $value = IniRead($filename, $section, $key, Chr(127))&lt;br /&gt;
    If $value = Chr(127) Then&lt;br /&gt;
      IniWrite($filename, $section, $key, $default)&lt;br /&gt;
      $value = $default&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $value&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;
== _IsValidFileType ==&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(@ScriptFullPath &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@ScriptFullPath, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(@AutoItExe &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@AutoItExe, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a filepath matches an extension filetype. Based on the idea by guinness - http://www.autoitscript.com/forum/topic/123674-isvalidfiletype/&lt;br /&gt;
Func _IsValidFileType($sFilePath, $sList = &amp;quot;bat;cmd;exe&amp;quot;) ; By AZJIO - http://www.autoitscript.com/forum/topic/...filetype/page__view__findpost_&lt;br /&gt;
    Local $iDot = StringInStr($sFilePath, &amp;quot;.&amp;quot;, 0, -1)&lt;br /&gt;
    Return $iDot And StringInStr(&#039;;&#039; &amp;amp; $sList &amp;amp; &#039;;&#039;, &#039;;&#039; &amp;amp; StringTrimLeft($sFilePath, $iDot) &amp;amp; &#039;;&#039;) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidFileType&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Example 2&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(@ScriptFullPath &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@ScriptFullPath, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(@AutoItExe &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@AutoItExe, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a filepath matches an extension filetype. Based on the idea by guinness - http://www.autoitscript.com/forum/topic/123674-isvalidfiletype/&lt;br /&gt;
Func _IsValidFileType($sFilePath, $sList = &amp;quot;bat;cmd;exe&amp;quot;, $iOpFast = 1) ; By Yashied.&lt;br /&gt;
    If StringStripWS($sList, 8) = &amp;quot;&amp;quot; Then&lt;br /&gt;
        $sList = &amp;quot;*&amp;quot;&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return _WinAPI_PathMatchSpec($sFilePath, StringReplace(&#039;;&#039; &amp;amp; $sList, &#039;;&#039;, &#039;;*.&#039;, 0, $iOpFast * 2))&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidFileType&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== File Open/Save/Folder Dialog Box ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
 | AuthorURL2 = 4997-odklizec&lt;br /&gt;
 | AuthorName2 = odklizec&lt;br /&gt;
 | AuthorURL3 = 6756-danny35d&lt;br /&gt;
 | AuthorName3 = Danny35d&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Center - File Open/Save/Folder Dialog Box&lt;br /&gt;
; Author - odklizec, MHz, Danny35d&lt;br /&gt;
&lt;br /&gt;
 If StringInStr($cmdlineraw, &#039;/MoveWin&#039;) Then&lt;br /&gt;
	 Local $size, $PosX, $PosY&lt;br /&gt;
     $cmdlineraw = StringSplit(StringMid($cmdlineraw, StringInStr($cmdlineraw, &#039;/MoveWin&#039;)), &#039;:&#039;)&lt;br /&gt;
     While 1&lt;br /&gt;
         Select&lt;br /&gt;
         Case WinExists($cmdlineraw[2])&lt;br /&gt;
             $size=WinGetPos ($cmdlineraw[2])&lt;br /&gt;
             $PosX=@DesktopWidth/2 - $size[2]/2&lt;br /&gt;
             $PosY=@DesktopHeight/2 - $size[3]/2&lt;br /&gt;
             WinMove($cmdlineraw[2], &amp;quot;&amp;quot;, $PosX, $PosY)&lt;br /&gt;
             WinActivate($cmdlineraw[2])&lt;br /&gt;
             ExitLoop&lt;br /&gt;
         EndSelect&lt;br /&gt;
         Sleep(50)&lt;br /&gt;
     WEnd&lt;br /&gt;
     Exit&lt;br /&gt;
 EndIf&lt;br /&gt;
Global $PID, $Read_File, $Save_File&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Open file Dialog Box&#039;)&lt;br /&gt;
 $Read_File = FileOpenDialog ( &amp;quot;Open file Dialog Box&amp;quot;, @ScriptDir &amp;amp; &amp;quot;\&amp;quot;, &amp;quot;AutoIt Files (*.au3)&amp;quot;,3,@ScriptFullPath)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Save file Dialog Box&#039;)&lt;br /&gt;
 $Save_File = FileSaveDialog( &amp;quot;Save file Dialog Box&amp;quot;, @ScriptDir, &amp;quot;Scripts (*.aut;*.au3)&amp;quot;, 3)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Browse for Folder&#039;)&lt;br /&gt;
 FileSelectFolder(&amp;quot;Choose a folder with plugins..&amp;quot;, &amp;quot;&amp;quot;,&amp;quot;4&amp;quot;,&amp;quot;c:\&amp;quot;)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
&lt;br /&gt;
 Func _FindBrowseWin($sTitle)&lt;br /&gt;
     If @Compiled Then&lt;br /&gt;
         Return(Run(@ScriptFullPath &amp;amp; &#039; /MoveWin:&#039; &amp;amp; $sTitle))&lt;br /&gt;
     Else&lt;br /&gt;
         Return(Run(@AutoItExe &amp;amp; &#039; &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot; /MoveWin:&#039; &amp;amp; $sTitle))&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;
== _MoveFileOnReboot ==&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.2.0, Creation Date = 21/03/12.&lt;br /&gt;
&lt;br /&gt;
; Function to Move or Delete a file on next reboot!&lt;br /&gt;
Func _MoveFileOnReboot($sSourcePath, $sDestPath = &amp;quot;&amp;quot;); If $sDestPath = &amp;quot;&amp;quot; the file is deleted instead of moved.&lt;br /&gt;
    Local $iRet&lt;br /&gt;
&lt;br /&gt;
    ; PendingFileRenameOperations (HKLM\SYSTEM\CurrentControlSet\Control\Session Manager)&lt;br /&gt;
    If $DestPath = &amp;quot;&amp;quot; Then&lt;br /&gt;
        $iRet = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;MoveFileExA&amp;quot;, &amp;quot;str&amp;quot;, $sSourcePath, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 4)&lt;br /&gt;
    Else&lt;br /&gt;
        $iRet = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;MoveFileExA&amp;quot;, &amp;quot;str&amp;quot;, $sSourcePath, &amp;quot;str&amp;quot;, $sDestPath, &amp;quot;dword&amp;quot;, 4)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Return $iRet&lt;br /&gt;
EndFunc   ;==&amp;gt;_MoveFileOnReboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _MultipleFileOpenDialog ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL =&lt;br /&gt;
 | AuthorName = /dev/null&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $message = &amp;quot;Hold down Ctrl or Shift to choose multiple files.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Local $filename = _MultipleFileOpenDialog($message,300,300)&lt;br /&gt;
&lt;br /&gt;
Local $var = FileOpenDialog($message, @WindowsDir &amp;amp; &amp;quot;\&amp;quot;, &amp;quot;Images (*.jpg;*.bmp)&amp;quot;, 1 + 4 )&lt;br /&gt;
&lt;br /&gt;
If @error Then&lt;br /&gt;
    MsgBox(4096,&amp;quot;&amp;quot;,&amp;quot;No File(s) chosen&amp;quot;)&lt;br /&gt;
Else&lt;br /&gt;
    $var = StringReplace($var, &amp;quot;|&amp;quot;, @CRLF)&lt;br /&gt;
    MsgBox(4096,&amp;quot;&amp;quot;,&amp;quot;You chose &amp;quot; &amp;amp; $var)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
FileDelete($filename)&lt;br /&gt;
func _MultipleFileOpenDialog($title,$posx,$posy)&lt;br /&gt;
    Local $temp = EnvGet(&amp;quot;temp&amp;quot;)&lt;br /&gt;
    Local $filename = $temp &amp;amp; &amp;quot;\move_file_open_dialog.au3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    Local $script = &#039;Global $title = &amp;quot;&#039; &amp;amp; $title &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Global $pos_x = &#039; &amp;amp; $posx &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Global $pos_y = &#039; &amp;amp; $posy &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;AdlibRegister(&amp;quot;_Move&amp;quot;,10)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;while 1&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;    sleep(1000)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;wend&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Func _Move()&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;   if (WinActive($title)) Then&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;      WinMove($title,&amp;quot;&amp;quot;,$pos_x,$pos_y)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;      Exit&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;   EndIf&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;EndFunc&#039; &amp;amp; @CRLF&lt;br /&gt;
&lt;br /&gt;
    FileWrite($filename,$script)&lt;br /&gt;
    ;MsgBox(0,&amp;quot;&amp;quot;,$script &amp;amp; @CRLF &amp;amp; $filename)&lt;br /&gt;
    Run(@AutoItExe &amp;amp; &amp;quot; /AutoIt3ExecuteScript &amp;quot; &amp;amp; $filename)&lt;br /&gt;
    sleep(250)&lt;br /&gt;
    Return $filename&lt;br /&gt;
EndFunc ;==&amp;gt;_MultipleFileOpenDialog()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _OpenFolder ==&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;
#cs&lt;br /&gt;
    These have been declared in Global scope as you may wish to use them elsewhere in your script.&lt;br /&gt;
#ce&lt;br /&gt;
Global $ALTSTARTUP = 0x1d&lt;br /&gt;
Global $APPDATA = 0x1a&lt;br /&gt;
Global $BITBUCKET = 0x0a&lt;br /&gt;
Global $COMMONALTSTARTUP = 0x1e&lt;br /&gt;
Global $COMMONAPPDATA = 0x23&lt;br /&gt;
Global $COMMONDESKTOPDIR = 0x19&lt;br /&gt;
Global $COMMONFAVORITES = 0x1f&lt;br /&gt;
Global $COMMONPROGRAMS = 0x17&lt;br /&gt;
Global $COMMONSTARTMENU = 0x16&lt;br /&gt;
Global $COMMONSTARTUP = 0x18&lt;br /&gt;
Global $CONTROLS = 0x03&lt;br /&gt;
Global $COOKIES = 0x21&lt;br /&gt;
Global $DESKTOP = 0x00&lt;br /&gt;
Global $DESKTOPDIRECTORY = 0x10&lt;br /&gt;
Global $DRIVES = 0x11&lt;br /&gt;
Global $FAVORITES = 0x06&lt;br /&gt;
Global $FONTS = 0x14&lt;br /&gt;
Global $HISTORY = 0x22&lt;br /&gt;
Global $INTERNETCACHE = 0x20&lt;br /&gt;
Global $LOCALAPPDATA = 0x1c&lt;br /&gt;
Global $MYPICTURES = 0x27&lt;br /&gt;
Global $NETHOOD = 0x13&lt;br /&gt;
Global $NETWORK = 0x12&lt;br /&gt;
Global $PERSONAL = 0x05&lt;br /&gt;
Global $PRINTERS = 0x04&lt;br /&gt;
Global $PRINTHOOD = 0x1b&lt;br /&gt;
Global $PROFILE = 0x28&lt;br /&gt;
Global $PROGRAMFILES = 0x26&lt;br /&gt;
Global $PROGRAMFILESx86 = 0x30&lt;br /&gt;
Global $PROGRAMS = 0x02&lt;br /&gt;
Global $RECENT = 0x08&lt;br /&gt;
Global $SENDTO = 0x09&lt;br /&gt;
Global $STARTMENU = 0x0b&lt;br /&gt;
Global $STARTUP = 0x07&lt;br /&gt;
Global $SYSTEM = 0x25&lt;br /&gt;
Global $SYSTEMx86 = 0x29&lt;br /&gt;
Global $TEMPLATES = 0x15&lt;br /&gt;
Global $WINDOWS = 0x24&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_OpenFolder(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_OpenFolder($PRINTERS) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Open a folder or special folder variable, similar to using ShellExecute.&lt;br /&gt;
Func _OpenFolder($sFolderPath)&lt;br /&gt;
    Local $oShell = ObjCreate(&#039;shell.application&#039;)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    $oShell.Open($sFolderPath)&lt;br /&gt;
    Return 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_OpenFolder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _PathAppendToFilename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 31965-progandy&lt;br /&gt;
 | AuthorName = ProgAndy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sOrg = &amp;quot;C:\Some.Folder\some.file.ext&amp;quot;&lt;br /&gt;
$sAdd = &amp;quot;_backup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$sNew = _PathAppendToFilename($sOrg, $sAdd)&lt;br /&gt;
&lt;br /&gt;
$sStripped = _PathStripRightFromFilename($sNew, $sAdd)&lt;br /&gt;
&lt;br /&gt;
MsgBox(0, &amp;quot;&amp;quot;, $sOrg &amp;amp; @CRLF &amp;amp; $sAdd &amp;amp; @CRLF &amp;amp; $sNew &amp;amp; @CRLF &amp;amp; $sStripped)&lt;br /&gt;
&lt;br /&gt;
Func _PathAppendToFilename($sName, $sAppend)&lt;br /&gt;
    ; Author: ProgAndy&lt;br /&gt;
    If StringRegExp($sAppend, &#039;[\/\\:\?&amp;quot;&amp;lt;&amp;gt;\|\*]&#039;) Then Return SetError(1, 0, $sName)&lt;br /&gt;
    Return StringRegExpReplace($sName, &amp;quot;(\.[^\\/\.]+)$&amp;quot;, $sAppend &amp;amp; &amp;quot;\1&amp;quot;, 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;
== _PathStripRightFromFilename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 31965-progandy&lt;br /&gt;
 | AuthorName = ProgAndy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func _PathStripRightFromFilename($sName, $sStrip)&lt;br /&gt;
    ; Author: ProgAndy&lt;br /&gt;
    If StringRegExp($sStrip, &#039;[\/\\:\?&amp;quot;&amp;lt;&amp;gt;\|\*]&#039;) Then Return SetError(1, 0, $sName)&lt;br /&gt;
    Return StringRegExpReplace($sName, &amp;quot;\Q&amp;quot; &amp;amp; $sStrip &amp;amp; &amp;quot;\E(\.[^\\/\.]+)$&amp;quot;, &amp;quot;\1&amp;quot;, 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;
== _SelfDelete ==&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;
; This also removes the directory which the file is in&lt;br /&gt;
; Author MHz with the directory delete addition by The Kandie Man&lt;br /&gt;
Func _SelfDelete($iDelay = 0)&lt;br /&gt;
    Local $sCmdFile&lt;br /&gt;
    FileDelete(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;)&lt;br /&gt;
    $sCmdFile = &#039;ping -n &#039; &amp;amp; $iDelay &amp;amp; &#039;127.0.0.1 &amp;gt; nul&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;:loop&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;del &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot; goto loop&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;:loop2&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;rmdir /q &amp;quot;&#039; &amp;amp; $dirToDelete &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; $dirToDelete &amp;amp; &#039;&amp;quot; goto loop2&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;del &#039; &amp;amp; @TempDir &amp;amp; &#039;\scratch.bat&#039;&lt;br /&gt;
    FileWrite(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;, $sCmdFile)&lt;br /&gt;
    Run(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;, @TempDir, @SW_HIDE)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ShellExecuteFileSelectFolder ==&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(_ShellExecuteFileSelectFolder(&#039;Select a Folder&#039;, @HomeDrive) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Shell Execute a selected folder.&lt;br /&gt;
Func _ShellExecuteFileSelectFolder($sText, $sRoot, $iFlag = 0, $sInitialDir = &#039;&#039;, $hWnd = &#039;&#039;)&lt;br /&gt;
    Local $sFolder = FileSelectFolder($sText, $sRoot, $iFlag, $sInitialDir, $hWnd)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(@error, @extended, &#039;&#039;)&lt;br /&gt;
    EndIf&lt;br /&gt;
    ShellExecute($sFolder)&lt;br /&gt;
    Return $sFolder&lt;br /&gt;
EndFunc   ;==&amp;gt;_ShellExecuteFileSelectFolder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SuiCide ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 28010-larrydalooza&lt;br /&gt;
 | AuthorName = LarryDalooza&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; IMPORTANT MAKE A COPY OF SCRIPT BEFORE DELETION&lt;br /&gt;
; Deletes the running script&lt;br /&gt;
&lt;br /&gt;
Func SuiCide()&lt;br /&gt;
	Local $sFilePath = @TempDir &amp;amp; &#039;\SuiCide.bat&#039;&lt;br /&gt;
	FileDelete($sFilePath)&lt;br /&gt;
	FileWrite($sFilePath, &#039;loop:&#039; &amp;amp; @CRLF &amp;amp; &#039;del &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
			&#039;ping -n 1 -w 250 zxywqxz_q&#039; &amp;amp; @CRLF &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; _&lt;br /&gt;
			&#039;&amp;quot; goto loop&#039; &amp;amp; @CRLF &amp;amp; &#039;del SuiCide.bat&#039; &amp;amp; @CRLF)&lt;br /&gt;
	Exit Run($sFilePath, @TempDir, @SW_HIDE)&lt;br /&gt;
EndFunc   ;==&amp;gt;SuiCide&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _UniqueFilename ==&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;
&lt;br /&gt;
ConsoleWrite(_UniqueFilename(@ScriptDir, &#039;.au3&#039;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _UniqueFilename($sFilePath, $sExtension)&lt;br /&gt;
    Local $iRandom = 0, $sUnqiueFileName = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    $sExtension = &#039;.&#039; &amp;amp; StringRegExpReplace($sExtension, &#039;\A[\.]+&#039;, &#039;&#039;)&lt;br /&gt;
    $sFilePath = StringRegExpReplace($sFilePath, &#039;[\\/]+\z&#039;, &#039;&#039;) &amp;amp; &#039;\&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $iRandom = Random(55, 116, 1)&lt;br /&gt;
        $sUnqiueFileName &amp;amp;= Chr($iRandom + 6 * ($iRandom &amp;gt; 90) - 7 * ($iRandom &amp;lt; 65))&lt;br /&gt;
        If FileExists($sFilePath &amp;amp; $sUnqiueFileName &amp;amp; $sExtension) = 0 And StringLen($sUnqiueFileName) &amp;gt; 7 Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return $sFilePath &amp;amp; $sUnqiueFileName &amp;amp; $sExtension&lt;br /&gt;
EndFunc   ;==&amp;gt;_UniqueFilename&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Windows - Copy With Progress ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 19-jos&lt;br /&gt;
 | AuthorName = Jos&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Windows - Copy With Progress&lt;br /&gt;
&lt;br /&gt;
;~ 4 Do not display a progress dialog box.&lt;br /&gt;
;~ 8 Give the file being operated on a new name in a move, copy, or rename operation if a file with the target name already exists.&lt;br /&gt;
;~ 16 Respond with &amp;quot;Yes to All&amp;quot; for any dialog box that is displayed.&lt;br /&gt;
;~ 64 Preserve undo information, if possible.&lt;br /&gt;
;~ 128 Perform the operation on files only if a wildcard file name (*.*) is specified.&lt;br /&gt;
;~ 256 Display a progress dialog box but do not show the file names.&lt;br /&gt;
;~ 512 Do not confirm the creation of a new directory if the operation requires one to be created.&lt;br /&gt;
;~ 1024 Do not display a user interface if an error occurs.&lt;br /&gt;
;~ 2048 Version 4.71. Do not copy the security attributes of the file.&lt;br /&gt;
;~ 4096 Only operate in the local directory. Don&#039;t operate recursively into subdirectories.&lt;br /&gt;
;~ 8192 Version 5.0. Do not copy connected files as a group. Only copy the specified files.&lt;br /&gt;
&lt;br /&gt;
_FileCopy(&amp;quot;C:\Installed Apps\Patches\WindowsXP-KB835935-SP2-ENU.exe&amp;quot;,&amp;quot;C:\temp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
; to copy a directory the destination directory must exist&lt;br /&gt;
&lt;br /&gt;
Func _FileCopy($fromFile,$tofile)&lt;br /&gt;
    Local $FOF_RESPOND_YES = 16&lt;br /&gt;
    Local $FOF_SIMPLEPROGRESS = 256&lt;br /&gt;
    $winShell = ObjCreate(&amp;quot;shell.application&amp;quot;)&lt;br /&gt;
    $winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>JohnOne</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Files_%26_Folders_)&amp;diff=12311</id>
		<title>Snippets ( Files &amp; Folders )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Files_%26_Folders_)&amp;diff=12311"/>
		<updated>2014-03-01T20:35:11Z</updated>

		<summary type="html">&lt;p&gt;JohnOne: /* _FileRename */&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;
== _ConvertFileToUTF16 ==&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;
_ConvertFileToUTF16(@ScriptDir &amp;amp; &amp;quot;\Example.xml&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ConvertFileToUTF16($sFilePath)&lt;br /&gt;
    Local $iEncoding = FileGetEncoding($sFilePath)&lt;br /&gt;
    Local $hFileOpen = FileOpen($sFilePath, $iEncoding)&lt;br /&gt;
    If $hFileOpen = -1 Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Local $sData = FileRead($hFileOpen)&lt;br /&gt;
    FileClose($hFileOpen)&lt;br /&gt;
&lt;br /&gt;
    $hFileOpen = FileOpen($sFilePath, 2 + 32)&lt;br /&gt;
    If $hFileOpen = -1 Then&lt;br /&gt;
        Return SetError(2, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    FileWrite($hFileOpen, $sData)&lt;br /&gt;
    Return FileClose($hFileOpen)&lt;br /&gt;
EndFunc   ;==&amp;gt;_ConvertFileToUTF16&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== DropFiles ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
 | Desc = Dropping multiple files onto a GUI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Dropping multiple files onto a GUI&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;APIConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $__aDropFiles&lt;br /&gt;
&lt;br /&gt;
Example()&lt;br /&gt;
&lt;br /&gt;
Func Example()&lt;br /&gt;
	Local $hGUI = GUICreate(&#039;&#039;, 500, 500, -1, -1, -1, $WS_EX_ACCEPTFILES)&lt;br /&gt;
&lt;br /&gt;
	; Create a label that is transparent which will accept &#039;drop&#039; events.&lt;br /&gt;
	GUICtrlCreateLabel(&amp;quot;&amp;quot;, 0, 0, 500, 500)&lt;br /&gt;
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
	GUICtrlSetResizing(-1, $GUI_DOCKALL)&lt;br /&gt;
	GUICtrlSetState(-1, $GUI_DROPACCEPTED)&lt;br /&gt;
&lt;br /&gt;
	GUIRegisterMsg($WM_DROPFILES, &amp;quot;WM_DROPFILES&amp;quot;)&lt;br /&gt;
	GUISetState(@SW_SHOW, $hGUI)&lt;br /&gt;
&lt;br /&gt;
	While 1&lt;br /&gt;
		Switch GUIGetMsg()&lt;br /&gt;
			Case $GUI_EVENT_CLOSE&lt;br /&gt;
				ExitLoop&lt;br /&gt;
&lt;br /&gt;
			Case $GUI_EVENT_DROPPED&lt;br /&gt;
				If $__aDropFiles[0] &amp;gt; 0 Then&lt;br /&gt;
					_ArrayDisplay($__aDropFiles)&lt;br /&gt;
				EndIf&lt;br /&gt;
&lt;br /&gt;
		EndSwitch&lt;br /&gt;
	WEnd&lt;br /&gt;
	GUIDelete($hGUI)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example&lt;br /&gt;
&lt;br /&gt;
Func WM_DROPFILES($hWnd, $iMsg, $iwParam, $ilParam)&lt;br /&gt;
	#forceref $hWnd, $ilParam&lt;br /&gt;
	Switch $iMsg&lt;br /&gt;
		Case $WM_DROPFILES&lt;br /&gt;
			Local $aReturn = _WinAPI_DragQueryFileEx($iwParam)&lt;br /&gt;
			If IsArray($aReturn) Then&lt;br /&gt;
				Local $aError[1] = [0]&lt;br /&gt;
				$__aDropFiles = $aReturn&lt;br /&gt;
			Else&lt;br /&gt;
				$__aDropFiles = $aError&lt;br /&gt;
			EndIf&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Return $GUI_RUNDEFMSG&lt;br /&gt;
EndFunc   ;==&amp;gt;WM_DROPFILES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ExitCheckTextChange ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 8007-negativenrg&lt;br /&gt;
 | AuthorName = NegativeNrG&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Check(when Exit), if Text is not equal to $e_to Then, prompt the user to save or not save.&lt;br /&gt;
;_ExitCheckText Change $Edit Handle, $title of messagebox, $message of messagebox, $equal to(default = NULL).&lt;br /&gt;
&lt;br /&gt;
Func _ExitCheckTextChange($E_hnd,$title,$message,$e_to = &#039;&#039;)&lt;br /&gt;
	Local $buffer, $choice, $filetosave, $handle1&lt;br /&gt;
                $buffer = GUIctrlread($E_hnd)&lt;br /&gt;
        If $buffer &amp;lt;&amp;gt; $e_to Then&lt;br /&gt;
            $choice = Msgbox(4,$title,$message)&lt;br /&gt;
            If $choice = 6 Then&lt;br /&gt;
                $filetosave = FileSaveDialog(&#039;Choose File&#039;,@scriptdir,&#039;(*.au3)&#039;)&lt;br /&gt;
                $handle1 = FileOpen($filetosave,2)&lt;br /&gt;
                FileWrite($handle1,$buffer)&lt;br /&gt;
                Exit&lt;br /&gt;
            Elseif $choice &amp;lt;&amp;gt; 6 Then&lt;br /&gt;
            Exit&lt;br /&gt;
        EndIf&lt;br /&gt;
        Else&lt;br /&gt;
        Exit&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;
== _FileDeleteEx ==&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;
; Ref: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;APIConstants.au3&amp;gt; ; Included with WinAPIEx.au3&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt; ; Download From http://www.autoitscript.com/forum/topic/98712-winapiex-udf/ by Yashied.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_FileDeleteEx(&amp;quot;C:\Example.dat&amp;quot;) &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _FileDeleteEx($sFilePath)&lt;br /&gt;
    Local $iReturn = FileDelete($sFilePath)&lt;br /&gt;
    If $iReturn Then&lt;br /&gt;
        Return $iReturn&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return _WinAPI_MoveFileEx(FileGetShortName($sFilePath), &amp;quot;&amp;quot;, $MOVE_FILE_DELAY_UNTIL_REBOOT)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileDeleteEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileCheck ==&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;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Check if the file was modified less than 24 hours ago.&lt;br /&gt;
ConsoleWrite( _FileCheck(@ScriptFullPath, 24) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _FileCheck($sFilePath, $iHours = 24)&lt;br /&gt;
    Local $aTime&lt;br /&gt;
    If FileExists($sFilePath) = 0 Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aTime = FileGetTime($sFilePath, 0, 0)&lt;br /&gt;
    Return Number(_DateDiff(&amp;quot;h&amp;quot;, $aTime[0] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aTime[1] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aTime[2] &amp;amp; &amp;quot; &amp;quot; &amp;amp; $aTime[3] &amp;amp; &amp;quot;:&amp;quot; &amp;amp; $aTime[4] &amp;amp; &amp;quot;:&amp;quot; &amp;amp; $aTime[5], @YEAR &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MON &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MDAY &amp;amp; &amp;quot; &amp;quot; &amp;amp; @HOUR &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @MIN &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @SEC) &amp;lt; $iHours)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileCheck&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileCreateEx ==&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;
_FileCreateEx(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;, 42)&lt;br /&gt;
&lt;br /&gt;
; Create a blank file with a certain size in bytes.&lt;br /&gt;
Func _FileCreateEx($sFilePath, $iBytes = 0)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c fsutil file createnew &amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot; &#039; &amp;amp; Int($iBytes), @WorkingDir, @SW_HIDE)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileCreateEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileID ==&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;
FileClose(FileOpen(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;, 2))&lt;br /&gt;
ConsoleWrite(_FileID(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;) &amp;amp; @CRLF)&lt;br /&gt;
FileDelete(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;)&lt;br /&gt;
&lt;br /&gt;
; Rerieve the file id of a filepath.&lt;br /&gt;
Func _FileID($sFilePath)&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c fsutil file queryfileid &amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot;&#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 StringStripWS(StringRegExpReplace($sReturn, &#039;File\sID\sis\s(.*?)&#039;, &#039;$1&#039;), 8)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileExistsWithQuotes ==&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(_FileExistsWithQuotes(&#039;&amp;quot;&#039; &amp;amp; @ScriptDir &amp;amp; &#039;&amp;quot;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_FileExistsWithQuotes(&amp;quot;&#039;&amp;quot; &amp;amp; @ScriptDir &amp;amp; &amp;quot;&#039;&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_FileExistsWithQuotes(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Version: 1.00. AutoIt: V3.3.8.1&lt;br /&gt;
; Check a filepath ecists even if the path contains quotation marks.&lt;br /&gt;
Func _FileExistsWithQuotes($sFilePath)&lt;br /&gt;
    Return FileExists(StringRegExpReplace($sFilePath, &#039;^(&amp;quot;|&#039;&#039;)*([^&amp;quot;&#039;&#039;]+)(&amp;quot;|&#039;&#039;)*$&#039;, &#039;\2&#039;))&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileExistsWithQuotes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== FileLineCount ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 71214-mkish&lt;br /&gt;
 | AuthorName = MKISH&lt;br /&gt;
 | Desc = Checks the number of lines in a file (useful for larger files as well)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Author - MKISH&lt;br /&gt;
&lt;br /&gt;
; Checks the number of lines in a file (useful for larger files as well)&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WinAPI.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local $FILE = &amp;quot;G:\WIN7\sources\boot.wim&amp;quot;&lt;br /&gt;
Local $COUNT = 0&lt;br /&gt;
Local $start = default&lt;br /&gt;
Local $res, $fLen, $err&lt;br /&gt;
&lt;br /&gt;
While 1&lt;br /&gt;
	$res = _HexSearch($FILE, StringToBinary(&amp;quot;&amp;quot; &amp;amp; @crlf), $start)&lt;br /&gt;
	$start = $res + 2&lt;br /&gt;
	$COUNT = $COUNT + 1&lt;br /&gt;
	If $res = -1 then exitloop&lt;br /&gt;
Wend&lt;br /&gt;
&lt;br /&gt;
msgbox(64, &amp;quot;&amp;quot;, &amp;quot;Lines count: &amp;quot; &amp;amp; $COUNT)&lt;br /&gt;
&lt;br /&gt;
; _HexSearch function (originally written by Zinthose, modified by MKISH)&lt;br /&gt;
Func _HexSearch($FilePath, $BinaryValue, $StartOffset = Default)&lt;br /&gt;
        Local $Buffer, $ptr, $hFile, $Result, $Read, $SearchValue, $Pos, $BufferSize = 2048&lt;br /&gt;
            If $StartOffset = Default     Then $StartOffset = 0&lt;br /&gt;
            If Not FileExists($FilePath)    Then    Return SetError(1, @error, 0)&lt;br /&gt;
            $fLen = FileGetSize($FilePath)&lt;br /&gt;
            If $StartOffset &amp;gt; $fLen   Then   Return SetError(2, @error, 0)&lt;br /&gt;
            If Not IsBinary($BinaryValue)   Then    Return SetError(3, @error, 0)&lt;br /&gt;
            If Not IsNumber($StartOffset)   Then    Return SetError(4, @error, 0)&lt;br /&gt;
            $SearchValue = BinaryToString($BinaryValue)&lt;br /&gt;
            $Buffer = DllStructCreate(&amp;quot;byte[&amp;quot; &amp;amp; $BufferSize &amp;amp; &amp;quot;]&amp;quot;)&lt;br /&gt;
            $ptr = DllStructGetPtr($Buffer)&lt;br /&gt;
                $hFile = _WinAPI_CreateFile($FilePath, 2, 2, 1)&lt;br /&gt;
                If $hFile = 0 Then Return SetError(5, @error, 0)&lt;br /&gt;
            $Result = _WinAPI_SetFilePointer($hFile, $StartOffset)&lt;br /&gt;
            $err = @error&lt;br /&gt;
            If $Result = 0xFFFFFFFF Then&lt;br /&gt;
                _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                Return SetError(5, $err, 0)&lt;br /&gt;
            EndIf&lt;br /&gt;
            $Pos = $StartOffset&lt;br /&gt;
            While True&lt;br /&gt;
                    $Read = 0&lt;br /&gt;
                    $Result = _WinAPI_ReadFile($hFile, $ptr, $BufferSize, $Read)&lt;br /&gt;
                    $err = @error&lt;br /&gt;
                    If Not $Result Then&lt;br /&gt;
                        _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                        Return SetError(6, $err, 0)&lt;br /&gt;
                    EndIf&lt;br /&gt;
                    $Result = DllStructGetData($Buffer, 1)&lt;br /&gt;
                    $Result = BinaryToString($Result)&lt;br /&gt;
                    $Result = StringInStr($Result, $SearchValue)&lt;br /&gt;
                    If $Result &amp;gt; 0 Then ExitLoop&lt;br /&gt;
                    If $Read &amp;lt; $BufferSize Then&lt;br /&gt;
                        _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                        Return -1&lt;br /&gt;
                    EndIf&lt;br /&gt;
                    $Pos += $Read&lt;br /&gt;
&lt;br /&gt;
            WEnd&lt;br /&gt;
            _WinAPI_CloseHandle($hFile)&lt;br /&gt;
            If Not $Result Then Return SetError(7, @error, 0)&lt;br /&gt;
            $Result = $Pos + $Result - 1&lt;br /&gt;
            Return $Result&lt;br /&gt;
    EndFunc; ==&amp;gt; _HexSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileOpenDialog ==&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;
Local $sFilePath = _FileOpenDialog(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Images (*.jpg;*.bmp)|Videos (*.avi;*.mpg)&amp;quot;, Random(1, @DesktopWidth, 1), Random(1, @DesktopHeight, 1), 1 + 4, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;File = &#039; &amp;amp; $sFilePath &amp;amp; &#039;, @error = &#039; &amp;amp; @error &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _FileOpenDialog&lt;br /&gt;
; Description ...: Initiates a Open File Dialog with the option to set the position of the GUI.&lt;br /&gt;
; Syntax ........: _FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter[, $iLeft = -1[, $iTop = -1[, $iOptions = 0[,&lt;br /&gt;
;                  $sDefaultName = &amp;quot;&amp;quot;]]]])&lt;br /&gt;
; Parameters ....: $sTitle              - Title text of the Dialog GUI.&lt;br /&gt;
;                  $sIntitialDirectory  - Initial directory selected in the GUI file tree.&lt;br /&gt;
;                  $sFilter             - File type single filter such as &amp;quot;All (*.*)&amp;quot; or &amp;quot;Text files (*.txt)&amp;quot;.&lt;br /&gt;
;                  $iLeft               - [optional] The left side of the dialog box. By default (-1), the window is centered.&lt;br /&gt;
;                  $iTop                - [optional] The top of the dialog box. Default (-1) is centered&lt;br /&gt;
;                  $iOptions            - [optional] Dialog Options: To use more than one option, add the required values together. See FileOpenDialog. Default is 0.&lt;br /&gt;
;                  $sDefaultName        - [optional] Suggested file name for the user to open. Default is blank (&amp;quot;&amp;quot;).&lt;br /&gt;
; Return values .: Success: Returns the full path of the file(s) chosen. Results for multiple selections are &amp;quot;Directory|file1|file2|...&amp;quot;&lt;br /&gt;
;                  Failure: Sets @error to non-zero.&lt;br /&gt;
; Author ........: guinness&lt;br /&gt;
; Remarks........: This doesn&#039;t change the working directory of the script like FileOpenDialog does.&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter, $iLeft = -1, $iTop = -1, $iOptions = 0, $sDefaultName = &amp;quot;&amp;quot;)&lt;br /&gt;
    Local $hGUI = GUICreate(&#039;&#039;, -1, -1, $iLeft, $iTop), $sWorkingDir = @WorkingDir&lt;br /&gt;
    Local $sFilePath = FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter, $iOptions, $sDefaultName, $hGUI)&lt;br /&gt;
    Local $iError = @error&lt;br /&gt;
    FileChangeDir($sWorkingDir)&lt;br /&gt;
    Return SetError($iError, GUIDelete($hGUI), $sFilePath)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileOpenDialog()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileRename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 52374-johnone&lt;br /&gt;
 | AuthorName = JohnOne&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;### Rename a file ###&lt;br /&gt;
;$sFile = Full path to file&lt;br /&gt;
;$sRename = New Filename&lt;br /&gt;
;$iOverWrite = 0 or 1&lt;br /&gt;
&lt;br /&gt;
;Success returns 1&lt;br /&gt;
;failure, returns 0 and sets @error&lt;br /&gt;
; 1 if FileMove fails, &lt;br /&gt;
; 2 if $sFile does not exist&lt;br /&gt;
;@extended&lt;br /&gt;
; 0 if the new file does not already exist / existed&lt;br /&gt;
; 1 if the new file already exists / existed&lt;br /&gt;
&lt;br /&gt;
;#### Example ####&lt;br /&gt;
$File = @ScriptDir &amp;amp; &#039;\filetorename.txt&#039;&lt;br /&gt;
FileWrite($File, &#039;Test&#039;)&lt;br /&gt;
_FileRename($File, &#039;newname.txt&#039;)&lt;br /&gt;
If @error Then MsgBox(0, &amp;quot;Error&amp;quot;, @error)&lt;br /&gt;
&lt;br /&gt;
Func _FileRename($sFile, $sRename, $iOverWrite = 0)&lt;br /&gt;
    Local Const $FILENOTEXIST = 2&lt;br /&gt;
    If Not FileExists($sFile) Then Return SetError($FILENOTEXIST, 0, 0)&lt;br /&gt;
    Local $_StringLen = StringLen($sFile)&lt;br /&gt;
    Local $_StringInStr = StringInStr($sFile, &amp;quot;\&amp;quot;, 0, -1, $_StringLen)&lt;br /&gt;
    Local $_Count = $_StringLen - $_StringInStr&lt;br /&gt;
    Local $_Dir = StringLeft($sFile, $_StringInStr)&lt;br /&gt;
    Local $_NewFile = $_Dir &amp;amp; $sRename&lt;br /&gt;
    Local $_NewFileExists = FileExists($_NewFile)&lt;br /&gt;
    Local $_FileMove = FileMove($sFile, $_NewFile, $iOverWrite)&lt;br /&gt;
    Return SetError(Not $_FileMove, $_NewFileExists, $_FileMove)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileRename&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;FileRename(PathFile, RenameFile&lt;br /&gt;
FileRename(@ScriptDir &amp;amp; &amp;quot;\rename.txt&amp;quot;, @ScriptDir &amp;amp; &amp;quot;\renamed.txt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func FileRename($FileName, $ReName)&lt;br /&gt;
&lt;br /&gt;
	Local $SHFILEOPSTRUCT, $SourceStruct, $DestStruct&lt;br /&gt;
	Local Const $FO_RENAME = 0x0004&lt;br /&gt;
	Local Const $FOF_SILENT = 0x0004&lt;br /&gt;
	Local Const $FOF_NOCONFIRMATION = 0x0010&lt;br /&gt;
	Local Const $FOF_NOERRORUI = 0x0400&lt;br /&gt;
	Local Const $FOF_NOCONFIRMMKDIR = 0x0200&lt;br /&gt;
	Local Const $NULL = 0&lt;br /&gt;
&lt;br /&gt;
	$SourceStruct = _StringToStruct($FileName)&lt;br /&gt;
	$DestStruct = _StringToStruct($ReName)&lt;br /&gt;
&lt;br /&gt;
	$SHFILEOPSTRUCT = DllStructCreate(&amp;quot;hwnd hWnd;uint wFunc;ptr pFrom;ptr pTo;int fFlags;int fAnyOperationsAborted;ptr hNameMappings;ptr lpszProgressTitle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;hWnd&amp;quot;, $NULL)&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;wFunc&amp;quot;, $FO_RENAME)&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;pFrom&amp;quot;, DllStructGetPtr($SourceStruct))&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;pTo&amp;quot;, DllStructGetPtr($DestStruct))&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;fFlags&amp;quot;, BitOR($FOF_SILENT, $FOF_NOCONFIRMATION, $FOF_NOERRORUI, $FOF_NOCONFIRMMKDIR))&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;fAnyOperationsAborted&amp;quot;, $NULL)&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;hNameMappings&amp;quot;, $NULL)&lt;br /&gt;
	DllStructSetData($SHFILEOPSTRUCT, &amp;quot;lpszProgressTitle&amp;quot;, $NULL)&lt;br /&gt;
&lt;br /&gt;
	$acall = DllCall(&amp;quot;shell32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;SHFileOperation&amp;quot;, &amp;quot;ptr&amp;quot;, DllStructGetPtr($SHFILEOPSTRUCT))&lt;br /&gt;
	If @error Then&lt;br /&gt;
		Return SetError(@error, @extended, 0)&lt;br /&gt;
	EndIf&lt;br /&gt;
	Return 1&lt;br /&gt;
EndFunc   ;==&amp;gt;FileRename&lt;br /&gt;
&lt;br /&gt;
Func _StringToStruct($string)&lt;br /&gt;
&lt;br /&gt;
	Local $iLen = StringLen($string)&lt;br /&gt;
	Local $Struct = DllStructCreate(&amp;quot;char[&amp;quot; &amp;amp; String($iLen + 2) &amp;amp; &amp;quot;]&amp;quot;)&lt;br /&gt;
	DllStructSetData($Struct, 1, $string)&lt;br /&gt;
	DllStructSetData($Struct, 1, 0, $iLen + 1)&lt;br /&gt;
	DllStructSetData($Struct, 1, 0, $iLen + 2)&lt;br /&gt;
&lt;br /&gt;
	Return $Struct&lt;br /&gt;
EndFunc   ;==&amp;gt;_StringToStruct&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetFolderDepth ==&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;
; Autoit 3.3.5.4 and Below&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir &amp;amp; &#039;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptFullPath) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the folder depth of a filepath.&lt;br /&gt;
Func _GetFolderDepth($sFilePath)&lt;br /&gt;
    If StringInStr($sFilePath, &#039;.&#039;, 2, -1) Then&lt;br /&gt;
        $sFilePath = StringLeft($sFilePath, StringInStr($sFilePath, &amp;quot;&amp;quot;, 2, -1) - 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Local $aArray = StringSplit(StringRegExpReplace($sFilePath, &#039;[/]+z&#039;, &#039;&#039;), &#039;&#039;)&lt;br /&gt;
    Return $aArray[0] - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetFolderDepth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetFolderDepth ==&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;
; Autoit 3.3.5.4 and Above&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir &amp;amp; &#039;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptFullPath) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the folder depth of a filepath. Works with V3.3.5.4+&lt;br /&gt;
Func _GetFolderDepth($sFilePath)&lt;br /&gt;
    If StringInStr($sFilePath, &#039;.&#039;, 2, -1) Then&lt;br /&gt;
        $sFilePath = StringLeft($sFilePath, StringInStr($sFilePath, &amp;quot;&amp;quot;, 2, -1) - 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return StringSplit(StringRegExpReplace($sFilePath, &#039;[/]+z&#039;, &#039;&#039;), &#039;&#039;)[0] - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetFolderDepth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsDir ==&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;IsDir: Using a file - &amp;quot; &amp;amp; IsDir(@ScriptFullPath) &amp;amp; @CRLF) ; Return 0&lt;br /&gt;
ConsoleWrite(&amp;quot;IsFile: Using a file - &amp;quot; &amp;amp; IsFile(@ScriptFullPath) &amp;amp; @CRLF) ; Return 1&lt;br /&gt;
ConsoleWrite(&amp;quot;IsDir: Using a directory - &amp;quot; &amp;amp; IsDir(@ScriptDir) &amp;amp; @CRLF) ; Return 1&lt;br /&gt;
ConsoleWrite(&amp;quot;IsFile: Using a directory - &amp;quot; &amp;amp; IsFile(@ScriptDir) &amp;amp; @CRLF) ; Return 0&lt;br /&gt;
&lt;br /&gt;
Func IsDir($sFilePath)&lt;br /&gt;
    Return Number(FileExists($sFilePath) And StringInStr(FileGetAttrib($sFilePath), &amp;quot;D&amp;quot;, 2, 1) &amp;gt; 0)&lt;br /&gt;
EndFunc   ;==&amp;gt;IsDir&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFile ==&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;
Func IsFile($sFilePath)&lt;br /&gt;
    Return Number(FileExists($sFilePath) And StringInStr(FileGetAttrib($sFilePath), &amp;quot;D&amp;quot;, 2, 1) = 0)&lt;br /&gt;
EndFunc   ;==&amp;gt;IsFile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileDiff ==&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(_IsFileDiff(@ScriptFullPath, @ScriptFullPath) &amp;amp; @CRLF) ; This will return False as the files are exactly the same.&lt;br /&gt;
ConsoleWrite(_IsFileDiff(@ScriptFullPath, @AutoItExe) &amp;amp; @CRLF) ; This will return True as the files are different.&lt;br /&gt;
&lt;br /&gt;
; Check if a file is different.&lt;br /&gt;
Func _IsFileDiff($sFilePath_1, $sFilePath_2)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c FC /B /W &amp;quot;&#039; &amp;amp; $sFilePath_1 &amp;amp; &#039;&amp;quot; &amp;quot;&#039; &amp;amp; $sFilePath_2 &amp;amp; &#039;&amp;quot;&#039;, @WorkingDir, @SW_HIDE) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileDiff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileOlder ==&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;Date.au3&amp;gt; ; Required for _DateDiff()&lt;br /&gt;
&lt;br /&gt;
; Check if the current script is older than 10 days.&lt;br /&gt;
If _IsFileOlder(@ScriptFullPath, 10) Then&lt;br /&gt;
	MsgBox(4096, &#039;&#039;, &#039;File is older than 10 days.&#039;)&lt;br /&gt;
Else&lt;br /&gt;
	MsgBox(4096, &#039;&#039;, &#039;File isn&#039;&#039;t older than 10 days.&#039;)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; Is a file older than a certain number of days.&lt;br /&gt;
Func _IsFileOlder($sFilePath, $iDays)&lt;br /&gt;
	Local $aArray = FileGetTime($sFilePath, 0)&lt;br /&gt;
	Return _DateDiff(&#039;D&#039;, $aArray[0] &amp;amp; &#039;/&#039; &amp;amp; $aArray[1] &amp;amp; &#039;/&#039; &amp;amp; $aArray[2] &amp;amp; &#039; &#039; &amp;amp; $aArray[3] &amp;amp; &#039;:&#039; &amp;amp; $aArray[4] &amp;amp; &#039;:&#039; &amp;amp; $aArray[5], @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) &amp;gt;= $iDays&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileOlder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileSame ==&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(_IsFileSame(@ScriptFullPath, @ScriptFullPath) &amp;amp; @CRLF) ; This will return True as the files are exactly the same.&lt;br /&gt;
ConsoleWrite(_IsFileSame(@ScriptFullPath, @AutoItExe) &amp;amp; @CRLF) ; This will return False as the files are different.&lt;br /&gt;
&lt;br /&gt;
; Check if a file is the same.&lt;br /&gt;
Func _IsFileSame($sFilePath_1, $sFilePath_2)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c FC /B /W &amp;quot;&#039; &amp;amp; $sFilePath_1 &amp;amp; &#039;&amp;quot; &amp;quot;&#039; &amp;amp; $sFilePath_2 &amp;amp; &#039;&amp;quot;&#039;, @WorkingDir, @SW_HIDE) = 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileSame&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IniReadFile ==&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;
__INIFileFill(@ScriptDir &amp;amp; &#039;\Example.ini&#039;) ; Create an INI file with random data.&lt;br /&gt;
&lt;br /&gt;
Local $aArray = _IniReadFile(@ScriptDir &amp;amp; &#039;\Example.ini&#039;)&lt;br /&gt;
FileDelete(@ScriptDir &amp;amp; &#039;\Example.ini&#039;)&lt;br /&gt;
_ArrayDisplay($aArray)&lt;br /&gt;
&lt;br /&gt;
Func _IniReadFile($sFilePath)&lt;br /&gt;
    Local $aReturn[1][3] = [[0, 3]], $aSectionArray, $aSectionNameArray, $iCount = 0&lt;br /&gt;
    $aSectionNameArray = IniReadSectionNames($sFilePath)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, $aReturn)&lt;br /&gt;
    EndIf&lt;br /&gt;
    For $A = 1 To $aSectionNameArray[0]&lt;br /&gt;
        $aSectionArray = IniReadSection($sFilePath, $aSectionNameArray[$A])&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ContinueLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
        For $B = 1 To $aSectionArray[0][0]&lt;br /&gt;
            $aReturn[0][0] += 1&lt;br /&gt;
            $iCount += 1&lt;br /&gt;
            If $aReturn[0][0] &amp;lt;= $iCount + 1 Then&lt;br /&gt;
                ReDim $aReturn[$aReturn[0][0] * 2][$aReturn[0][1]]&lt;br /&gt;
            EndIf&lt;br /&gt;
            $aReturn[$iCount][0] = $aSectionArray[$B][0]&lt;br /&gt;
            $aReturn[$iCount][1] = $aSectionArray[$B][1]&lt;br /&gt;
            $aReturn[$iCount][2] = $aSectionNameArray[$A]&lt;br /&gt;
        Next&lt;br /&gt;
    Next&lt;br /&gt;
    ReDim $aReturn[$aReturn[0][0] + 1][$aReturn[0][1]] ; Remove empty entries.&lt;br /&gt;
    Return $aReturn&lt;br /&gt;
EndFunc   ;==&amp;gt;_IniReadFile&lt;br /&gt;
&lt;br /&gt;
Func __INIFileFill($sFilePath)&lt;br /&gt;
    Local $sData = &#039;&#039;, $sHeader = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To Random(1, 5, 1)&lt;br /&gt;
        $sHeader = _RandomText(Random(5, 25, 1))&lt;br /&gt;
        $sData = &amp;quot;&amp;quot;&lt;br /&gt;
        For $j = 1 To Random(1, 25, 1)&lt;br /&gt;
            $sData &amp;amp;= _RandomText(Random(5, 25, 1)) &amp;amp; &#039;=&#039; &amp;amp; _RandomText(Random(5, 25, 1)) &amp;amp; @LF&lt;br /&gt;
        Next&lt;br /&gt;
        IniWriteSection($sFilePath, $sHeader, $sData)&lt;br /&gt;
    Next&lt;br /&gt;
EndFunc   ;==&amp;gt;__FillINIFile&lt;br /&gt;
&lt;br /&gt;
Func _RandomText($iLength = 10)&lt;br /&gt;
    Local $sData = &#039;&#039;, $sRandom = &#039;&#039;&lt;br /&gt;
    For $i = 1 To $iLength&lt;br /&gt;
        $sRandom = Random(55, 116, 1)&lt;br /&gt;
        $sData &amp;amp;= Chr($sRandom + 6 * ($sRandom &amp;gt; 90) - 7 * ($sRandom &amp;lt; 65))&lt;br /&gt;
    Next&lt;br /&gt;
    Return $sData&lt;br /&gt;
EndFunc   ;==&amp;gt;_RandomText&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IniReadInit ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 9370-mlowery&lt;br /&gt;
 | AuthorName = mlowery&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;===============================================================================&lt;br /&gt;
; Description:     Reads values from INI or creates INI with initial values.&lt;br /&gt;
;                  Intended to ensure all available INI settings are exposed&lt;br /&gt;
;                  and editable.&lt;br /&gt;
;                  Parameters are identical to IniRead()&lt;br /&gt;
; Parameter(s):    $filename  = filename of INI&lt;br /&gt;
;                  $section  = section name of INI&lt;br /&gt;
;                  $key      = key name in section&lt;br /&gt;
;                  $default  = default value (written to INI if not exists)&lt;br /&gt;
; Requirement(s):  None&lt;br /&gt;
; Return Value(s): Returns value from INI (or default if not defined)&lt;br /&gt;
; Note(s):         Chr(127) used to detect non-existing value since won&#039;t normally exist in a text file&lt;br /&gt;
;===============================================================================&lt;br /&gt;
Func _IniReadInit($filename, $section, $key, $default)&lt;br /&gt;
  Local $value = IniRead($filename, $section, $key, Chr(127))&lt;br /&gt;
    If $value = Chr(127) Then&lt;br /&gt;
      IniWrite($filename, $section, $key, $default)&lt;br /&gt;
      $value = $default&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $value&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;
== _IsValidFileType ==&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(@ScriptFullPath &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@ScriptFullPath, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(@AutoItExe &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@AutoItExe, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a filepath matches an extension filetype. Based on the idea by guinness - http://www.autoitscript.com/forum/topic/123674-isvalidfiletype/&lt;br /&gt;
Func _IsValidFileType($sFilePath, $sList = &amp;quot;bat;cmd;exe&amp;quot;) ; By AZJIO - http://www.autoitscript.com/forum/topic/...filetype/page__view__findpost_&lt;br /&gt;
    Local $iDot = StringInStr($sFilePath, &amp;quot;.&amp;quot;, 0, -1)&lt;br /&gt;
    Return $iDot And StringInStr(&#039;;&#039; &amp;amp; $sList &amp;amp; &#039;;&#039;, &#039;;&#039; &amp;amp; StringTrimLeft($sFilePath, $iDot) &amp;amp; &#039;;&#039;) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidFileType&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Example 2&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(@ScriptFullPath &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@ScriptFullPath, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(@AutoItExe &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@AutoItExe, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a filepath matches an extension filetype. Based on the idea by guinness - http://www.autoitscript.com/forum/topic/123674-isvalidfiletype/&lt;br /&gt;
Func _IsValidFileType($sFilePath, $sList = &amp;quot;bat;cmd;exe&amp;quot;, $iOpFast = 1) ; By Yashied.&lt;br /&gt;
    If StringStripWS($sList, 8) = &amp;quot;&amp;quot; Then&lt;br /&gt;
        $sList = &amp;quot;*&amp;quot;&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return _WinAPI_PathMatchSpec($sFilePath, StringReplace(&#039;;&#039; &amp;amp; $sList, &#039;;&#039;, &#039;;*.&#039;, 0, $iOpFast * 2))&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidFileType&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== File Open/Save/Folder Dialog Box ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
 | AuthorURL2 = 4997-odklizec&lt;br /&gt;
 | AuthorName2 = odklizec&lt;br /&gt;
 | AuthorURL3 = 6756-danny35d&lt;br /&gt;
 | AuthorName3 = Danny35d&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Center - File Open/Save/Folder Dialog Box&lt;br /&gt;
; Author - odklizec, MHz, Danny35d&lt;br /&gt;
&lt;br /&gt;
 If StringInStr($cmdlineraw, &#039;/MoveWin&#039;) Then&lt;br /&gt;
	 Local $size, $PosX, $PosY&lt;br /&gt;
     $cmdlineraw = StringSplit(StringMid($cmdlineraw, StringInStr($cmdlineraw, &#039;/MoveWin&#039;)), &#039;:&#039;)&lt;br /&gt;
     While 1&lt;br /&gt;
         Select&lt;br /&gt;
         Case WinExists($cmdlineraw[2])&lt;br /&gt;
             $size=WinGetPos ($cmdlineraw[2])&lt;br /&gt;
             $PosX=@DesktopWidth/2 - $size[2]/2&lt;br /&gt;
             $PosY=@DesktopHeight/2 - $size[3]/2&lt;br /&gt;
             WinMove($cmdlineraw[2], &amp;quot;&amp;quot;, $PosX, $PosY)&lt;br /&gt;
             WinActivate($cmdlineraw[2])&lt;br /&gt;
             ExitLoop&lt;br /&gt;
         EndSelect&lt;br /&gt;
         Sleep(50)&lt;br /&gt;
     WEnd&lt;br /&gt;
     Exit&lt;br /&gt;
 EndIf&lt;br /&gt;
Global $PID, $Read_File, $Save_File&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Open file Dialog Box&#039;)&lt;br /&gt;
 $Read_File = FileOpenDialog ( &amp;quot;Open file Dialog Box&amp;quot;, @ScriptDir &amp;amp; &amp;quot;\&amp;quot;, &amp;quot;AutoIt Files (*.au3)&amp;quot;,3,@ScriptFullPath)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Save file Dialog Box&#039;)&lt;br /&gt;
 $Save_File = FileSaveDialog( &amp;quot;Save file Dialog Box&amp;quot;, @ScriptDir, &amp;quot;Scripts (*.aut;*.au3)&amp;quot;, 3)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Browse for Folder&#039;)&lt;br /&gt;
 FileSelectFolder(&amp;quot;Choose a folder with plugins..&amp;quot;, &amp;quot;&amp;quot;,&amp;quot;4&amp;quot;,&amp;quot;c:\&amp;quot;)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
&lt;br /&gt;
 Func _FindBrowseWin($sTitle)&lt;br /&gt;
     If @Compiled Then&lt;br /&gt;
         Return(Run(@ScriptFullPath &amp;amp; &#039; /MoveWin:&#039; &amp;amp; $sTitle))&lt;br /&gt;
     Else&lt;br /&gt;
         Return(Run(@AutoItExe &amp;amp; &#039; &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot; /MoveWin:&#039; &amp;amp; $sTitle))&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;
== _MoveFileOnReboot ==&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.2.0, Creation Date = 21/03/12.&lt;br /&gt;
&lt;br /&gt;
; Function to Move or Delete a file on next reboot!&lt;br /&gt;
Func _MoveFileOnReboot($sSourcePath, $sDestPath = &amp;quot;&amp;quot;); If $sDestPath = &amp;quot;&amp;quot; the file is deleted instead of moved.&lt;br /&gt;
    Local $iRet&lt;br /&gt;
&lt;br /&gt;
    ; PendingFileRenameOperations (HKLM\SYSTEM\CurrentControlSet\Control\Session Manager)&lt;br /&gt;
    If $DestPath = &amp;quot;&amp;quot; Then&lt;br /&gt;
        $iRet = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;MoveFileExA&amp;quot;, &amp;quot;str&amp;quot;, $sSourcePath, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 4)&lt;br /&gt;
    Else&lt;br /&gt;
        $iRet = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;MoveFileExA&amp;quot;, &amp;quot;str&amp;quot;, $sSourcePath, &amp;quot;str&amp;quot;, $sDestPath, &amp;quot;dword&amp;quot;, 4)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Return $iRet&lt;br /&gt;
EndFunc   ;==&amp;gt;_MoveFileOnReboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _MultipleFileOpenDialog ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL =&lt;br /&gt;
 | AuthorName = /dev/null&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $message = &amp;quot;Hold down Ctrl or Shift to choose multiple files.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Local $filename = _MultipleFileOpenDialog($message,300,300)&lt;br /&gt;
&lt;br /&gt;
Local $var = FileOpenDialog($message, @WindowsDir &amp;amp; &amp;quot;\&amp;quot;, &amp;quot;Images (*.jpg;*.bmp)&amp;quot;, 1 + 4 )&lt;br /&gt;
&lt;br /&gt;
If @error Then&lt;br /&gt;
    MsgBox(4096,&amp;quot;&amp;quot;,&amp;quot;No File(s) chosen&amp;quot;)&lt;br /&gt;
Else&lt;br /&gt;
    $var = StringReplace($var, &amp;quot;|&amp;quot;, @CRLF)&lt;br /&gt;
    MsgBox(4096,&amp;quot;&amp;quot;,&amp;quot;You chose &amp;quot; &amp;amp; $var)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
FileDelete($filename)&lt;br /&gt;
func _MultipleFileOpenDialog($title,$posx,$posy)&lt;br /&gt;
    Local $temp = EnvGet(&amp;quot;temp&amp;quot;)&lt;br /&gt;
    Local $filename = $temp &amp;amp; &amp;quot;\move_file_open_dialog.au3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    Local $script = &#039;Global $title = &amp;quot;&#039; &amp;amp; $title &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Global $pos_x = &#039; &amp;amp; $posx &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Global $pos_y = &#039; &amp;amp; $posy &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;AdlibRegister(&amp;quot;_Move&amp;quot;,10)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;while 1&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;    sleep(1000)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;wend&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Func _Move()&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;   if (WinActive($title)) Then&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;      WinMove($title,&amp;quot;&amp;quot;,$pos_x,$pos_y)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;      Exit&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;   EndIf&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;EndFunc&#039; &amp;amp; @CRLF&lt;br /&gt;
&lt;br /&gt;
    FileWrite($filename,$script)&lt;br /&gt;
    ;MsgBox(0,&amp;quot;&amp;quot;,$script &amp;amp; @CRLF &amp;amp; $filename)&lt;br /&gt;
    Run(@AutoItExe &amp;amp; &amp;quot; /AutoIt3ExecuteScript &amp;quot; &amp;amp; $filename)&lt;br /&gt;
    sleep(250)&lt;br /&gt;
    Return $filename&lt;br /&gt;
EndFunc ;==&amp;gt;_MultipleFileOpenDialog()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _OpenFolder ==&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;
#cs&lt;br /&gt;
    These have been declared in Global scope as you may wish to use them elsewhere in your script.&lt;br /&gt;
#ce&lt;br /&gt;
Global $ALTSTARTUP = 0x1d&lt;br /&gt;
Global $APPDATA = 0x1a&lt;br /&gt;
Global $BITBUCKET = 0x0a&lt;br /&gt;
Global $COMMONALTSTARTUP = 0x1e&lt;br /&gt;
Global $COMMONAPPDATA = 0x23&lt;br /&gt;
Global $COMMONDESKTOPDIR = 0x19&lt;br /&gt;
Global $COMMONFAVORITES = 0x1f&lt;br /&gt;
Global $COMMONPROGRAMS = 0x17&lt;br /&gt;
Global $COMMONSTARTMENU = 0x16&lt;br /&gt;
Global $COMMONSTARTUP = 0x18&lt;br /&gt;
Global $CONTROLS = 0x03&lt;br /&gt;
Global $COOKIES = 0x21&lt;br /&gt;
Global $DESKTOP = 0x00&lt;br /&gt;
Global $DESKTOPDIRECTORY = 0x10&lt;br /&gt;
Global $DRIVES = 0x11&lt;br /&gt;
Global $FAVORITES = 0x06&lt;br /&gt;
Global $FONTS = 0x14&lt;br /&gt;
Global $HISTORY = 0x22&lt;br /&gt;
Global $INTERNETCACHE = 0x20&lt;br /&gt;
Global $LOCALAPPDATA = 0x1c&lt;br /&gt;
Global $MYPICTURES = 0x27&lt;br /&gt;
Global $NETHOOD = 0x13&lt;br /&gt;
Global $NETWORK = 0x12&lt;br /&gt;
Global $PERSONAL = 0x05&lt;br /&gt;
Global $PRINTERS = 0x04&lt;br /&gt;
Global $PRINTHOOD = 0x1b&lt;br /&gt;
Global $PROFILE = 0x28&lt;br /&gt;
Global $PROGRAMFILES = 0x26&lt;br /&gt;
Global $PROGRAMFILESx86 = 0x30&lt;br /&gt;
Global $PROGRAMS = 0x02&lt;br /&gt;
Global $RECENT = 0x08&lt;br /&gt;
Global $SENDTO = 0x09&lt;br /&gt;
Global $STARTMENU = 0x0b&lt;br /&gt;
Global $STARTUP = 0x07&lt;br /&gt;
Global $SYSTEM = 0x25&lt;br /&gt;
Global $SYSTEMx86 = 0x29&lt;br /&gt;
Global $TEMPLATES = 0x15&lt;br /&gt;
Global $WINDOWS = 0x24&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_OpenFolder(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_OpenFolder($PRINTERS) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Open a folder or special folder variable, similar to using ShellExecute.&lt;br /&gt;
Func _OpenFolder($sFolderPath)&lt;br /&gt;
    Local $oShell = ObjCreate(&#039;shell.application&#039;)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    $oShell.Open($sFolderPath)&lt;br /&gt;
    Return 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_OpenFolder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _PathAppendToFilename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 31965-progandy&lt;br /&gt;
 | AuthorName = ProgAndy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sOrg = &amp;quot;C:\Some.Folder\some.file.ext&amp;quot;&lt;br /&gt;
$sAdd = &amp;quot;_backup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$sNew = _PathAppendToFilename($sOrg, $sAdd)&lt;br /&gt;
&lt;br /&gt;
$sStripped = _PathStripRightFromFilename($sNew, $sAdd)&lt;br /&gt;
&lt;br /&gt;
MsgBox(0, &amp;quot;&amp;quot;, $sOrg &amp;amp; @CRLF &amp;amp; $sAdd &amp;amp; @CRLF &amp;amp; $sNew &amp;amp; @CRLF &amp;amp; $sStripped)&lt;br /&gt;
&lt;br /&gt;
Func _PathAppendToFilename($sName, $sAppend)&lt;br /&gt;
    ; Author: ProgAndy&lt;br /&gt;
    If StringRegExp($sAppend, &#039;[\/\\:\?&amp;quot;&amp;lt;&amp;gt;\|\*]&#039;) Then Return SetError(1, 0, $sName)&lt;br /&gt;
    Return StringRegExpReplace($sName, &amp;quot;(\.[^\\/\.]+)$&amp;quot;, $sAppend &amp;amp; &amp;quot;\1&amp;quot;, 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;
== _PathStripRightFromFilename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 31965-progandy&lt;br /&gt;
 | AuthorName = ProgAndy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func _PathStripRightFromFilename($sName, $sStrip)&lt;br /&gt;
    ; Author: ProgAndy&lt;br /&gt;
    If StringRegExp($sStrip, &#039;[\/\\:\?&amp;quot;&amp;lt;&amp;gt;\|\*]&#039;) Then Return SetError(1, 0, $sName)&lt;br /&gt;
    Return StringRegExpReplace($sName, &amp;quot;\Q&amp;quot; &amp;amp; $sStrip &amp;amp; &amp;quot;\E(\.[^\\/\.]+)$&amp;quot;, &amp;quot;\1&amp;quot;, 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;
== _SelfDelete ==&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;
; This also removes the directory which the file is in&lt;br /&gt;
; Author MHz with the directory delete addition by The Kandie Man&lt;br /&gt;
Func _SelfDelete($iDelay = 0)&lt;br /&gt;
    Local $sCmdFile&lt;br /&gt;
    FileDelete(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;)&lt;br /&gt;
    $sCmdFile = &#039;ping -n &#039; &amp;amp; $iDelay &amp;amp; &#039;127.0.0.1 &amp;gt; nul&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;:loop&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;del &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot; goto loop&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;:loop2&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;rmdir /q &amp;quot;&#039; &amp;amp; $dirToDelete &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; $dirToDelete &amp;amp; &#039;&amp;quot; goto loop2&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;del &#039; &amp;amp; @TempDir &amp;amp; &#039;\scratch.bat&#039;&lt;br /&gt;
    FileWrite(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;, $sCmdFile)&lt;br /&gt;
    Run(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;, @TempDir, @SW_HIDE)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ShellExecuteFileSelectFolder ==&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(_ShellExecuteFileSelectFolder(&#039;Select a Folder&#039;, @HomeDrive) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Shell Execute a selected folder.&lt;br /&gt;
Func _ShellExecuteFileSelectFolder($sText, $sRoot, $iFlag = 0, $sInitialDir = &#039;&#039;, $hWnd = &#039;&#039;)&lt;br /&gt;
    Local $sFolder = FileSelectFolder($sText, $sRoot, $iFlag, $sInitialDir, $hWnd)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(@error, @extended, &#039;&#039;)&lt;br /&gt;
    EndIf&lt;br /&gt;
    ShellExecute($sFolder)&lt;br /&gt;
    Return $sFolder&lt;br /&gt;
EndFunc   ;==&amp;gt;_ShellExecuteFileSelectFolder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SuiCide ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 28010-larrydalooza&lt;br /&gt;
 | AuthorName = LarryDalooza&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; IMPORTANT MAKE A COPY OF SCRIPT BEFORE DELETION&lt;br /&gt;
; Deletes the running script&lt;br /&gt;
&lt;br /&gt;
Func SuiCide()&lt;br /&gt;
	Local $sFilePath = @TempDir &amp;amp; &#039;\SuiCide.bat&#039;&lt;br /&gt;
	FileDelete($sFilePath)&lt;br /&gt;
	FileWrite($sFilePath, &#039;loop:&#039; &amp;amp; @CRLF &amp;amp; &#039;del &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
			&#039;ping -n 1 -w 250 zxywqxz_q&#039; &amp;amp; @CRLF &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; _&lt;br /&gt;
			&#039;&amp;quot; goto loop&#039; &amp;amp; @CRLF &amp;amp; &#039;del SuiCide.bat&#039; &amp;amp; @CRLF)&lt;br /&gt;
	Exit Run($sFilePath, @TempDir, @SW_HIDE)&lt;br /&gt;
EndFunc   ;==&amp;gt;SuiCide&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _UniqueFilename ==&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;
&lt;br /&gt;
ConsoleWrite(_UniqueFilename(@ScriptDir, &#039;.au3&#039;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _UniqueFilename($sFilePath, $sExtension)&lt;br /&gt;
    Local $iRandom = 0, $sUnqiueFileName = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    $sExtension = &#039;.&#039; &amp;amp; StringRegExpReplace($sExtension, &#039;\A[\.]+&#039;, &#039;&#039;)&lt;br /&gt;
    $sFilePath = StringRegExpReplace($sFilePath, &#039;[\\/]+\z&#039;, &#039;&#039;) &amp;amp; &#039;\&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $iRandom = Random(55, 116, 1)&lt;br /&gt;
        $sUnqiueFileName &amp;amp;= Chr($iRandom + 6 * ($iRandom &amp;gt; 90) - 7 * ($iRandom &amp;lt; 65))&lt;br /&gt;
        If FileExists($sFilePath &amp;amp; $sUnqiueFileName &amp;amp; $sExtension) = 0 And StringLen($sUnqiueFileName) &amp;gt; 7 Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return $sFilePath &amp;amp; $sUnqiueFileName &amp;amp; $sExtension&lt;br /&gt;
EndFunc   ;==&amp;gt;_UniqueFilename&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Windows - Copy With Progress ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 19-jos&lt;br /&gt;
 | AuthorName = Jos&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Windows - Copy With Progress&lt;br /&gt;
&lt;br /&gt;
;~ 4 Do not display a progress dialog box.&lt;br /&gt;
;~ 8 Give the file being operated on a new name in a move, copy, or rename operation if a file with the target name already exists.&lt;br /&gt;
;~ 16 Respond with &amp;quot;Yes to All&amp;quot; for any dialog box that is displayed.&lt;br /&gt;
;~ 64 Preserve undo information, if possible.&lt;br /&gt;
;~ 128 Perform the operation on files only if a wildcard file name (*.*) is specified.&lt;br /&gt;
;~ 256 Display a progress dialog box but do not show the file names.&lt;br /&gt;
;~ 512 Do not confirm the creation of a new directory if the operation requires one to be created.&lt;br /&gt;
;~ 1024 Do not display a user interface if an error occurs.&lt;br /&gt;
;~ 2048 Version 4.71. Do not copy the security attributes of the file.&lt;br /&gt;
;~ 4096 Only operate in the local directory. Don&#039;t operate recursively into subdirectories.&lt;br /&gt;
;~ 8192 Version 5.0. Do not copy connected files as a group. Only copy the specified files.&lt;br /&gt;
&lt;br /&gt;
_FileCopy(&amp;quot;C:\Installed Apps\Patches\WindowsXP-KB835935-SP2-ENU.exe&amp;quot;,&amp;quot;C:\temp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
; to copy a directory the destination directory must exist&lt;br /&gt;
&lt;br /&gt;
Func _FileCopy($fromFile,$tofile)&lt;br /&gt;
    Local $FOF_RESPOND_YES = 16&lt;br /&gt;
    Local $FOF_SIMPLEPROGRESS = 256&lt;br /&gt;
    $winShell = ObjCreate(&amp;quot;shell.application&amp;quot;)&lt;br /&gt;
    $winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>JohnOne</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=Snippets_(_Files_%26_Folders_)&amp;diff=11471</id>
		<title>Snippets ( Files &amp; Folders )</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=Snippets_(_Files_%26_Folders_)&amp;diff=11471"/>
		<updated>2012-12-06T19:12:33Z</updated>

		<summary type="html">&lt;p&gt;JohnOne: added _FileRename&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;
== _ConvertFileToUTF16 ==&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;
_ConvertFileToUTF16(@ScriptDir &amp;amp; &amp;quot;\Example.xml&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Func _ConvertFileToUTF16($sFilePath)&lt;br /&gt;
    Local $iEncoding = FileGetEncoding($sFilePath)&lt;br /&gt;
    Local $hFileOpen = FileOpen($sFilePath, $iEncoding)&lt;br /&gt;
    If $hFileOpen = -1 Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Local $sData = FileRead($hFileOpen)&lt;br /&gt;
    FileClose($hFileOpen)&lt;br /&gt;
&lt;br /&gt;
    $hFileOpen = FileOpen($sFilePath, 2 + 32)&lt;br /&gt;
    If $hFileOpen = -1 Then&lt;br /&gt;
        Return SetError(2, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    FileWrite($hFileOpen, $sData)&lt;br /&gt;
    Return FileClose($hFileOpen)&lt;br /&gt;
EndFunc   ;==&amp;gt;_ConvertFileToUTF16&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== DropFiles ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 35302-guinness&lt;br /&gt;
 | AuthorName = guinness&lt;br /&gt;
 | Desc = Dropping multiple files onto a GUI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Dropping multiple files onto a GUI&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;APIConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $__aDropFiles&lt;br /&gt;
&lt;br /&gt;
Example()&lt;br /&gt;
&lt;br /&gt;
Func Example()&lt;br /&gt;
	Local $hGUI = GUICreate(&#039;&#039;, 500, 500, -1, -1, -1, $WS_EX_ACCEPTFILES)&lt;br /&gt;
&lt;br /&gt;
	; Create a label that is transparent which will accept &#039;drop&#039; events.&lt;br /&gt;
	GUICtrlCreateLabel(&amp;quot;&amp;quot;, 0, 0, 500, 500)&lt;br /&gt;
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)&lt;br /&gt;
	GUICtrlSetResizing(-1, $GUI_DOCKALL)&lt;br /&gt;
	GUICtrlSetState(-1, $GUI_DROPACCEPTED)&lt;br /&gt;
&lt;br /&gt;
	GUIRegisterMsg($WM_DROPFILES, &amp;quot;WM_DROPFILES&amp;quot;)&lt;br /&gt;
	GUISetState(@SW_SHOW, $hGUI)&lt;br /&gt;
&lt;br /&gt;
	While 1&lt;br /&gt;
		Switch GUIGetMsg()&lt;br /&gt;
			Case $GUI_EVENT_CLOSE&lt;br /&gt;
				ExitLoop&lt;br /&gt;
&lt;br /&gt;
			Case $GUI_EVENT_DROPPED&lt;br /&gt;
				If $__aDropFiles[0] &amp;gt; 0 Then&lt;br /&gt;
					_ArrayDisplay($__aDropFiles)&lt;br /&gt;
				EndIf&lt;br /&gt;
&lt;br /&gt;
		EndSwitch&lt;br /&gt;
	WEnd&lt;br /&gt;
	GUIDelete($hGUI)&lt;br /&gt;
EndFunc   ;==&amp;gt;Example&lt;br /&gt;
&lt;br /&gt;
Func WM_DROPFILES($hWnd, $iMsg, $iwParam, $ilParam)&lt;br /&gt;
	#forceref $hWnd, $ilParam&lt;br /&gt;
	Switch $iMsg&lt;br /&gt;
		Case $WM_DROPFILES&lt;br /&gt;
			Local $aReturn = _WinAPI_DragQueryFileEx($iwParam)&lt;br /&gt;
			If IsArray($aReturn) Then&lt;br /&gt;
				Local $aError[1] = [0]&lt;br /&gt;
				$__aDropFiles = $aReturn&lt;br /&gt;
			Else&lt;br /&gt;
				$__aDropFiles = $aError&lt;br /&gt;
			EndIf&lt;br /&gt;
	EndSwitch&lt;br /&gt;
	Return $GUI_RUNDEFMSG&lt;br /&gt;
EndFunc   ;==&amp;gt;WM_DROPFILES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ExitCheckTextChange ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 8007-negativenrg&lt;br /&gt;
 | AuthorName = NegativeNrG&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;Check(when Exit), if Text is not equal to $e_to Then, prompt the user to save or not save.&lt;br /&gt;
;_ExitCheckText Change $Edit Handle, $title of messagebox, $message of messagebox, $equal to(default = NULL).&lt;br /&gt;
&lt;br /&gt;
Func _ExitCheckTextChange($E_hnd,$title,$message,$e_to = &#039;&#039;)&lt;br /&gt;
	Local $buffer, $choice, $filetosave, $handle1&lt;br /&gt;
                $buffer = GUIctrlread($E_hnd)&lt;br /&gt;
        If $buffer &amp;lt;&amp;gt; $e_to Then&lt;br /&gt;
            $choice = Msgbox(4,$title,$message)&lt;br /&gt;
            If $choice = 6 Then&lt;br /&gt;
                $filetosave = FileSaveDialog(&#039;Choose File&#039;,@scriptdir,&#039;(*.au3)&#039;)&lt;br /&gt;
                $handle1 = FileOpen($filetosave,2)&lt;br /&gt;
                FileWrite($handle1,$buffer)&lt;br /&gt;
                Exit&lt;br /&gt;
            Elseif $choice &amp;lt;&amp;gt; 6 Then&lt;br /&gt;
            Exit&lt;br /&gt;
        EndIf&lt;br /&gt;
        Else&lt;br /&gt;
        Exit&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;
== _FileDeleteEx ==&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;
; Ref: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;APIConstants.au3&amp;gt; ; Included with WinAPIEx.au3&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt; ; Download From http://www.autoitscript.com/forum/topic/98712-winapiex-udf/ by Yashied.&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_FileDeleteEx(&amp;quot;C:\Example.dat&amp;quot;) &amp;amp; @LF)&lt;br /&gt;
&lt;br /&gt;
Func _FileDeleteEx($sFilePath)&lt;br /&gt;
    Local $iReturn = FileDelete($sFilePath)&lt;br /&gt;
    If $iReturn Then&lt;br /&gt;
        Return $iReturn&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return _WinAPI_MoveFileEx(FileGetShortName($sFilePath), &amp;quot;&amp;quot;, $MOVE_FILE_DELAY_UNTIL_REBOOT)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileDeleteEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileCheck ==&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;Date.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Check if the file was modified less than 24 hours ago.&lt;br /&gt;
ConsoleWrite( _FileCheck(@ScriptFullPath, 24) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _FileCheck($sFilePath, $iHours = 24)&lt;br /&gt;
    Local $aTime&lt;br /&gt;
    If FileExists($sFilePath) = 0 Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    $aTime = FileGetTime($sFilePath, 0, 0)&lt;br /&gt;
    Return Number(_DateDiff(&amp;quot;h&amp;quot;, $aTime[0] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aTime[1] &amp;amp; &amp;quot;/&amp;quot; &amp;amp; $aTime[2] &amp;amp; &amp;quot; &amp;quot; &amp;amp; $aTime[3] &amp;amp; &amp;quot;:&amp;quot; &amp;amp; $aTime[4] &amp;amp; &amp;quot;:&amp;quot; &amp;amp; $aTime[5], @YEAR &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MON &amp;amp; &amp;quot;/&amp;quot; &amp;amp; @MDAY &amp;amp; &amp;quot; &amp;quot; &amp;amp; @HOUR &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @MIN &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @SEC) &amp;lt; $iHours)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileCheck&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileCreateEx ==&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;
_FileCreateEx(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;, 42)&lt;br /&gt;
&lt;br /&gt;
; Create a blank file with a certain size in bytes.&lt;br /&gt;
Func _FileCreateEx($sFilePath, $iBytes = 0)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c fsutil file createnew &amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot; &#039; &amp;amp; Int($iBytes), @WorkingDir, @SW_HIDE)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileCreateEx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileID ==&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;
FileClose(FileOpen(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;, 2))&lt;br /&gt;
ConsoleWrite(_FileID(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;) &amp;amp; @CRLF)&lt;br /&gt;
FileDelete(@ScriptDir &amp;amp; &#039;\ExampleFile.txt&#039;)&lt;br /&gt;
&lt;br /&gt;
; Rerieve the file id of a filepath.&lt;br /&gt;
Func _FileID($sFilePath)&lt;br /&gt;
    Local $iPID = Run(@ComSpec &amp;amp; &#039; /c fsutil file queryfileid &amp;quot;&#039; &amp;amp; $sFilePath &amp;amp; &#039;&amp;quot;&#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 StringStripWS(StringRegExpReplace($sReturn, &#039;File\sID\sis\s(.*?)&#039;, &#039;$1&#039;), 8)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileExistsWithQuotes ==&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(_FileExistsWithQuotes(&#039;&amp;quot;&#039; &amp;amp; @ScriptDir &amp;amp; &#039;&amp;quot;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_FileExistsWithQuotes(&amp;quot;&#039;&amp;quot; &amp;amp; @ScriptDir &amp;amp; &amp;quot;&#039;&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_FileExistsWithQuotes(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Version: 1.00. AutoIt: V3.3.8.1&lt;br /&gt;
; Check a filepath ecists even if the path contains quotation marks.&lt;br /&gt;
Func _FileExistsWithQuotes($sFilePath)&lt;br /&gt;
    Return FileExists(StringRegExpReplace($sFilePath, &#039;^(&amp;quot;|&#039;&#039;)*([^&amp;quot;&#039;&#039;]+)(&amp;quot;|&#039;&#039;)*$&#039;, &#039;\2&#039;))&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileExistsWithQuotes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== FileLineCount ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 71214-mkish&lt;br /&gt;
 | AuthorName = MKISH&lt;br /&gt;
 | Desc = Checks the number of lines in a file (useful for larger files as well)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Author - MKISH&lt;br /&gt;
&lt;br /&gt;
; Checks the number of lines in a file (useful for larger files as well)&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WinAPI.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local $FILE = &amp;quot;G:\WIN7\sources\boot.wim&amp;quot;&lt;br /&gt;
Local $COUNT = 0&lt;br /&gt;
Local $start = default&lt;br /&gt;
Local $res, $fLen, $err&lt;br /&gt;
&lt;br /&gt;
While 1&lt;br /&gt;
	$res = _HexSearch($FILE, StringToBinary(&amp;quot;&amp;quot; &amp;amp; @crlf), $start)&lt;br /&gt;
	$start = $res + 2&lt;br /&gt;
	$COUNT = $COUNT + 1&lt;br /&gt;
	If $res = -1 then exitloop&lt;br /&gt;
Wend&lt;br /&gt;
&lt;br /&gt;
msgbox(64, &amp;quot;&amp;quot;, &amp;quot;Lines count: &amp;quot; &amp;amp; $COUNT)&lt;br /&gt;
&lt;br /&gt;
; _HexSearch function (originally written by Zinthose, modified by MKISH)&lt;br /&gt;
Func _HexSearch($FilePath, $BinaryValue, $StartOffset = Default)&lt;br /&gt;
        Local $Buffer, $ptr, $hFile, $Result, $Read, $SearchValue, $Pos, $BufferSize = 2048&lt;br /&gt;
            If $StartOffset = Default     Then $StartOffset = 0&lt;br /&gt;
            If Not FileExists($FilePath)    Then    Return SetError(1, @error, 0)&lt;br /&gt;
            $fLen = FileGetSize($FilePath)&lt;br /&gt;
            If $StartOffset &amp;gt; $fLen   Then   Return SetError(2, @error, 0)&lt;br /&gt;
            If Not IsBinary($BinaryValue)   Then    Return SetError(3, @error, 0)&lt;br /&gt;
            If Not IsNumber($StartOffset)   Then    Return SetError(4, @error, 0)&lt;br /&gt;
            $SearchValue = BinaryToString($BinaryValue)&lt;br /&gt;
            $Buffer = DllStructCreate(&amp;quot;byte[&amp;quot; &amp;amp; $BufferSize &amp;amp; &amp;quot;]&amp;quot;)&lt;br /&gt;
            $ptr = DllStructGetPtr($Buffer)&lt;br /&gt;
                $hFile = _WinAPI_CreateFile($FilePath, 2, 2, 1)&lt;br /&gt;
                If $hFile = 0 Then Return SetError(5, @error, 0)&lt;br /&gt;
            $Result = _WinAPI_SetFilePointer($hFile, $StartOffset)&lt;br /&gt;
            $err = @error&lt;br /&gt;
            If $Result = 0xFFFFFFFF Then&lt;br /&gt;
                _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                Return SetError(5, $err, 0)&lt;br /&gt;
            EndIf&lt;br /&gt;
            $Pos = $StartOffset&lt;br /&gt;
            While True&lt;br /&gt;
                    $Read = 0&lt;br /&gt;
                    $Result = _WinAPI_ReadFile($hFile, $ptr, $BufferSize, $Read)&lt;br /&gt;
                    $err = @error&lt;br /&gt;
                    If Not $Result Then&lt;br /&gt;
                        _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                        Return SetError(6, $err, 0)&lt;br /&gt;
                    EndIf&lt;br /&gt;
                    $Result = DllStructGetData($Buffer, 1)&lt;br /&gt;
                    $Result = BinaryToString($Result)&lt;br /&gt;
                    $Result = StringInStr($Result, $SearchValue)&lt;br /&gt;
                    If $Result &amp;gt; 0 Then ExitLoop&lt;br /&gt;
                    If $Read &amp;lt; $BufferSize Then&lt;br /&gt;
                        _WinAPI_CloseHandle($hFile)&lt;br /&gt;
                        Return -1&lt;br /&gt;
                    EndIf&lt;br /&gt;
                    $Pos += $Read&lt;br /&gt;
&lt;br /&gt;
            WEnd&lt;br /&gt;
            _WinAPI_CloseHandle($hFile)&lt;br /&gt;
            If Not $Result Then Return SetError(7, @error, 0)&lt;br /&gt;
            $Result = $Pos + $Result - 1&lt;br /&gt;
            Return $Result&lt;br /&gt;
    EndFunc; ==&amp;gt; _HexSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileOpenDialog ==&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;
Local $sFilePath = _FileOpenDialog(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Images (*.jpg;*.bmp)|Videos (*.avi;*.mpg)&amp;quot;, Random(1, @DesktopWidth, 1), Random(1, @DesktopHeight, 1), 1 + 4, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(&#039;File = &#039; &amp;amp; $sFilePath &amp;amp; &#039;, @error = &#039; &amp;amp; @error &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _FileOpenDialog&lt;br /&gt;
; Description ...: Initiates a Open File Dialog with the option to set the position of the GUI.&lt;br /&gt;
; Syntax ........: _FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter[, $iLeft = -1[, $iTop = -1[, $iOptions = 0[,&lt;br /&gt;
;                  $sDefaultName = &amp;quot;&amp;quot;]]]])&lt;br /&gt;
; Parameters ....: $sTitle              - Title text of the Dialog GUI.&lt;br /&gt;
;                  $sIntitialDirectory  - Initial directory selected in the GUI file tree.&lt;br /&gt;
;                  $sFilter             - File type single filter such as &amp;quot;All (*.*)&amp;quot; or &amp;quot;Text files (*.txt)&amp;quot;.&lt;br /&gt;
;                  $iLeft               - [optional] The left side of the dialog box. By default (-1), the window is centered.&lt;br /&gt;
;                  $iTop                - [optional] The top of the dialog box. Default (-1) is centered&lt;br /&gt;
;                  $iOptions            - [optional] Dialog Options: To use more than one option, add the required values together. See FileOpenDialog. Default is 0.&lt;br /&gt;
;                  $sDefaultName        - [optional] Suggested file name for the user to open. Default is blank (&amp;quot;&amp;quot;).&lt;br /&gt;
; Return values .: Success: Returns the full path of the file(s) chosen. Results for multiple selections are &amp;quot;Directory|file1|file2|...&amp;quot;&lt;br /&gt;
;                  Failure: Sets @error to non-zero.&lt;br /&gt;
; Author ........: guinness&lt;br /&gt;
; Remarks........: This doesn&#039;t change the working directory of the script like FileOpenDialog does.&lt;br /&gt;
; Example .......: Yes&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter, $iLeft = -1, $iTop = -1, $iOptions = 0, $sDefaultName = &amp;quot;&amp;quot;)&lt;br /&gt;
    Local $hGUI = GUICreate(&#039;&#039;, -1, -1, $iLeft, $iTop), $sWorkingDir = @WorkingDir&lt;br /&gt;
    Local $sFilePath = FileOpenDialog($sTitle, $sIntitialDirectory, $sFilter, $iOptions, $sDefaultName, $hGUI)&lt;br /&gt;
    Local $iError = @error&lt;br /&gt;
    FileChangeDir($sWorkingDir)&lt;br /&gt;
    Return SetError($iError, GUIDelete($hGUI), $sFilePath)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileOpenDialog()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _FileRename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 52374-johnone&lt;br /&gt;
 | AuthorName = JohnOne&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;### Rename a file ###&lt;br /&gt;
;$sFile = Full path to file&lt;br /&gt;
;$sRename = New Filename&lt;br /&gt;
;$iOverWrite = 0 or 1&lt;br /&gt;
&lt;br /&gt;
;Success returns 1&lt;br /&gt;
;failure, returns 0 and sets @error&lt;br /&gt;
; 1 if FileMove fails, &lt;br /&gt;
; 2 if $sFile does not exist&lt;br /&gt;
;@extended&lt;br /&gt;
; 0 if the new file does not already exist / existed&lt;br /&gt;
; 1 if the new file already exists / existed&lt;br /&gt;
&lt;br /&gt;
;#### Example ####&lt;br /&gt;
$File = @ScriptDir &amp;amp; &#039;\filetorename.txt&#039;&lt;br /&gt;
FileWrite($File, &#039;Test&#039;)&lt;br /&gt;
_FileRename($File, &#039;newname.txt&#039;)&lt;br /&gt;
If @error Then MsgBox(0, &amp;quot;Error&amp;quot;, @error)&lt;br /&gt;
&lt;br /&gt;
Func _FileRename($sFile, $sRename, $iOverWrite = 0)&lt;br /&gt;
    Local Const $FILENOTEXIST = 2&lt;br /&gt;
    If Not FileExists($sFile) Then Return SetError($FILENOTEXIST, 0, 0)&lt;br /&gt;
    Local $_StringLen = StringLen($sFile)&lt;br /&gt;
    Local $_StringInStr = StringInStr($sFile, &amp;quot;\&amp;quot;, 0, -1, $_StringLen)&lt;br /&gt;
    Local $_Count = $_StringLen - $_StringInStr&lt;br /&gt;
    Local $_Dir = StringLeft($sFile, $_StringInStr)&lt;br /&gt;
    Local $_NewFile = $_Dir &amp;amp; $sRename&lt;br /&gt;
    Local $_NewFileExists = FileExists($_NewFile)&lt;br /&gt;
    Local $_FileMove = FileMove($sFile, $_NewFile, $iOverWrite)&lt;br /&gt;
    Return SetError(Not $_FileMove, $_NewFileExists, $_FileMove)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FileRename&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetFolderDepth ==&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;
; Autoit 3.3.5.4 and Below&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir &amp;amp; &#039;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptFullPath) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the folder depth of a filepath.&lt;br /&gt;
Func _GetFolderDepth($sFilePath)&lt;br /&gt;
    If StringInStr($sFilePath, &#039;.&#039;, 2, -1) Then&lt;br /&gt;
        $sFilePath = StringLeft($sFilePath, StringInStr($sFilePath, &amp;quot;&amp;quot;, 2, -1) - 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Local $aArray = StringSplit(StringRegExpReplace($sFilePath, &#039;[/]+z&#039;, &#039;&#039;), &#039;&#039;)&lt;br /&gt;
    Return $aArray[0] - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetFolderDepth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _GetFolderDepth ==&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;
; Autoit 3.3.5.4 and Above&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir &amp;amp; &#039;&#039;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_GetFolderDepth(@ScriptFullPath) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Get the folder depth of a filepath. Works with V3.3.5.4+&lt;br /&gt;
Func _GetFolderDepth($sFilePath)&lt;br /&gt;
    If StringInStr($sFilePath, &#039;.&#039;, 2, -1) Then&lt;br /&gt;
        $sFilePath = StringLeft($sFilePath, StringInStr($sFilePath, &amp;quot;&amp;quot;, 2, -1) - 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return StringSplit(StringRegExpReplace($sFilePath, &#039;[/]+z&#039;, &#039;&#039;), &#039;&#039;)[0] - 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_GetFolderDepth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsDir ==&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;IsDir: Using a file - &amp;quot; &amp;amp; IsDir(@ScriptFullPath) &amp;amp; @CRLF) ; Return 0&lt;br /&gt;
ConsoleWrite(&amp;quot;IsFile: Using a file - &amp;quot; &amp;amp; IsFile(@ScriptFullPath) &amp;amp; @CRLF) ; Return 1&lt;br /&gt;
ConsoleWrite(&amp;quot;IsDir: Using a directory - &amp;quot; &amp;amp; IsDir(@ScriptDir) &amp;amp; @CRLF) ; Return 1&lt;br /&gt;
ConsoleWrite(&amp;quot;IsFile: Using a directory - &amp;quot; &amp;amp; IsFile(@ScriptDir) &amp;amp; @CRLF) ; Return 0&lt;br /&gt;
&lt;br /&gt;
Func IsDir($sFilePath)&lt;br /&gt;
    Return Number(FileExists($sFilePath) And StringInStr(FileGetAttrib($sFilePath), &amp;quot;D&amp;quot;, 2, 1) &amp;gt; 0)&lt;br /&gt;
EndFunc   ;==&amp;gt;IsDir&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFile ==&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;
Func IsFile($sFilePath)&lt;br /&gt;
    Return Number(FileExists($sFilePath) And StringInStr(FileGetAttrib($sFilePath), &amp;quot;D&amp;quot;, 2, 1) = 0)&lt;br /&gt;
EndFunc   ;==&amp;gt;IsFile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileDiff ==&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(_IsFileDiff(@ScriptFullPath, @ScriptFullPath) &amp;amp; @CRLF) ; This will return False as the files are exactly the same.&lt;br /&gt;
ConsoleWrite(_IsFileDiff(@ScriptFullPath, @AutoItExe) &amp;amp; @CRLF) ; This will return True as the files are different.&lt;br /&gt;
&lt;br /&gt;
; Check if a file is different.&lt;br /&gt;
Func _IsFileDiff($sFilePath_1, $sFilePath_2)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c FC /B /W &amp;quot;&#039; &amp;amp; $sFilePath_1 &amp;amp; &#039;&amp;quot; &amp;quot;&#039; &amp;amp; $sFilePath_2 &amp;amp; &#039;&amp;quot;&#039;, @WorkingDir, @SW_HIDE) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileDiff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileOlder ==&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;Date.au3&amp;gt; ; Required for _DateDiff()&lt;br /&gt;
&lt;br /&gt;
; Check if the current script is older than 10 days.&lt;br /&gt;
If _IsFileOlder(@ScriptFullPath, 10) Then&lt;br /&gt;
	MsgBox(4096, &#039;&#039;, &#039;File is older than 10 days.&#039;)&lt;br /&gt;
Else&lt;br /&gt;
	MsgBox(4096, &#039;&#039;, &#039;File isn&#039;&#039;t older than 10 days.&#039;)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; Is a file older than a certain number of days.&lt;br /&gt;
Func _IsFileOlder($sFilePath, $iDays)&lt;br /&gt;
	Local $aArray = FileGetTime($sFilePath, 0)&lt;br /&gt;
	Return _DateDiff(&#039;D&#039;, $aArray[0] &amp;amp; &#039;/&#039; &amp;amp; $aArray[1] &amp;amp; &#039;/&#039; &amp;amp; $aArray[2] &amp;amp; &#039; &#039; &amp;amp; $aArray[3] &amp;amp; &#039;:&#039; &amp;amp; $aArray[4] &amp;amp; &#039;:&#039; &amp;amp; $aArray[5], @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) &amp;gt;= $iDays&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileOlder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IsFileSame ==&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(_IsFileSame(@ScriptFullPath, @ScriptFullPath) &amp;amp; @CRLF) ; This will return True as the files are exactly the same.&lt;br /&gt;
ConsoleWrite(_IsFileSame(@ScriptFullPath, @AutoItExe) &amp;amp; @CRLF) ; This will return False as the files are different.&lt;br /&gt;
&lt;br /&gt;
; Check if a file is the same.&lt;br /&gt;
Func _IsFileSame($sFilePath_1, $sFilePath_2)&lt;br /&gt;
    Return RunWait(@ComSpec &amp;amp; &#039; /c FC /B /W &amp;quot;&#039; &amp;amp; $sFilePath_1 &amp;amp; &#039;&amp;quot; &amp;quot;&#039; &amp;amp; $sFilePath_2 &amp;amp; &#039;&amp;quot;&#039;, @WorkingDir, @SW_HIDE) = 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsFileSame&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IniReadFile ==&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;
__INIFileFill(@ScriptDir &amp;amp; &#039;\Example.ini&#039;) ; Create an INI file with random data.&lt;br /&gt;
&lt;br /&gt;
Local $aArray = _IniReadFile(@ScriptDir &amp;amp; &#039;\Example.ini&#039;)&lt;br /&gt;
FileDelete(@ScriptDir &amp;amp; &#039;\Example.ini&#039;)&lt;br /&gt;
_ArrayDisplay($aArray)&lt;br /&gt;
&lt;br /&gt;
Func _IniReadFile($sFilePath)&lt;br /&gt;
    Local $aReturn[1][3] = [[0, 3]], $aSectionArray, $aSectionNameArray, $iCount = 0&lt;br /&gt;
    $aSectionNameArray = IniReadSectionNames($sFilePath)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, $aReturn)&lt;br /&gt;
    EndIf&lt;br /&gt;
    For $A = 1 To $aSectionNameArray[0]&lt;br /&gt;
        $aSectionArray = IniReadSection($sFilePath, $aSectionNameArray[$A])&lt;br /&gt;
        If @error Then&lt;br /&gt;
            ContinueLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
        For $B = 1 To $aSectionArray[0][0]&lt;br /&gt;
            $aReturn[0][0] += 1&lt;br /&gt;
            $iCount += 1&lt;br /&gt;
            If $aReturn[0][0] &amp;lt;= $iCount + 1 Then&lt;br /&gt;
                ReDim $aReturn[$aReturn[0][0] * 2][$aReturn[0][1]]&lt;br /&gt;
            EndIf&lt;br /&gt;
            $aReturn[$iCount][0] = $aSectionArray[$B][0]&lt;br /&gt;
            $aReturn[$iCount][1] = $aSectionArray[$B][1]&lt;br /&gt;
            $aReturn[$iCount][2] = $aSectionNameArray[$A]&lt;br /&gt;
        Next&lt;br /&gt;
    Next&lt;br /&gt;
    ReDim $aReturn[$aReturn[0][0] + 1][$aReturn[0][1]] ; Remove empty entries.&lt;br /&gt;
    Return $aReturn&lt;br /&gt;
EndFunc   ;==&amp;gt;_IniReadFile&lt;br /&gt;
&lt;br /&gt;
Func __INIFileFill($sFilePath)&lt;br /&gt;
    Local $sData = &#039;&#039;, $sHeader = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To Random(1, 5, 1)&lt;br /&gt;
        $sHeader = _RandomText(Random(5, 25, 1))&lt;br /&gt;
        $sData = &amp;quot;&amp;quot;&lt;br /&gt;
        For $j = 1 To Random(1, 25, 1)&lt;br /&gt;
            $sData &amp;amp;= _RandomText(Random(5, 25, 1)) &amp;amp; &#039;=&#039; &amp;amp; _RandomText(Random(5, 25, 1)) &amp;amp; @LF&lt;br /&gt;
        Next&lt;br /&gt;
        IniWriteSection($sFilePath, $sHeader, $sData)&lt;br /&gt;
    Next&lt;br /&gt;
EndFunc   ;==&amp;gt;__FillINIFile&lt;br /&gt;
&lt;br /&gt;
Func _RandomText($iLength = 10)&lt;br /&gt;
    Local $sData = &#039;&#039;, $sRandom = &#039;&#039;&lt;br /&gt;
    For $i = 1 To $iLength&lt;br /&gt;
        $sRandom = Random(55, 116, 1)&lt;br /&gt;
        $sData &amp;amp;= Chr($sRandom + 6 * ($sRandom &amp;gt; 90) - 7 * ($sRandom &amp;lt; 65))&lt;br /&gt;
    Next&lt;br /&gt;
    Return $sData&lt;br /&gt;
EndFunc   ;==&amp;gt;_RandomText&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _IniReadInit ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 9370-mlowery&lt;br /&gt;
 | AuthorName = mlowery&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
;===============================================================================&lt;br /&gt;
; Description:     Reads values from INI or creates INI with initial values.&lt;br /&gt;
;                  Intended to ensure all available INI settings are exposed&lt;br /&gt;
;                  and editable.&lt;br /&gt;
;                  Parameters are identical to IniRead()&lt;br /&gt;
; Parameter(s):    $filename  = filename of INI&lt;br /&gt;
;                  $section  = section name of INI&lt;br /&gt;
;                  $key      = key name in section&lt;br /&gt;
;                  $default  = default value (written to INI if not exists)&lt;br /&gt;
; Requirement(s):  None&lt;br /&gt;
; Return Value(s): Returns value from INI (or default if not defined)&lt;br /&gt;
; Note(s):         Chr(127) used to detect non-existing value since won&#039;t normally exist in a text file&lt;br /&gt;
;===============================================================================&lt;br /&gt;
Func _IniReadInit($filename, $section, $key, $default)&lt;br /&gt;
  Local $value = IniRead($filename, $section, $key, Chr(127))&lt;br /&gt;
    If $value = Chr(127) Then&lt;br /&gt;
      IniWrite($filename, $section, $key, $default)&lt;br /&gt;
      $value = $default&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return $value&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;
== _IsValidFileType ==&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(@ScriptFullPath &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@ScriptFullPath, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(@AutoItExe &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@AutoItExe, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a filepath matches an extension filetype. Based on the idea by guinness - http://www.autoitscript.com/forum/topic/123674-isvalidfiletype/&lt;br /&gt;
Func _IsValidFileType($sFilePath, $sList = &amp;quot;bat;cmd;exe&amp;quot;) ; By AZJIO - http://www.autoitscript.com/forum/topic/...filetype/page__view__findpost_&lt;br /&gt;
    Local $iDot = StringInStr($sFilePath, &amp;quot;.&amp;quot;, 0, -1)&lt;br /&gt;
    Return $iDot And StringInStr(&#039;;&#039; &amp;amp; $sList &amp;amp; &#039;;&#039;, &#039;;&#039; &amp;amp; StringTrimLeft($sFilePath, $iDot) &amp;amp; &#039;;&#039;) &amp;gt; 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidFileType&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Example 2&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WinAPIEx.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(@ScriptFullPath &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@ScriptFullPath, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(@AutoItExe &amp;amp; &amp;quot; &amp;gt;&amp;gt; &amp;quot; &amp;amp; _IsValidFileType(@AutoItExe, &amp;quot;bat;cmd;au3&amp;quot;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Check if a filepath matches an extension filetype. Based on the idea by guinness - http://www.autoitscript.com/forum/topic/123674-isvalidfiletype/&lt;br /&gt;
Func _IsValidFileType($sFilePath, $sList = &amp;quot;bat;cmd;exe&amp;quot;, $iOpFast = 1) ; By Yashied.&lt;br /&gt;
    If StringStripWS($sList, 8) = &amp;quot;&amp;quot; Then&lt;br /&gt;
        $sList = &amp;quot;*&amp;quot;&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return _WinAPI_PathMatchSpec($sFilePath, StringReplace(&#039;;&#039; &amp;amp; $sList, &#039;;&#039;, &#039;;*.&#039;, 0, $iOpFast * 2))&lt;br /&gt;
EndFunc   ;==&amp;gt;_IsValidFileType&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== File Open/Save/Folder Dialog Box ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 2709-mhz&lt;br /&gt;
 | AuthorName = MHz&lt;br /&gt;
 | AuthorURL2 = 4997-odklizec&lt;br /&gt;
 | AuthorName2 = odklizec&lt;br /&gt;
 | AuthorURL3 = 6756-danny35d&lt;br /&gt;
 | AuthorName3 = Danny35d&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Center - File Open/Save/Folder Dialog Box&lt;br /&gt;
; Author - odklizec, MHz, Danny35d&lt;br /&gt;
&lt;br /&gt;
 If StringInStr($cmdlineraw, &#039;/MoveWin&#039;) Then&lt;br /&gt;
	 Local $size, $PosX, $PosY&lt;br /&gt;
     $cmdlineraw = StringSplit(StringMid($cmdlineraw, StringInStr($cmdlineraw, &#039;/MoveWin&#039;)), &#039;:&#039;)&lt;br /&gt;
     While 1&lt;br /&gt;
         Select&lt;br /&gt;
         Case WinExists($cmdlineraw[2])&lt;br /&gt;
             $size=WinGetPos ($cmdlineraw[2])&lt;br /&gt;
             $PosX=@DesktopWidth/2 - $size[2]/2&lt;br /&gt;
             $PosY=@DesktopHeight/2 - $size[3]/2&lt;br /&gt;
             WinMove($cmdlineraw[2], &amp;quot;&amp;quot;, $PosX, $PosY)&lt;br /&gt;
             WinActivate($cmdlineraw[2])&lt;br /&gt;
             ExitLoop&lt;br /&gt;
         EndSelect&lt;br /&gt;
         Sleep(50)&lt;br /&gt;
     WEnd&lt;br /&gt;
     Exit&lt;br /&gt;
 EndIf&lt;br /&gt;
Global $PID, $Read_File, $Save_File&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Open file Dialog Box&#039;)&lt;br /&gt;
 $Read_File = FileOpenDialog ( &amp;quot;Open file Dialog Box&amp;quot;, @ScriptDir &amp;amp; &amp;quot;\&amp;quot;, &amp;quot;AutoIt Files (*.au3)&amp;quot;,3,@ScriptFullPath)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Save file Dialog Box&#039;)&lt;br /&gt;
 $Save_File = FileSaveDialog( &amp;quot;Save file Dialog Box&amp;quot;, @ScriptDir, &amp;quot;Scripts (*.aut;*.au3)&amp;quot;, 3)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
 $PID = _FindBrowseWin(&#039;Browse for Folder&#039;)&lt;br /&gt;
 FileSelectFolder(&amp;quot;Choose a folder with plugins..&amp;quot;, &amp;quot;&amp;quot;,&amp;quot;4&amp;quot;,&amp;quot;c:\&amp;quot;)&lt;br /&gt;
 ProcessClose($PID)&lt;br /&gt;
&lt;br /&gt;
 Func _FindBrowseWin($sTitle)&lt;br /&gt;
     If @Compiled Then&lt;br /&gt;
         Return(Run(@ScriptFullPath &amp;amp; &#039; /MoveWin:&#039; &amp;amp; $sTitle))&lt;br /&gt;
     Else&lt;br /&gt;
         Return(Run(@AutoItExe &amp;amp; &#039; &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot; /MoveWin:&#039; &amp;amp; $sTitle))&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;
== _MoveFileOnReboot ==&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.2.0, Creation Date = 21/03/12.&lt;br /&gt;
&lt;br /&gt;
; Function to Move or Delete a file on next reboot!&lt;br /&gt;
Func _MoveFileOnReboot($sSourcePath, $sDestPath = &amp;quot;&amp;quot;); If $sDestPath = &amp;quot;&amp;quot; the file is deleted instead of moved.&lt;br /&gt;
    Local $iRet&lt;br /&gt;
&lt;br /&gt;
    ; PendingFileRenameOperations (HKLM\SYSTEM\CurrentControlSet\Control\Session Manager)&lt;br /&gt;
    If $DestPath = &amp;quot;&amp;quot; Then&lt;br /&gt;
        $iRet = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;MoveFileExA&amp;quot;, &amp;quot;str&amp;quot;, $sSourcePath, &amp;quot;int&amp;quot;, 0, &amp;quot;dword&amp;quot;, 4)&lt;br /&gt;
    Else&lt;br /&gt;
        $iRet = DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;int&amp;quot;, &amp;quot;MoveFileExA&amp;quot;, &amp;quot;str&amp;quot;, $sSourcePath, &amp;quot;str&amp;quot;, $sDestPath, &amp;quot;dword&amp;quot;, 4)&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    Return $iRet&lt;br /&gt;
EndFunc   ;==&amp;gt;_MoveFileOnReboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _MultipleFileOpenDialog ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL =&lt;br /&gt;
 | AuthorName = /dev/null&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Local $message = &amp;quot;Hold down Ctrl or Shift to choose multiple files.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Local $filename = _MultipleFileOpenDialog($message,300,300)&lt;br /&gt;
&lt;br /&gt;
Local $var = FileOpenDialog($message, @WindowsDir &amp;amp; &amp;quot;\&amp;quot;, &amp;quot;Images (*.jpg;*.bmp)&amp;quot;, 1 + 4 )&lt;br /&gt;
&lt;br /&gt;
If @error Then&lt;br /&gt;
    MsgBox(4096,&amp;quot;&amp;quot;,&amp;quot;No File(s) chosen&amp;quot;)&lt;br /&gt;
Else&lt;br /&gt;
    $var = StringReplace($var, &amp;quot;|&amp;quot;, @CRLF)&lt;br /&gt;
    MsgBox(4096,&amp;quot;&amp;quot;,&amp;quot;You chose &amp;quot; &amp;amp; $var)&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
FileDelete($filename)&lt;br /&gt;
func _MultipleFileOpenDialog($title,$posx,$posy)&lt;br /&gt;
    Local $temp = EnvGet(&amp;quot;temp&amp;quot;)&lt;br /&gt;
    Local $filename = $temp &amp;amp; &amp;quot;\move_file_open_dialog.au3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    Local $script = &#039;Global $title = &amp;quot;&#039; &amp;amp; $title &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Global $pos_x = &#039; &amp;amp; $posx &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Global $pos_y = &#039; &amp;amp; $posy &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;AdlibRegister(&amp;quot;_Move&amp;quot;,10)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;while 1&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;    sleep(1000)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;wend&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;Func _Move()&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;   if (WinActive($title)) Then&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;      WinMove($title,&amp;quot;&amp;quot;,$pos_x,$pos_y)&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;      Exit&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;   EndIf&#039; &amp;amp; @CRLF&lt;br /&gt;
    $script &amp;amp;= &#039;EndFunc&#039; &amp;amp; @CRLF&lt;br /&gt;
&lt;br /&gt;
    FileWrite($filename,$script)&lt;br /&gt;
    ;MsgBox(0,&amp;quot;&amp;quot;,$script &amp;amp; @CRLF &amp;amp; $filename)&lt;br /&gt;
    Run(@AutoItExe &amp;amp; &amp;quot; /AutoIt3ExecuteScript &amp;quot; &amp;amp; $filename)&lt;br /&gt;
    sleep(250)&lt;br /&gt;
    Return $filename&lt;br /&gt;
EndFunc ;==&amp;gt;_MultipleFileOpenDialog()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _OpenFolder ==&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;
#cs&lt;br /&gt;
    These have been declared in Global scope as you may wish to use them elsewhere in your script.&lt;br /&gt;
#ce&lt;br /&gt;
Global $ALTSTARTUP = 0x1d&lt;br /&gt;
Global $APPDATA = 0x1a&lt;br /&gt;
Global $BITBUCKET = 0x0a&lt;br /&gt;
Global $COMMONALTSTARTUP = 0x1e&lt;br /&gt;
Global $COMMONAPPDATA = 0x23&lt;br /&gt;
Global $COMMONDESKTOPDIR = 0x19&lt;br /&gt;
Global $COMMONFAVORITES = 0x1f&lt;br /&gt;
Global $COMMONPROGRAMS = 0x17&lt;br /&gt;
Global $COMMONSTARTMENU = 0x16&lt;br /&gt;
Global $COMMONSTARTUP = 0x18&lt;br /&gt;
Global $CONTROLS = 0x03&lt;br /&gt;
Global $COOKIES = 0x21&lt;br /&gt;
Global $DESKTOP = 0x00&lt;br /&gt;
Global $DESKTOPDIRECTORY = 0x10&lt;br /&gt;
Global $DRIVES = 0x11&lt;br /&gt;
Global $FAVORITES = 0x06&lt;br /&gt;
Global $FONTS = 0x14&lt;br /&gt;
Global $HISTORY = 0x22&lt;br /&gt;
Global $INTERNETCACHE = 0x20&lt;br /&gt;
Global $LOCALAPPDATA = 0x1c&lt;br /&gt;
Global $MYPICTURES = 0x27&lt;br /&gt;
Global $NETHOOD = 0x13&lt;br /&gt;
Global $NETWORK = 0x12&lt;br /&gt;
Global $PERSONAL = 0x05&lt;br /&gt;
Global $PRINTERS = 0x04&lt;br /&gt;
Global $PRINTHOOD = 0x1b&lt;br /&gt;
Global $PROFILE = 0x28&lt;br /&gt;
Global $PROGRAMFILES = 0x26&lt;br /&gt;
Global $PROGRAMFILESx86 = 0x30&lt;br /&gt;
Global $PROGRAMS = 0x02&lt;br /&gt;
Global $RECENT = 0x08&lt;br /&gt;
Global $SENDTO = 0x09&lt;br /&gt;
Global $STARTMENU = 0x0b&lt;br /&gt;
Global $STARTUP = 0x07&lt;br /&gt;
Global $SYSTEM = 0x25&lt;br /&gt;
Global $SYSTEMx86 = 0x29&lt;br /&gt;
Global $TEMPLATES = 0x15&lt;br /&gt;
Global $WINDOWS = 0x24&lt;br /&gt;
&lt;br /&gt;
ConsoleWrite(_OpenFolder(@ScriptDir) &amp;amp; @CRLF)&lt;br /&gt;
ConsoleWrite(_OpenFolder($PRINTERS) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Open a folder or special folder variable, similar to using ShellExecute.&lt;br /&gt;
Func _OpenFolder($sFolderPath)&lt;br /&gt;
    Local $oShell = ObjCreate(&#039;shell.application&#039;)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(1, 0, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    $oShell.Open($sFolderPath)&lt;br /&gt;
    Return 1&lt;br /&gt;
EndFunc   ;==&amp;gt;_OpenFolder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _PathAppendToFilename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 31965-progandy&lt;br /&gt;
 | AuthorName = ProgAndy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
$sOrg = &amp;quot;C:\Some.Folder\some.file.ext&amp;quot;&lt;br /&gt;
$sAdd = &amp;quot;_backup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$sNew = _PathAppendToFilename($sOrg, $sAdd)&lt;br /&gt;
&lt;br /&gt;
$sStripped = _PathStripRightFromFilename($sNew, $sAdd)&lt;br /&gt;
&lt;br /&gt;
MsgBox(0, &amp;quot;&amp;quot;, $sOrg &amp;amp; @CRLF &amp;amp; $sAdd &amp;amp; @CRLF &amp;amp; $sNew &amp;amp; @CRLF &amp;amp; $sStripped)&lt;br /&gt;
&lt;br /&gt;
Func _PathAppendToFilename($sName, $sAppend)&lt;br /&gt;
    ; Author: ProgAndy&lt;br /&gt;
    If StringRegExp($sAppend, &#039;[\/\\:\?&amp;quot;&amp;lt;&amp;gt;\|\*]&#039;) Then Return SetError(1, 0, $sName)&lt;br /&gt;
    Return StringRegExpReplace($sName, &amp;quot;(\.[^\\/\.]+)$&amp;quot;, $sAppend &amp;amp; &amp;quot;\1&amp;quot;, 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;
== _PathStripRightFromFilename ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 31965-progandy&lt;br /&gt;
 | AuthorName = ProgAndy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
Func _PathStripRightFromFilename($sName, $sStrip)&lt;br /&gt;
    ; Author: ProgAndy&lt;br /&gt;
    If StringRegExp($sStrip, &#039;[\/\\:\?&amp;quot;&amp;lt;&amp;gt;\|\*]&#039;) Then Return SetError(1, 0, $sName)&lt;br /&gt;
    Return StringRegExpReplace($sName, &amp;quot;\Q&amp;quot; &amp;amp; $sStrip &amp;amp; &amp;quot;\E(\.[^\\/\.]+)$&amp;quot;, &amp;quot;\1&amp;quot;, 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;
== _SelfDelete ==&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;
; This also removes the directory which the file is in&lt;br /&gt;
; Author MHz with the directory delete addition by The Kandie Man&lt;br /&gt;
Func _SelfDelete($iDelay = 0)&lt;br /&gt;
    Local $sCmdFile&lt;br /&gt;
    FileDelete(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;)&lt;br /&gt;
    $sCmdFile = &#039;ping -n &#039; &amp;amp; $iDelay &amp;amp; &#039;127.0.0.1 &amp;gt; nul&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;:loop&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;del &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot; goto loop&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;:loop2&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;rmdir /q &amp;quot;&#039; &amp;amp; $dirToDelete &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; $dirToDelete &amp;amp; &#039;&amp;quot; goto loop2&#039; &amp;amp; @CRLF _&lt;br /&gt;
            &amp;amp; &#039;del &#039; &amp;amp; @TempDir &amp;amp; &#039;\scratch.bat&#039;&lt;br /&gt;
    FileWrite(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;, $sCmdFile)&lt;br /&gt;
    Run(@TempDir &amp;amp; &amp;quot;\scratch.bat&amp;quot;, @TempDir, @SW_HIDE)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _ShellExecuteFileSelectFolder ==&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(_ShellExecuteFileSelectFolder(&#039;Select a Folder&#039;, @HomeDrive) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
; Shell Execute a selected folder.&lt;br /&gt;
Func _ShellExecuteFileSelectFolder($sText, $sRoot, $iFlag = 0, $sInitialDir = &#039;&#039;, $hWnd = &#039;&#039;)&lt;br /&gt;
    Local $sFolder = FileSelectFolder($sText, $sRoot, $iFlag, $sInitialDir, $hWnd)&lt;br /&gt;
    If @error Then&lt;br /&gt;
        Return SetError(@error, @extended, &#039;&#039;)&lt;br /&gt;
    EndIf&lt;br /&gt;
    ShellExecute($sFolder)&lt;br /&gt;
    Return $sFolder&lt;br /&gt;
EndFunc   ;==&amp;gt;_ShellExecuteFileSelectFolder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _SuiCide ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 28010-larrydalooza&lt;br /&gt;
 | AuthorName = LarryDalooza&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; IMPORTANT MAKE A COPY OF SCRIPT BEFORE DELETION&lt;br /&gt;
; Deletes the running script&lt;br /&gt;
&lt;br /&gt;
Func SuiCide()&lt;br /&gt;
	Local $sFilePath = @TempDir &amp;amp; &#039;\SuiCide.bat&#039;&lt;br /&gt;
	FileDelete($sFilePath)&lt;br /&gt;
	FileWrite($sFilePath, &#039;loop:&#039; &amp;amp; @CRLF &amp;amp; &#039;del &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; &#039;&amp;quot;&#039; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
			&#039;ping -n 1 -w 250 zxywqxz_q&#039; &amp;amp; @CRLF &amp;amp; &#039;if exist &amp;quot;&#039; &amp;amp; @ScriptFullPath &amp;amp; _&lt;br /&gt;
			&#039;&amp;quot; goto loop&#039; &amp;amp; @CRLF &amp;amp; &#039;del SuiCide.bat&#039; &amp;amp; @CRLF)&lt;br /&gt;
	Exit Run($sFilePath, @TempDir, @SW_HIDE)&lt;br /&gt;
EndFunc   ;==&amp;gt;SuiCide&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== _UniqueFilename ==&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;
&lt;br /&gt;
ConsoleWrite(_UniqueFilename(@ScriptDir, &#039;.au3&#039;) &amp;amp; @CRLF)&lt;br /&gt;
&lt;br /&gt;
Func _UniqueFilename($sFilePath, $sExtension)&lt;br /&gt;
    Local $iRandom = 0, $sUnqiueFileName = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    $sExtension = &#039;.&#039; &amp;amp; StringRegExpReplace($sExtension, &#039;\A[\.]+&#039;, &#039;&#039;)&lt;br /&gt;
    $sFilePath = StringRegExpReplace($sFilePath, &#039;[\\/]+\z&#039;, &#039;&#039;) &amp;amp; &#039;\&#039;&lt;br /&gt;
    While 1&lt;br /&gt;
        $iRandom = Random(55, 116, 1)&lt;br /&gt;
        $sUnqiueFileName &amp;amp;= Chr($iRandom + 6 * ($iRandom &amp;gt; 90) - 7 * ($iRandom &amp;lt; 65))&lt;br /&gt;
        If FileExists($sFilePath &amp;amp; $sUnqiueFileName &amp;amp; $sExtension) = 0 And StringLen($sUnqiueFileName) &amp;gt; 7 Then&lt;br /&gt;
            ExitLoop&lt;br /&gt;
        EndIf&lt;br /&gt;
    WEnd&lt;br /&gt;
    Return $sFilePath &amp;amp; $sUnqiueFileName &amp;amp; $sExtension&lt;br /&gt;
EndFunc   ;==&amp;gt;_UniqueFilename&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;br /&gt;
&lt;br /&gt;
== Windows - Copy With Progress ==&lt;br /&gt;
&lt;br /&gt;
{{Snippet Header&lt;br /&gt;
 | AuthorURL = 19-jos&lt;br /&gt;
 | AuthorName = Jos&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; Windows - Copy With Progress&lt;br /&gt;
&lt;br /&gt;
;~ 4 Do not display a progress dialog box.&lt;br /&gt;
;~ 8 Give the file being operated on a new name in a move, copy, or rename operation if a file with the target name already exists.&lt;br /&gt;
;~ 16 Respond with &amp;quot;Yes to All&amp;quot; for any dialog box that is displayed.&lt;br /&gt;
;~ 64 Preserve undo information, if possible.&lt;br /&gt;
;~ 128 Perform the operation on files only if a wildcard file name (*.*) is specified.&lt;br /&gt;
;~ 256 Display a progress dialog box but do not show the file names.&lt;br /&gt;
;~ 512 Do not confirm the creation of a new directory if the operation requires one to be created.&lt;br /&gt;
;~ 1024 Do not display a user interface if an error occurs.&lt;br /&gt;
;~ 2048 Version 4.71. Do not copy the security attributes of the file.&lt;br /&gt;
;~ 4096 Only operate in the local directory. Don&#039;t operate recursively into subdirectories.&lt;br /&gt;
;~ 8192 Version 5.0. Do not copy connected files as a group. Only copy the specified files.&lt;br /&gt;
&lt;br /&gt;
_FileCopy(&amp;quot;C:\Installed Apps\Patches\WindowsXP-KB835935-SP2-ENU.exe&amp;quot;,&amp;quot;C:\temp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
; to copy a directory the destination directory must exist&lt;br /&gt;
&lt;br /&gt;
Func _FileCopy($fromFile,$tofile)&lt;br /&gt;
    Local $FOF_RESPOND_YES = 16&lt;br /&gt;
    Local $FOF_SIMPLEPROGRESS = 256&lt;br /&gt;
    $winShell = ObjCreate(&amp;quot;shell.application&amp;quot;)&lt;br /&gt;
    $winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)&lt;br /&gt;
EndFunc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#top | ReturnToContents]]&lt;/div&gt;</summary>
		<author><name>JohnOne</name></author>
	</entry>
</feed>