Jump to content

Recommended Posts

Posted (edited)

Hi,

At first list the files in the folders (recursively) using _FileListToArray and apply some filters.

Then loop through the array and use FileCopy.

Br, FireFox.

Edited by FireFox
  • 1 month later...
Posted (edited)

Here is something I wrote some time ago which may a good start point for you.

 

Random Copy.au3

#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/SO
#AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3"
;#AutoIt3Wrapper_Res_Field=ProductVersion|%AutoItVer%
;#AutoIt3Wrapper_Res_Field=Compile Date|%longdate% %time%

#pragma compile(inputboxres, False)
#pragma compile(FileVersion, 0.9.6.0)
#pragma compile(CompanyName, "UEZ Software Development")
#pragma compile(ProductName, "Random Copy")
#pragma compile(FileDescription, "A simple random file copier written in AutoIt")
#pragma compile(UPX, False)
#pragma compile(Icon, "Files\file_copy_48x48.ico")
;~ #AutoIt3Wrapper_Run_After=upx.exe --best --lzma "%out%"

;~ #include <Array.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Break(0)
AutoItSetOption("GUICloseOnESC", 0)
AutoItSetOption("MustDeclareVars", 1)

If Not _GDIPlus_Startup() Then Exit _WinAPI_ShowError("GDIPlus is required but not installed on this system!", False)
Global $aDPI = _GDIPlus_GraphicsGetDPIRatio()
Global Const $iBgColor = 0x80C080, $STM_SETIMAGE = 0x0172, $BM_CLICK = 245, $sTitle = "Random Copy v0.96 beta build 2014-01-07 by UEZ"
Global Const $hGUI = GUICreate($sTitle, 468, 437, -1, -1)
GUISetBkColor($iBgColor, $hGUI)
Global Const $iGroup = GUICtrlCreateGroup("", 1, -4, 465, 92)
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle($iGroup), "wstr", 0, "wstr", 0)
Global Const $iLabel_Bg = GUICtrlCreateLabel("", 4, 5, 460, 81)
GUICtrlSetBkColor(-1, 0xFFFFFF)
Global Const $iPic_Logo = GUICtrlCreatePic("", 6, 2, 456, 77)
Global Const $hPic_Logo = GUICtrlGetHandle($iPic_Logo)
Global Const $hImage = _GDIPlus_BitmapCreateFromMemory(_Logo())
;~ Global Const $hImage = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Files\RandomCopy11.png")
Global Const $hHBitmap_Logo = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_BitmapDispose($hImage)
_WinAPI_DeleteObject(GUICtrlSendMsg($iPic_Logo, 0x0172, 0, $hHBitmap_Logo))
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global Const $iButton_Src = GUICtrlCreateButton("Source", 6, 104, 50, 50)
Global Const $iInput_Src = GUICtrlCreateInput("", 63, 117, 400, 26)
GUICtrlSetStyle(-1, $ES_NOHIDESEL)
GUICtrlSetFont(-1, 10 * $aDPI[0], 400, 0, "Arial")
Global Const $iLabel_Filter = GUICtrlCreateLabel( "File Filter", 64, 159, 56, 23)
GUICtrlSetStyle( -1, BitOr($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont( -1, 10 * $aDPI[0])
Global Const $iInput_Filter = GUICtrlCreateInput( ".*\.mp3", 129, 159, 85, 23)
GUICtrlSetTip(-1, "Use regular expression syntax only!", "Information", 1, 2)
GUICtrlSetFont( -1, 10 * $aDPI[0], 400, 0, "Arial")
Global Const $iButton_Dst = GUICtrlCreateButton("Dest.", 6, 197, 50, 50)
Global Const $iInput_Dst = GUICtrlCreateInput("", 63, 209, 400, 26)
GUICtrlSetFont(-1, 10 * $aDPI[0], 400, 0, "Arial")
Global Const $iRadio_CpFull = GUICtrlCreateRadio("Copy until destination is full", 6, 273, 155, 17, $WS_GROUP)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_CHECKED)
Global Const $iCheckbox_FStructure = GUICtrlCreateCheckbox( "Keep folder structure", 64, 242, 124, 18)
GUICtrlSetFont( -1, 8.5 * $aDPI[0], 400, 0, "Arial")
GUICtrlSetTip(-1, "Create also folder names", "Information", 1, 2)
GUICtrlSetState(-1, $GUI_CHECKED)
Global Const $iRadio_CpAmount = GUICtrlCreateRadio("Copy only following amount", 6, 299, 150, 17)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetTip(-1, "Amout of data to copy (MB)", "Information", 1, 2)
Global Const $iSlider_Amount = GUICtrlCreateSlider(158, 298, 259, 22, $TBS_NOTICKS)
GUICtrlSetBkColor(-1, $iBgColor)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTip(-1, "Amout of data to copy (MB)", "Information", 1, 2)
Global Const $hSlider_Amount = GUICtrlGetHandle($iSlider_Amount)
Global Const $iInput_Amount = GUICtrlCreateInput("0", 422, 298, 42, 20, $ES_NUMBER)
GUICtrlSetStyle(-1, $ES_CENTER)
GUICtrlSetTip(-1, "Amout of data to copy (MB)", "Information", 1, 2)
GUICtrlSetFont(-1, 8.5 * $aDPI[0], 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)

Global Const $iCheckbox_CopyLimit = GUICtrlCreateCheckbox("Copy only files", 6, 334, 93, 13)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $iRadio_CopyLimitL = GUICtrlCreateRadio("larger than ", 103, 334, 77, 13, $WS_GROUP)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $iRadio_CopyLimitS = GUICtrlCreateRadio("smaller than", 179, 334, 78, 13)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetState(-1, $GUI_CHECKED)
Global Const $iLabel_CopyLimitMB = GUICtrlCreateLabel("mb", 330, 334, 25, 13)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
Global Const $iInput_CopyLimit = GUICtrlCreateInput("", 259, 332, 64, 17, $ES_NUMBER)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)

Global Const $iRadio_CopyBetween = GUICtrlCreateRadio("between", 103, 362, 63, 17)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $iInput_CopyBetweenMin = GUICtrlCreateInput("", 167, 362, 64, 17, $ES_NUMBER)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $iLabel_CopyBetweenLeft = GUICtrlCreateLabel("mb and", 235, 364, 37, 13)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
Global Const $iInput_CopyBetweenMax = GUICtrlCreateInput("", 275, 362, 64, 17, $ES_NUMBER)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $iLabel_CopyBetweenRight = GUICtrlCreateLabel("mb", 345, 364, 37, 13)
GUICtrlSetFont(-1, 8.5, 400, 0, "Arial")

Global Const $iButton_Start = GUICtrlCreateButton("Start", 6, 402, 459, 31)
GUICtrlSetFont(-1, 15 * $aDPI[0], 400, 0, "Impact")
GUICtrlSetState(-1, $GUI_DISABLE)

Global Const $hGUI_Child = GUICreate("", 468, 437, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hGUI) ;$WS_EX_TRANSPARENT
GUISetBkColor(0x0)
Global Const $iEdit_CopyLog = GUICtrlCreateEdit("" & @CRLF & @CRLF, 0, 0, 468, 437, BitOR($ES_AUTOVSCROLL, $ES_MULTILINE, $ES_READONLY))
GUICtrlSetFont(-1, 7 * $aDPI[0], 800, 0, "Arial Black", 4)
GUICtrlSetColor(-1, 0x000020)
Global Const $hEdit_CopyLog = GUICtrlGetHandle($iEdit_CopyLog)
GUICtrlSendMsg($hEdit_CopyLog, $EM_LIMITTEXT,  -1, 0)
WinSetTrans($hGUI_Child, "", 0xD0)
GUISetState(@SW_HIDE, $hGUI_Child)

GUISetState(@SW_SHOW, $hGUI)

Global $sSource, $sDest, $aFiles, $r, $z, $iFSizeSum, $bBreak, $iFree, $iPerc, $bFinished, $bSrc = False, $bDest = False, $iLinePos = 0

GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

HotKeySet("{F1}", "ShowLogScreen")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            HotKeySet("{F1}")
            GUIRegisterMsg($WM_COMMAND, "")
            GUIRegisterMsg($WM_HSCROLL, "")
            _WinAPI_DeleteObject($hHBitmap_Logo)
            _GDIPlus_Shutdown()
            GUIDelete()
            Exit
        Case $iButton_Src
            $sSource = FileSelectFolder("Please select a folder which you want to copy", "", 6, "", $hGUI)
            If Not @error Then
                GUICtrlSetData($iInput_Src, $sSource)
                $bSrc = True
                If $bDest And BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_UNCHECKED) Then
                    GUICtrlSetState($iCheckbox_CopyLimit, $GUI_ENABLE)
                    GUICtrlSetState($iButton_Start, $GUI_ENABLE)
                EndIf
                If BitAND(GUICtrlRead($iRadio_CpAmount), $GUI_CHECKED) Then GUICtrlSendMsg($iRadio_CpAmount, $BM_CLICK, 0, 0)
            EndIf
        Case $iButton_Dst
            $sDest = FileSelectFolder("Please select the destination folder", "", 7, "", $hGUI)
            If Not @error Then
                GUICtrlSetData($iInput_Dst, $sDest)
                $iFree = DriveSpaceFree(StringLeft(GUICtrlRead($iInput_Dst), 3))
                GUICtrlSetLimit($iSlider_Amount, Floor($iFree), 0)
                GUICtrlSetData($iSlider_Amount, $iFree)
                GUICtrlSetData($iInput_Amount, Floor($iFree))
                If $bSrc And BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_UNCHECKED) Then
                    GUICtrlSetState($iCheckbox_CopyLimit, $GUI_ENABLE)
                    GUICtrlSetState($iButton_Start, $GUI_ENABLE)
                EndIf
                $bDest = True
                If BitAND(GUICtrlRead($iRadio_CpAmount), $GUI_CHECKED) Then GUICtrlSendMsg($iRadio_CpAmount, $BM_CLICK, 0, 0)
            EndIf
        Case $iButton_Start
            If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) = $GUI_CHECKED Then
                If BitAND(GUICtrlRead($iRadio_CopyLimitL), $GUI_CHECKED) = $GUI_CHECKED Or BitAND(GUICtrlRead($iRadio_CopyLimitS), $GUI_CHECKED) = $GUI_CHECKED Then
                    If GUICtrlRead($iInput_CopyLimit) = "" Then
                        GUICtrlSetBkColor($iInput_CopyLimit, 0xFF0000)
                        ContinueCase
                    Else
                        GUICtrlSetBkColor($iInput_CopyLimit, 0xFFFFFF)
                    EndIf
                ElseIf BitAND(GUICtrlRead($iRadio_CopyBetween), $GUI_CHECKED) = $GUI_CHECKED Then
                    If GUICtrlRead($iInput_CopyBetweenMin) = "" Or GUICtrlRead($iInput_CopyBetweenMax) = "" or Int(GUICtrlRead($iInput_CopyBetweenMin)) >= Int(GUICtrlRead($iInput_CopyBetweenMax)) Then
                        GUICtrlSetBkColor($iInput_CopyBetweenMin, 0xFF0000)
                        GUICtrlSetBkColor($iInput_CopyBetweenMax, 0xFF0000)
                        ContinueCase
                    Else
                        GUICtrlSetBkColor($iInput_CopyBetweenMin, 0xFFFFFF)
                        GUICtrlSetBkColor($iInput_CopyBetweenMax, 0xFFFFFF)
                    EndIf
                EndIf
            EndIf
            HotKeySet("{ESC}", "_Break")
            $z = 1
            $iFSizeSum = 0
            $bBreak = False
            $bFinished = False
            GUISetState(@SW_SHOWNA, $hGUI_Child)

            GUICtrlSetState($iButton_Src, $GUI_DISABLE)
            GUICtrlSetState($iButton_Dst, $GUI_DISABLE)
            GUICtrlSetState($iInput_Src, $GUI_DISABLE)
            GUICtrlSetState($iInput_Dst, $GUI_DISABLE)
            GUICtrlSetState($iInput_Filter, $GUI_DISABLE)
            GUICtrlSetState($iCheckbox_FStructure, $GUI_DISABLE)
            GUICtrlSetState($iRadio_CpFull, $GUI_DISABLE)
            GUICtrlSetState($iRadio_CpAmount, $GUI_DISABLE)
            GUICtrlSetState($iSlider_Amount, $GUI_DISABLE)
            GUICtrlSetState($iInput_Amount, $GUI_DISABLE)
            GUICtrlSetState($iCheckbox_CopyLimit, $GUI_DISABLE)
            GUICtrlSetState($iRadio_CopyLimitL, $GUI_DISABLE)
            GUICtrlSetState($iRadio_CopyLimitS, $GUI_DISABLE)
            GUICtrlSetState($iInput_CopyLimit, $GUI_DISABLE)
            GUICtrlSetState($iRadio_CopyBetween, $GUI_DISABLE)
            GUICtrlSetState($iInput_CopyBetweenMin, $GUI_DISABLE)
            GUICtrlSetState($iInput_CopyBetweenMax, $GUI_DISABLE)

            GUISetState(@SW_DISABLE, $hGUI_Child)
            _SendMessage($hEdit_CopyLog, $EM_SETSEL, $iLinePos, $iLinePos)
            GUICtrlSetData($iEdit_CopyLog, "Please wait or press ESC to end." & @CRLF & @CRLF)
            GUICtrlSetData($iEdit_CopyLog, "Enumerating files (may take a while)!" & @CRLF, 1)
            Dim $aFiles[16384][2]
            $r = EnumFiles(GUICtrlRead($iInput_Src), $aFiles, GUICtrlRead($iInput_Filter))
            If @error Or $bBreak Then
                GUISetState(@SW_ENABLE, $hGUI_Child)
                GUISetState(@SW_HIDE, $hGUI_Child)
                ContinueCase
            EndIf
            ReDim $aFiles[$r][2]
            GUICtrlSetData($iEdit_CopyLog, @CRLF & "Found " & $aFiles[0][0] & " files" & @CRLF, 1)
            GUICtrlSetData($iEdit_CopyLog, "Shuffling files" & @CRLF, 1)
            Shuffle_Array($aFiles, 1)
;~          _ArrayDisplayConsole($aFiles, 120)
            GUICtrlSetData($iEdit_CopyLog, "Starting copy process by selecting random files" & @CRLF, 1)
            CopyFiles($aFiles, GUICtrlRead($iInput_Dst))
            $iFree = DriveSpaceFree(StringLeft(GUICtrlRead($iInput_Dst), 3))
            GUICtrlSetLimit($iSlider_Amount, $iFree)
            GUICtrlSetData($iSlider_Amount, $iFree)
            GUICtrlSetData($iInput_Amount, Floor($iFree))
            GUICtrlSetState($iButton_Src, $GUI_ENABLE)
            GUICtrlSetState($iButton_Dst, $GUI_ENABLE)
            GUICtrlSetState($iInput_Src, $GUI_ENABLE)
            GUICtrlSetState($iInput_Dst, $GUI_ENABLE)
            GUICtrlSetState($iInput_Filter, $GUI_ENABLE)
            GUICtrlSetState($iCheckbox_FStructure, $GUI_ENABLE)
            GUICtrlSetState($iRadio_CpFull, $GUI_ENABLE)
            GUICtrlSetState($iRadio_CpAmount, $GUI_ENABLE)
            GUICtrlSetState($iSlider_Amount, $GUI_ENABLE)
            GUICtrlSetState($iInput_Amount, $GUI_ENABLE)
            GUICtrlSetState($iCheckbox_CopyLimit, $GUI_ENABLE)
            If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) = $GUI_CHECKED Then
                GUICtrlSetState($iRadio_CopyLimitL, $GUI_ENABLE)
                GUICtrlSetState($iRadio_CopyLimitS, $GUI_ENABLE)
                GUICtrlSetState($iInput_CopyLimit, $GUI_ENABLE)
                GUICtrlSetState($iRadio_CopyBetween, $GUI_ENABLE)
                GUICtrlSetState($iInput_CopyBetweenMin, $GUI_ENABLE)
                GUICtrlSetState($iInput_CopyBetweenMax, $GUI_ENABLE)
            EndIf
        Case $iRadio_CpAmount
            If $bSrc And $bDest Then
                GUICtrlSetState($iInput_Amount, $GUI_ENABLE)
                GUICtrlSetState($iSlider_Amount, $GUI_ENABLE)
            EndIf
        Case $iRadio_CpFull
            GUICtrlSetState($iInput_Amount, $GUI_DISABLE)
            GUICtrlSetState($iSlider_Amount, $GUI_DISABLE)
        Case $iCheckbox_CopyLimit
            If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) = $GUI_CHECKED Then
                GUICtrlSetState($iRadio_CopyLimitL, $GUI_ENABLE)
                GUICtrlSetState($iRadio_CopyLimitS, $GUI_ENABLE)
                GUICtrlSetState($iInput_CopyLimit, $GUI_ENABLE)
                GUICtrlSetState($iRadio_CopyBetween, $GUI_ENABLE)
                If BitAND(GUICtrlRead($iRadio_CopyLimitL), $GUI_CHECKED) = $GUI_CHECKED Or BitAND(GUICtrlRead($iRadio_CopyLimitS), $GUI_CHECKED) = $GUI_CHECKED Then
                    GUICtrlSetState($iInput_CopyBetweenMin, $GUI_DISABLE)
                    GUICtrlSetState($iInput_CopyBetweenMax, $GUI_DISABLE)
                    GUICtrlSetState($iInput_CopyLimit, $GUI_ENABLE)
                ElseIf BitAND(GUICtrlRead($iRadio_CopyBetween), $GUI_CHECKED) = $GUI_CHECKED Then
                    GUICtrlSetState($iInput_CopyLimit, $GUI_DISABLE)
                    GUICtrlSetState($iInput_CopyBetweenMin, $GUI_ENABLE)
                    GUICtrlSetState($iInput_CopyBetweenMax, $GUI_ENABLE)
                EndIf
            Else
                GUICtrlSetState($iRadio_CopyLimitL, $GUI_DISABLE)
                GUICtrlSetState($iRadio_CopyLimitS, $GUI_DISABLE)
                GUICtrlSetState($iInput_CopyLimit, $GUI_DISABLE)
                GUICtrlSetState($iRadio_CopyBetween, $GUI_DISABLE)
                GUICtrlSetState($iInput_CopyBetweenMin, $GUI_DISABLE)
                GUICtrlSetState($iInput_CopyBetweenMax, $GUI_DISABLE)
            EndIf
        Case $iRadio_CopyLimitL, $iRadio_CopyLimitS
            GUICtrlSetState($iInput_CopyBetweenMin, $GUI_DISABLE)
            GUICtrlSetState($iInput_CopyBetweenMax, $GUI_DISABLE)
            GUICtrlSetState($iInput_CopyLimit, $GUI_ENABLE)
        Case $iRadio_CopyBetween
            GUICtrlSetState($iInput_CopyLimit, $GUI_DISABLE)
            GUICtrlSetState($iInput_CopyBetweenMin, $GUI_ENABLE)
            GUICtrlSetState($iInput_CopyBetweenMax, $GUI_ENABLE)
    EndSwitch
    If $bBreak Then
        MsgBox(BitOR($MB_TOPMOST, $MB_ICONWARNING) , "Warning", "The operation has been aborted!", 30, $hGUI)
        $bBreak = False
        $bFinished = False
    ElseIf $bFinished Then
        MsgBox(BitOR($MB_TOPMOST, $MB_ICONINFORMATION) , "Information", "Copy process has been finished.", 30, $hGUI)
        $bFinished = False
    EndIf
WEnd

Func CopyFiles($aFiles, $sDest)
    If GUICtrlRead($iInput_Src) = "" Then
        $bSrc = False
        Return 0
    ElseIf $sDest = "" Then
        $bDest = False
        Return 0
    EndIf
    If StringRight($sDest, 1) <> "\" Then $sDest &= "\"
    GUICtrlSetState($iButton_Start, $GUI_DISABLE)
    Local $iFree = DriveSpaceFree(StringLeft(GUICtrlRead($iInput_Dst), 3)) * 1024^2 , $w, $z, $iSize, $sLine, _
          $bFStructure = BitAND(GUICtrlRead($iCheckbox_FStructure), $GUI_CHECKED)
    If BitAND(GUICtrlRead($iRadio_CpAmount), $GUI_CHECKED) Then
        $iFree = GUICtrlRead($iInput_Amount) * 1024^2
    EndIf
    Local $iTimer = TimerInit()
    For $iPerc = 1 To $aFiles[0][0] - 1
        If $iFree - $aFiles[$iPerc][1] > -1 Then
            $iSize = Round($aFiles[$iPerc][1] / 1024^2, 2) & " mb"
            If StringLen($iSize) > 7 Then
                $sLine = $iSize & @TAB & $aFiles[$iPerc][0]
            Else
                $sLine = $iSize & @TAB & @TAB & $aFiles[$iPerc][0]
            EndIf
            Switch $bFStructure
                Case 0
                    If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) And BitAND(GUICtrlRead($iRadio_CopyLimitL), $GUI_CHECKED) And $aFiles[$iPerc][1] / 1024^2 < Int(GUICtrlRead($iInput_CopyLimit)) Then ContinueCase
                    If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) And BitAND(GUICtrlRead($iRadio_CopyLimitS), $GUI_CHECKED) And $aFiles[$iPerc][1] / 1024^2 > Int(GUICtrlRead($iInput_CopyLimit)) Then ContinueCase
                    If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) And BitAND(GUICtrlRead($iRadio_CopyBetween), $GUI_CHECKED) And ($aFiles[$iPerc][1] / 1024^2 < Int(GUICtrlRead($iInput_CopyBetweenMin)) Or $aFiles[$iPerc][1] / 1024^2 > Int(GUICtrlRead($iInput_CopyBetweenMax))) Then ContinueCase
                    If FileCopy($aFiles[$iPerc][0], $sDest & StringRegExpReplace($aFiles[$iPerc][0], ".*\\(.*)", "\1"), 8) Then
                        GUICtrlSetData($iEdit_CopyLog, $sLine & @CRLF, 1)
                        $iFree -= $aFiles[$iPerc][1]
                        $z += $aFiles[$iPerc][1]
                    Else
                        GUICtrlSetData($iEdit_CopyLog, "Failed to copy " & $aFiles[$iPerc][0] & @CRLF, 1)
                    EndIf
                Case Else
                    If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) And BitAND(GUICtrlRead($iRadio_CopyLimitL), $GUI_CHECKED) And $aFiles[$iPerc][1] / 1024^2 < Int(GUICtrlRead($iInput_CopyLimit)) Then ContinueCase
                    If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) And BitAND(GUICtrlRead($iRadio_CopyLimitS), $GUI_CHECKED) And $aFiles[$iPerc][1] / 1024^2 > Int(GUICtrlRead($iInput_CopyLimit)) Then ContinueCase
                    If BitAND(GUICtrlRead($iCheckbox_CopyLimit), $GUI_CHECKED) And BitAND(GUICtrlRead($iRadio_CopyBetween), $GUI_CHECKED) And ($aFiles[$iPerc][1] / 1024^2 < Int(GUICtrlRead($iInput_CopyBetweenMin)) Or $aFiles[$iPerc][1] / 1024^2 > Int(GUICtrlRead($iInput_CopyBetweenMax))) Then ContinueCase
                    If FileCopy($aFiles[$iPerc][0], $sDest & StringRegExpReplace($aFiles[$iPerc][0], "(?i)[a-z]:\\(.*)", "\1"), 8) Then
                        GUICtrlSetData($iEdit_CopyLog, $sLine & @CRLF, 1)
                        $iFree -= $aFiles[$iPerc][1]
                        $z += $aFiles[$iPerc][1]
                    Else
                        GUICtrlSetData($iEdit_CopyLog, "Failed to copy " & $aFiles[$iPerc][0] & @CRLF, 1)
                    EndIf
            EndSwitch
            If $bBreak Then
                GUICtrlSetData($iEdit_CopyLog, @CRLF & @CRLF & "Break signal received!" & @CRLF, 1)
                ExitLoop
            EndIf
        EndIf
        WinSetTitle($hGUI, "", StringFormat("%.2f mb copied / %.2f mb free / Time: %.2f s", $z / 1024^2, $iFree / 1024^2, TimerDiff($iTimer) / 1000))
    Next
    If Not $bBreak Then $bFinished = True
    GUICtrlSetData($iEdit_CopyLog, @CRLF & Round($z / 1024^2, 2) & " mb copied in " & StringFormat("%.2f seconds", TimerDiff($iTimer) / 1000) & "." & @CRLF, 1)
    HotKeySet("{ESC}")
    $iLinePos = _SendMessage($hEdit_CopyLog, $EM_LINEINDEX, -1) + 2
    GUISetState(@SW_ENABLE, $hGUI_Child)
    Sleep(2500)
    GUISetState(@SW_HIDE, $hGUI_Child)
    GUICtrlSetState($iButton_Start, $GUI_ENABLE)
    WinSetTitle($hGUI, "", $sTitle)
EndFunc

Func EnumFiles($sPath, ByRef $aFiles, $sFilter = "*", $bRecursive = True)
    If $bBreak Then Return 0
    If StringRight($sPath, 1) = "\" Then $sPath = StringTrimRight($sPath, 1)
    Local $hSearch = FileFindFirstFile($sPath & "\*")
    If $hSearch = -1 Then Return SetError(1, 0, 0)
    Local $sFileName, $iCells = 1024, $sFile, $iExtended
    While 1
        $sFileName = FileFindNextFile($hSearch)
        If @error Then ExitLoop
        $iExtended = @extended
        $sFile = $sPath & "\" & $sFileName
        If $iExtended And $bRecursive Then
            EnumFiles($sFile, $aFiles, $sFilter, $bRecursive)
        EndIf
        If Not $iExtended Then
            If $sFilter <> "*" Then
                If StringRegExp($sFile, "(?i)" & $sFilter) Then
                    $aFiles[$z][0] = $sFile
                    $aFiles[$z][1] = FileGetSize($sFile)
                    $iFSizeSum += $aFiles[$z][1]
                    $z += 1
                EndIf
            Else
                $aFiles[$z][0] = $sFile
                $aFiles[$z][1] = FileGetSize($sFile)
                $iFSizeSum += $aFiles[$z][1]
                $z += 1
            EndIf
            If $z = UBound($aFiles) Then ReDim $aFiles[$z + $iCells][2]
        EndIf
    WEnd
    FileClose($hSearch)
    $aFiles[0][0] = $z - 1
    $aFiles[0][1] = $iFSizeSum
    Return $z
EndFunc

Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg, $wParam, $lParam
    Switch BitAND($wParam, 0x0000FFFF)
        Case $iInput_Dst
            If _WinAPI_HiWord($wParam) = $EN_KILLFOCUS And GUICtrlRead($iInput_Dst) <> "" Then
                $iFree = DriveSpaceFree(StringLeft(GUICtrlRead($iInput_Dst), 3))
                GUICtrlSetLimit($iSlider_Amount, $iFree)
                GUICtrlSetData($iSlider_Amount, $iFree)
                GUICtrlSetData($iInput_Amount, Floor($iFree))
            EndIf
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc

Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg, $wParam, $lParam
    Switch $lParam
        Case $hSlider_Amount
            GUICtrlSetData($iInput_Amount, GUICtrlRead($iSlider_Amount))
    EndSwitch
EndFunc   ;==>WM_HSCROLL

; #FUNCTION# ======================================================================================
; Name ................:    Shuffle_Array()
; Version .............:    v0.50 build 2011-05-24 beta
; Description .........:    Shuffles an array - support 1D and 2D arrays only
; Syntax ..............:    Shuffle_Array(ByRef $array, $startindex = 0, $endindex = 0)
; Parameters ..........:    $array - the array to shuffle
;                           $startindex = from which index to start the shuffling
;                           $endindex = to which index to start the shuffling; 0 means last index of the array
; Return values .......:    True
;                           Failure 1 - $array is not an array
;                           Failure 2 - array has more than 2 dimensions
;                           Failure 3 - array is empty
;                           Failure 4 - $startindex / $endindex are set wrongly
; Author ..............:    UEZ
; Modified ............:
; Remarks .............:
; Related .............:    Array
; =================================================================================================
Func Shuffle_Array(ByRef $array, $startindex = 0, $endindex = 0)
    If Not IsArray($array) Then Return SetError(1, 0, 0)
    If UBound($array, 0) > 2 Then Return SetError(2, 0, 0)
    If UBound($array) = 1 Then Return SetError(3, 0, 0)
    Local $u1
    If Not $endindex Then
        $u1 = UBound($array) - 1
    Else
        If $endindex > $startindex And $endindex < UBound($array) Then
            $u1 = $endindex
        Else
            Return SetError(4, 0, 0)
        EndIf
    EndIf
    Local $i, $j, $r
    If UBound($array, 2) Then
        Local $aSwap[1][UBound($array, 2)], $u2 = UBound($array, 2) - 1
        For $i = $startindex To $u1
            $r = Random($startindex, $u1, 1)
            For $j = 0 To $u2
                $aSwap[0][$j] = $array[$i][$j]
                $array[$i][$j] = $array[$r][$j]
                $array[$r][$j] = $aSwap[0][$j]
            Next
        Next
    Else
        Local $aSwap[1]
        For $i = $startindex To $u1
            $r = Random($startindex, $u1, 1)
            $aSwap[0] = $array[$i]
            $array[$i] = $array[$r]
            $array[$r] = $aSwap[0]
        Next
    EndIf
    Return 1
EndFunc

Func _Break()
    If WinActive($hGUI) Or WinActive($hGUI_Child) Then
        $bBreak = True
        ConsoleWrite("Break signal sent!" & @LF)
    EndIf
EndFunc

Func ShowLogScreen()
    If WinActive($hGUI) Or WinActive($hGUI_Child) Then
        Local $iState = WinGetState($hGUI_Child)
        If BitAND($iState, 2) = 2 Then
            GUISetState(@SW_HIDE, $hGUI_Child)
        ElseIf BitXOR(WinGetState($hGUI_Child), 2) Then
            GUISetState(@SW_SHOWNA, $hGUI_Child)
        EndIf
    EndIf
EndFunc

Func _GDIPlus_GraphicsGetDPIRatio($iDPIDef = 96)
    Local $hGfx = _GDIPlus_GraphicsCreateFromHWND(0)
    If @error Then Return SetError(1, @extended, 0)
    Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetDpiX", "handle", $hGfx, "float*", 0)
    If @error Then Return SetError(2, @extended, 0)
    Local $iDPI = $aResult[2]
    _GDIPlus_GraphicsDispose($hGfx)
    Local $aResults[2] = [$iDPIDef/ $iDPI, $iDPI / $iDPIDef]
    Return $aResults
EndFunc   ;==>_GDIPlus_GraphicsGetDPIRatio

;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-11-05

Func _Logo($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $Logo
    $Logo &= 'iVBORw0KGgoAAAANSUhEUgAAAcgAAABNCAYAAAAiq/Q1AABmZUlEQVR4Xu1dCVhVVde+IiIiIiKCpIioIKHiSBKRSIiaaJg5pEkOYU5pWqZpmpqmpmamlZZDlqbNsw2WY6VpOWTZ4JxDmvPMfM//nm+/z96Hk9d7D1Pf9/zX53kf5HLPPnuvvdZ611p7n31s7n9uuOGGG2644YYbbrjhhhtuuOGGG2644YYbbrjhhhtuuOGGG2644YYbbrjhhhtuuOGGG2644YYbbrjhhhtuuOGGG2644YYbbrjhhhtuuOGGG2644YYbbrjhhhtuuOGGG2644YYbbrjhhhtuuOGGG2644YYbNpuHA7j/KXi4gv/lMf0vjdENty6Z2vE0wKPIcP9zK7JJubwkzIrmlpUn4eUARTbO0hyTs3E5G6ebLP/7yeh/TZeKYJdehLeEQ9tU+G/R8eK+jwPfDvy7tutRVJRinzwJs3L5KChF+39LlJSVyfj8AH8gAPAl/iEzy4RDWNWJYnQqPgb4SjgdozuI+jeIyAI8zPiv1SW2adku1X38TPA13scMUx99SkHHPYywMGeFatc8LyU1Lg8zrChrURxkMRuSlwNFDgSaAGlADyIBCCIR+Eqhllo05Ryl6Ii8KYMwoC6wBFhKtKecAkmY/kbjdAIfwiG5FmO05+HAqfix79FAHJACtAXaE4lALFBDjVGNk22UehBV+vr37/fFof0SFvTJmgO2rksNHehSK6ApEGLWJWUPzvXIJI8uwCKDTU4CevM+wWbbJOoCnYE+RBegJRBqTcetE5dDP0w49wGEc0I0k78/5VGDCDCNi+2UTGnN24nCWnCUTtndekRn7gczICICmAD8CPwJHCfWU3GoNFTiYiRJC8GG02CiuEjXgfEPBZYDXwPrgHxckYefOnYBXYFwIIzKFyKN88YIJEwGTHK1og/Wo+0oYAAwD/gQ2MKx/AHsBfYRe4DtwJfAa8B4oAP1ItioG2aiLM3SYSlE9aVPlmZbNmdJqooRaITjYE0RpxPCdJkY2W4MMBx4CfgE+B74yaRLe6lL24DVwGJgFJBEmwlin/2ULql+OSDHHsB+wG5AJnCc91lF39ZJ2qYg70eBzcDfwCngCLATWEMdnwYMJLmHGkncVaJ0QlxmPxwofcKNfYCnU0JU7QYx6enJoOF14FPgM44vxiBvHwckaUkRVAcU/EzKSoUFOGhOTCQQZUIooRyN86jFeZ/NwlIRUwLQjc5+IoU0nQpxycPLplWsbtMCG9k0vzCbVkYQwFY6/zD20Z/tsj8lsabnOCp2Xv51DMsZPvtBwz9B49PK+do0/Wejh2z2yhG2fH5+GPgW+AbYBGwENriAtcDHnIPpNMo4g8MILHqmxrFzPNSD5+jEzgA5gD7fmncVm+Zbw6b51wXqQQ9q2bQK1fA3TzFmIB+4ROJ8jwQbITMC6ofRuZVU6bDohOk8qndSaiuVNW/eO5QZTjyd/ThgKQObr4C1xJfAmwx6RtN2G3J+ZCZlIQgDHPbJl4HSYpLLeSBX6lKASZdC8VlV/K2s1KU8XvMLsIxkFy594XUct7kPHLM9uJlNazbcpkV0sWn6/ytUlfewA6f5vU20ua3A0fJ+tsxqjW2ajoohNq1s+QI6fg04Caxgv0w6Trk5lJnj8i/bSaCtzwbeJml9AcwBMoB0oLfM9Iz2b9ZRtsu+Nef1c+hXdgF/cTx2Wxmb5lHuP/NzEb8PMnCPv0s2axqcj4HYGlJIoexEW6AnbzIWmAG8RJZ+n4q6kU5oB6Op3SasAbYRW4B3gFG8V7ADwbB/jsmc13Ul+b0FbKCg9jGyOgdcAa4R2V6VbFp9KFeHRTbtno9sWtJMm1Y1yqbReS5ltFG3qCTpXHlUROwclI+5NGMG72Mhq/czRXaHAHt4ik2Le8ym3QHZVAzGz+dsWp22NKqiwU5ncY3G/Ad1YypLUmHOMzXAuZONBCYzis8CtApwYrVa2bSYfjbt9gk2re0L'
    $Logo &= 'Ni11qU1LW2nTOr9p0zq9ZtPaL7RprafatFg4oHoddPIUZEqyPEm97QyEG4jSz5wBOCNEi8GRY+IinGaIjnUwAIgjmpuDVnPWVcJZYxTteIshGzsCXKbO2M36xHnJBi4Ax4DdJM4FwAgglboQIvXKUYYEOJBXE/q7QyRFzSfIpoW3sWlNMmxaq0k2rd2LJl1ahs9esmmJT9m05oPFdyvVhC7BabONQ8BCINmg8wEmXQIUQXNsWsJkm/boVZs24Heb1uMzce+Wj0BfW9u0ynUhjzKQh0lOejJwC+y568fo52Lo+NM2rcUwmxbV1abVjIee34S+lbOdpw+dSB2PMAWvfiaZSVBXAkxZ3AoG0fsYnGZxDjUPBA7o5zVmtCeJR+l3FTmTDDmPQ8g9yxkE/CZ8iGjXo6yYl5AWGNc9GO9IMT4GEHOAKIOs/ZySpIkc25oUcxezhP3AUQ7grIioBdFwovOl4jKa8vS2aV7IPMpXEihbTjjGsoLNjYp9gcQaZ1ISU8nBYUSVAKxn366xTU1HuYoiiguOsWm1E0GIaYi47kTffMTforvbtAd32rSJmk175BiUZaA+YYAYdxrQkH0KKlypVfWV4+rDct1EYgwwhZnJd8APjEx3ETsZbGzn34aaFMesqD7E9Yg3gmtr7RkFp5rQiUFBGJ2Rdu+HNm3sZZs2IReyGaRnVwJRnWGQs62jLYi29ZMw5Icg+242LfRWQbzUBzuDmAPASuU0FAGZ12uc6EUSo9SrgFYlHBE3SLEjHFb/b2zaiCM2bXy2mPvr4Um7TRt91qYN3GHTur1l024bDSfSUhg1yf1XYJShMhJk7KOzNRMHQZIj+JvLUCb7cGwjju8ZwWx4CW3+ELEb6OdIz0qq1Mu2IxmcXtLtEBmPpgeyHp5w3uGw345Cd1ojsEmZbtOSp2JeRoGg+oAYELhVixbfNwRh2czYjjJIWsfx9jM5YbPTNwcSPYAf2B7uI/rReYlNy9gK3/GXsBFHujQhz6aNOonvfm/T7n4NJDXUpgU1kHqfRdtPl2Sk+mS2bX/Oj1YnBcH9yyA6oMvbNq3fZujqLgT7zwg/V84HP++CnPB70mTR3zrJuPcw9Pc4+4U+jz5j04b+ZtPSvwKJPwiZV7Zpwg5lsLGVgUbK9ZYYCH8mKJ9STvtYyr0ibEVkq5XhO8JuR3DaG8Hp46hI9UKG7S8+r95EZHpMZvoDkbxfCGUy35DsZLJdZOfCh9S6DXpwP8Y6CfOyFONZY9OG7LFpYy5AT54R32EwEmuw2QAniY9STk7OHjCw3aeqIDWShV0fXEWwctU6YObGIJsECB9E0wgE06IflHQ4OjYWDhAK2/FZKMFLmKjFcCxLgVcF2k4R5azghoiw5kPJx4CsUngfkBqVpJUDJfF0QI6tWK6w68INgZAb90DE9hj6MQeREu5/3ztwiF/atEHf2bThP9m0h35AJjQeBhemG6AQ6rDdNm1qLgT7CkokGCeVYypJO4r98S9kGc2TBDuGinPFgEt04HkuZl5nZIRVMNr0pbxmGwh2B4ObDSSK14C5dBDrGfSckJEbwL8ls29aPyjZ0/k2bZqm/1/oQxmg7TTxmTWItiZfsWnjTti0kb8iONlo03quAnlCNxp0geyry+g6h2vDs00Rn78TYvAyOLSfgDw9Y4zpAbJ/A4R3SMyz5X7b4UxAlhlfI1MYBbKtI+yC8pvOQCpc9VERuYMKwgRWWn4gPiMxTARS6SDeJFZQDiMYxESbS3JGeTjJFmN57y84/+dlubmskD/17AjJkxmyKWAtmR2hvhzfXu9gm71pb9jjAgQ16bBVONA2k2G/u3TdETo0FaTzVDbm5ZxNe+wAnPw2m9Z3NX0NMrYWfZGxJQqfVa7CP0jzNIOCyUBLcxBmktkYysOuy6clguj7PxL9gF5Y1CXR77EgqPQPhO+kzPOZlAwxBVzUJUDZ+ErOlxbUEOOLxDiT4Pcgp+bIZG++W5BNg87wdduFzT2Vif7q'
    $Logo &= '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'
    $Logo &= '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'
    $Logo &= 'ecqS4wBma5EuRNHm9cdgYIbe1i2dMMbr3O/ty2IM714TMnDUr3Hvy2xKxwKDUScDWqWqIJSTro/zXSjPXDjRyJayzW3c5djPUGbSQiJRqngMUTd2n32UX/p6sRxjatBK9vE80MVAks1ZCtdujoeT3SJlWGpYgrWO5D4yeNnDikGsaat6exK8NvlL9NGiHD/KA6mC3KZvgh7dJTcwLWQG1pyy6MSsT3v8Hdhwtrq+VS/hcG7tCkd8/Mb3WomArNtYSR7fAym8R13zzr9CZo/+7PslEkF+7RiQ+R8lO08f5kL2X8C3VEC1xB9EFGizc5PVJ5RdOjdIaXfcD33fX/q6Pm8n/K+yx9VcnklgMqD1x6aeYGywYx9xTeljPgIob1+Z5S2h7NqSPzYgA7RXRx8HIcB4LwsJzF4xtx/mOfb7xjl66yJ0FEnPYFxfsTKuL4RezIUcU4dBlkj2qoX9x2/auZM/lUFHpNVNOoGMBrQoTNCnGNgarfTxJRzH83ByTZLlBHxLA40x1ePfB+y60S8/jGvtxdgHtDUa9fab6sooei6QaCqd+bhIkKHAIp3wk3sXrV+fgEBj75SO+JJhITsV0PwCoWxXrbX5Eci5WYo0yJXAAGZk3YSMxT3fPVW6emCej+eROfn4SZ34znBeah/glO7w7sWu29XZpd+/z2H4jyyBISJL467H8Ybt5JEkluWAPTgMsjxj/R7vodw4cI5wjj4VZaDwMh1THO1jAZAbEg7S/k2Xm7r+hW24tjbKWYlwcNtufK9VfyG7ekAS5Fagg8GpBJucitXs0ZtZ79VyXrb8Zqlip3WNSAQ3G0p4riCPNzG22+6W+p7J3b3DBBGJjUJVUQ0YswLzmlv6uvRZDqpJowQx8NGJAUB7zoX21knMLcrQvVByfuy10u3bJyixDpmHgPoWBFp6kKYeyZoCpFJPBgK79M1WtRtheehRkPo0ENZmqY9O8QU4YDwCPF0nUgfi9zwL/eT1Q1+AP6ymnrnnktF4yjJWbjyz8JhHgCRICOBzOM6N2r+DNSCCgdiWXc5bLgaPZAYXRZKMJkFoPZHZJHSG0qA8s8FefH34AIoY30kKeDvQyyhYJ5GHlCud43sVQORpg4ver5c2Qy4qi3wTSOO6l1YZBLkuz7qsY9uxPfUQdQ+2uxzQWneHbPN5zb+Er7JgaE8V2G4+hJnzHMBerwnKv2tLt0+fnkdGAkO+A+XMEBCXZzlJ4Af53GIC56YXy6vaXQMxlkzr9/oQ+njvKDn+bGYXGUAH3qcpd/vaU3qL7xuvX5sD53oYRHvU0f2F7izbg/LjQBmM5DI772TY+RdSaIJU1apkvRRXPcJmn/q+kFkFX8hmkOxbieFrBFBPvSud+zlgNAPCHgy8tFZdUInZU7q69C5KjSMXoAzeEeX66vKRLjvntB8JUvvyivBzq8+DCErZRz/xBnRwNDLrH1G+PAKibC71cRP9RXtiNpDVKAEZ8SYE7acxr9dcv8/7CGICa8LPlUdl7Q/r/XwDla7kXjKROAC8wHnuwYpLE0eJjjOC7AbYozDwLzGorZp1fH4CAzyACcQgt9rFZ5syIdhHrLXz/BeYgCaylLQASKQTiKJjyNYJdBXWxPogc+iPE1o25/L6YsD3IIQRz2GiQmTZbADQillkqJPNOuaj+77wRUSYPqbo/foOji6lpzTwTKA3ofkFwAEesNbeehjZLSqDXAykMzPtwJKEltxdyAPX/Kv4DLpVPUw908SodWFZT9HHjVdLry/fZoMc4TD0bO12BFJTV8GBYGNV3UZSlp+SxE+R0PIB7dmPoad5Vu8nrpn/tWw/E1hJ4k2lXqbw+UptzEtwolestb/2AoJN2Gg1OKbyPjJ7XA8MMqzbRBcDQfqyr/lwgvZXsVO3aRubXXdmjW4FUewryXkTPuLFtSAgEfiepV33pO/bqjvloTPE/JaWLm24KnxDDVSsOvYDqaAEP3gaiDJI6voL/FlgXr+3W7gP/fCCjcKv'
    $Logo &= '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'
    $Logo &= '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'
    $Logo &= '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'
    $Logo &= '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'
    $Logo &= 'lFOr0RmUGa+uFZ+VBHIh7BPIPKYNFERms0mcptPuYXoINYalQG3lJEQeG2/c/rV1eCYPa2qRNZGlgrQGY/dmM9T2w+Akl413rY/vIXMMqSr7dYWlnl4GpagL1KByzNYVoGE4yHGTQNYG9GO9477mfyvkYP+Wn5UC8jG/3ZIKOPPhdBg/CMUX81EJ5dAAGENCjPM2L6ME+yJKvcEBKCOrIGeP4QD0z4C8WJTyf33DQn8po23qGchMZgBaUjNr+nn+C6wbqUcF5pMg5YYNGrtWxbdwck1vp2RqeLdmnu6UT68uzjkU7R1F0JC5vvjavII5XDBKrS8VC0GqgzOiAC2wsut9PvYhqj2t5Ka988BbzCJ7mV5DF0zHHEAEAaHs9+mKIMYn+yHIWgmHnFKgapJEvdQeuw82usF1WZ39nGSr1gnNu+1H62TQon7h5iK6dgGCHCAJ8hteU8o4gKrPciRLz49QSx2ciy7G58MNOuJt2LwYSlu42AC+cecy4Zt3LRO+ADxgXVdh96+OQ9BTXm7eehlsnNYJlSF5ZnZhX/BtIsggSZDRuPmakocdZcFzyOBWYKE4MUZPk6XAL9GpTqQRdKISx3ICGtJwtQXDQT6rnd/n0kf6T/H7iTfxHBwMRDeYhzrLz2+InQvgVIOlUf1FMukKJBt2s4YSXQCtMtZMFmOn3gvYcTkCpNwdRv5MxvXb/wkbkt7ERO9HJpD/hfgsDz8vfyz7V8wQcrsnQSr6e8AQRqkLSZL2zvHICldBeT8XfTmL+cp0Iu8DGMPHk3E26cOy7d8pq/7A37rDGN0NwdfbFvpLeayeItu8zMhVS2horS2MBfomqgl0kOkkb+XU0G7toMLJNV2twb5PmxoI5FWEEZ9+l9f8FyMT0fnro9WRdsVPkCLgOr7SdT/xJIgr2F+U0wRRSlt8G0gyvVA9gAgEQtjvU/6wx3fh3E9gg9zMDF6v3nf5KaANQ3n84geuyyoHuhQVqg4KMGWQ8cBcXc+SYgo3F9FhDgiSPqK08Tuy+dRbxPwZlr/63eC8Xi/D3AezNH5B943fzS1CX2jHG1F1DK3GuVQnnSWngrTThF0HFJUgPdlAEB2FdmsUOvBhyeMyHO/U+yhotVX3J0YkA0iOaQZybEhDiGJ2qb09Ckr6rrX77gXZNeLOszYoffz1qvNrroBUG9aSxvmp2nbNrc3q2Z9Q9vOgGJNwxLVQrkuDYr328PXbfxwbO3zLg7CwI/NHTHrmOyBlrCv1TgRBsX/FCo6pc8sC75bMMLws+UPA3vN2kDbI+zM4lrtRIvYuh4htmGvtL+ajGFTcHrxHdnU4unVPIRD4wFp/szHPz/aVbf7Nx0fyY+shK3jBWlsTe4iok/o2yPBWjDjgU53E4+tbl6n9AzFnJoIcDuRVgVM4s5zX/LeCcn5HEeTxYibISCCvsg9Kp1Nd79Pp16GDWEa59zYELnCIwfpRieKsUjvXornmVKDUGky7HCDKb+Kae6DHY+8pcA5vZ+q7vS8qTceWWJPXwx0FabOt/lKXhMy+0deIe9xWOF2KDnVAkO//e/qRi3u/8GCBRzzSTet+jg5PCeR3Tull6U3TRHv0A5Zlsw9+KVk9F3uWSzmdKfsYCL+tUVeLSpCBJCTt1gh04o2Sx2Uo4tPd5OJ7NtdAR8qHbbnuSAKKZsoczs+y9YzzOzjuvOWu3zN/BXZwTVal3OgayHYede3aniCvCuUKRK+rgR6c9GjTJoE4EsPZmig3fvX4jdveB1Ic2gZEiu82BhEvx2aBOQgeqvqiDDwQ5PBa8cv//CvY/NBMjmWF4fmwTsDr8lQSwEYEwsn/Psu19hcPKHAIem+WxrLvvVW0gbmw1N9MlGL6K/L52cZjrBrWRCQ5wVpbU7sJ2ZZRZ2j2N7zP7rQe1Ixsb12mOXDkveILZOV9aLh5If7IwF/mNf/FyMUYPlavhDpZzGuQEcBZnaimdi9c//Jh75dQah+YhCqQOHEmhzJuRTuMYKUp'
    $Logo &= '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'
    $Logo &= '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'
    $Logo &= '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'
    $Logo &= 'dKWM44nZQFYIxjIzDEZE+ZQGVmM+u0EeGSjxRvlIHdjIZ7N6U3/z9Tl8E3q7INwFfaPd9Q+SjuCKHqQ8iHu8Cof+dC0Aeryj0T+vy8LYM+OULtxfTS5ZaGui+blFLKsr9W+/OqBfHUptlSDpVEPogA/p/Yv3A+nD7vN4z9JAPvAZ5q+y0O1zwFRmJXk3VxC2yrkqFTwD3e2LOe8DVCsn9X0FMIDk2IX6pf3V/Ma+7u8W0BHYTUcsodwHHZgDX7wBPvop6E35MvL4x0Gmsmk80JKIBZoz0G/IgKauIWv0N605SnJ0cub3esB+H5KFw/BZv8LHNAWRr4COZblgt5dhF3f6S7v4wPCarSYt0Ge80uohCKmOTpBAIsgxpfgJEh3WGgtsgUEuCkXHGvEzB9gM46/uyR2RfNN7lDdILJrXWMAFTOR0OAP/sjK7Gc5a+bnEirachYiuhsEpnbTQdj5wGE53IybiGsbyIZSxDcbZDoa5sBYMBQr0QyQcU0Pr/T2FftzBMigNrT+zyObEWOCsTnJ3IPjYVM9a+7MgCx9mAb4eoq/4vMiYhnYDy8rNFyNJkCkkSO0cZHG6Ab6H0kwVfC8MRjszCMZHuZckFtUQkW4YSC/IU1YmvpeH1yv5xtDAN+nZSKwPyBvyyY4p+T6ehnyeRjQbUR7yKYegUKyR/mp4cW5XbtCxTwqGPCHL7Zj7PBf6dhZtd6ksCfcg2tZuqQCyglw+g+7uq3/9Mb4GXZ5QHWQDPb8CPW+CazxYJl8GO7YXYpzL0aZPmQIHUycbTk0JsLwOqcqsESwdntKzpaRKYu4y6WtKGnZgHe5Xq5y024mcu6P6+ujdIJcdkXK+ShQH4Jv6w6dFwGdiOSYXupzJ4GqEYWNMKu1A2x/lvM2r0KHvML5noHs94OdSgTiQkV7e5KNSGbSlRIMtRbF8GmE42jPUcFBLgMOSKuDkpRh+LGVrc+FT9mIMz0OfJ1QTPsUV3bwE3WjhIwlyqeE1WzE6QeqPdyCaGMjNOf2Iu4qDIP0lQWKStHoCmzCAkTDUzTX5mQPsxN9DysqoZyknUnuyKq9xAXbgEib0Nxjk1AAQrmjvDDCLW7FzHsQDuM8i+piNds/Vcb3dvxG5Z2Ac3WCELwUJdPYV0XUNEHszjLk9lOedEBiEszbZz7y66vcNuC6IWRawidFxPJVvMZTyQn3c5xY407FVeJ2L+ARE5uchlUJLhIJc4NiLgnHoRyW0S9kOoRFKglwEwxoKJ1EH/U7DPZfr2SvvW9I4AB24uVyBh7m38FirLqbzeSP5cyBwVI+O26GvG2oWnMeTtYVeXeOcFRWnw2HckEekl9pdyw0NUw3b4FNZutOW6LKra639OyqItkm62l3QzxwnbYzDfAVgTuOgz8/hnlUYWOmYBpuxu2yLQseOQG4roQeVPWSwOtB0LmtgEc5lDTFUWP7W5y5OL70Fi/GXnH4JOe6EPjxYWY7tjOH5viXAZT0o6AdS+QMBSb68Vsjk11r8rBiwH+0/VkUmGNlcH/wIGMUSYifD8Y9ZgLYj1NX2hd79WANjUcsU54EXGGyaj/OswbXlICIQ8Od8+ToupzqGiWN2A/bm6MsU6ONcYH8t6UtvDOpkqCftQj2alqiez1Wn+IwQ+lWUfxwgO8/J0G6F0WshAn+CSB6HYc6AomTzs+thP4yxRlkZ6U8RhCY+21mN1zjBYdxrEgjsLhjJbehDLVxbVgjiN0Z42tMQ7GIo9Qp/kFR119rNBT6EApaz6e3pxCucfpDHfwjnIuv8WXrGMgREcDLYeZtz/UGmIPF8/p6HvoxTWWQOnXkSFfAtPWpLxpjehhxX+7MdF7G3oKOze+LnS2yjKBiO/nopQs8gQSbTQLW6kJF+r1Ygql26c6W8SwOHoAuN1Xv2VtFZ9GK2GE+DqGt43rQJM4DTFUCSnUAQ69DnTPQ5H3gBOvMuZHa5iGPIp55OxjzWo6FSXvOYhfeiHNsSlwBtDXQl18J9/oYO'
    $Logo &= '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'
    $Logo &= 'os0t6NOBCoJoLwHZQB5gd9Hx5+OaLOA88Cfuvb28Li9BXAP0oMtDzHU5NU9H5Q4+0be2psPrAw2bBXwNjjac3xtPR5CrO8puuMea8iKgeQSymlNOyHmXtyCvU8AZ4DgAAkWQIeZlNL7XCdc29FA6xLl9X5V91ckiho0OEcwGsmNw7RGHchJyOG36+2H0wVMR5DLgEuQDR39jOX+DtqJUteETlvoXA5CvNYLMAZZ6ybYOcy7STI95+FknSPOGHUWSlF8q9XwPkFvOJiooiWV1+xJkuQ7j3Et9yqYeZnMOYS+SIJ/01McivjfJS5ZULzOrngb0M5BjgiQkgH1JoR38zd352hC0udVb9zHCbl+EjnxWXpDlIYMuHQP2eOs2LchpBL7XDt+PQB+8lU89xPkdZlhvTFJr7GoZgd9He8KWkSSgaieIsp2HmKtDOmGbgvYs9gkVOfMLzFPUK8zMhz4AxfTPvO5M29a+xDjyXQgUDwAzMNb2GOMGXFNFyW4E5RUvCZLP5faFj+AO1mF6FlnkwwLYcBAj8Pk0qtfpPN/i/18mFgIvEfOBuczKRsltw3yGhsr+Mq9fybbeAd6jk/mA+I7kq5nByOksZk+L0RfyIahbgDuhbGlAR6ADcSfRDkghuTQBDG8mGGKI0tpTGVtRWTYCdp1kUtiOI9CRa209REbd0kNkPoEAg4ZPOXnJvNe3Xoz2sgwKfA1YW16PKMXYGrGdm2hEZQoGJ6upFEOFgYtSWnNcU1kYir2/pyC/0yTCTACKiD4LuSUDumwSPERf2e4CtZtNOQjO5QU9E2uG624DWgNtKN/2lIVT8LttWSVIAJoDUf8cZw4d8UeGnaCd1YYnvvqM28wNO+m8TSRZV4xDvhfwsh9lq2cjsCKtRhkh51j2pzWQBLQCbgVigHBc4w8Y5uAkH9qeIc+A5POYJocWSowDcvS2j9+AIOeVE5nz3grC8W4BFqvMLYe2dagSfn/UU8ypoyBkpKeMsC+QAAbKd1zaRGDwKrOpFUbwMxAiCEhUHUZ7Crlw/Afk69CsHBRgnSTDKcd4ktci4GcG5VpFzEcoEMN5ukPoIm1ezKEPA5kyrLJ8Dv3vgZ91xFzmc/ljlMr8lX6Z3sYTTscbx2zlMyAHpAR7EG1Xton+RAO3XEeX4oCGQBiuqaR0KZdZ1EdciupjIOlWpvOcg4lQZk0yAL5UQQRMtVhxqV1Gv79ILHpj7tKBLpRLaxKzevepevO+5VK5dZhfdwaCFNXCszdIcpBhQo4ia3wCY9mEeTyFsZdT9jhUviCZ+vgAZDmQZ7CCGHsMFuOzFedpOjV4s+YG4khl5NiF6GxAGomApMjnafgcDdESSCBZdJBtCaXoRmQwanyNZLocWMH/TybJngayCbuuFACVziHsFOYFYKYhSkum4jcxHMzdk1mw3cWsN1eUlSUygZMkxwxZshGYB2iNyghH9A4me0I5vVQinHSIILhsrpFeYDu/kBSXcdfZQPa/G6P5DcAV4ipkkQNDtMfSebQiGpNAzeOioa5lX1WGprZ3N2TZ5yLJK1+2UTTYee8rHOduymwhMF46DFWibmnYlBNsIkdP4nokGcM5WMqsz+6l9OU8cE2OqyDy6JDPMcLfZNDDDMqfWaPMOqIMDi2QJD4GyNGXBrpinu93AJ2gK7KE14gONVzN114uWXztwUyqF66ZAt1ZVV4nVJEdXARWeanyNCtBwxhkpIvt9ULPwoja/4BovwYQzODAS63bzzNu6rBw1JxVkgyiHKMo10TqwzQuBexhoJt9A13MZ/n7vB4E1ldlcTuzp0kq+FKZP3UmBAgkgkhMkexLGvtwiQGH8Z2ZmY50iX87A+yjvS2mnvcz6Tn9EdfX1WMVgezXVUB7upyooiHowjKUqIwM0kuulEdZoDxR1iQXBqCjaRdxlg98KDpBBjG4t9fBvMSzXDzcU2S4bwB6wvA8ftbH3E3F59sw1iNcdttXcA2yjywT8z2l3fH/XkJ/PIuz'
    $Logo &= '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'
    $Logo &= 'gQxgAJGh9iewMsL1cGNFoyTHYlYMQJUbTPByAE8JB205aM/HJRIlOTjIbENNMGe7QQ4ifsChQQZbuIfpPqZ1BHPpWhlwE0lYNCIzIZqycl+TnCgXkqXJeThy9qb++juQibdRJhZkTziRl8PqgwpeCvOQsoNgz3H/AUd9M/XP30yMThyrr3neTZURCXOwZQ4ciDAHmVQcf5LYGPyYlxGoz8a2iAgT6jpw5n5mcixhP+RlCrD9HQbSjvUxjAh1ovMOyvaAyRaKrkvO9dxBRSSIY4k0zH+swwPGae8Oxm4ix9IgSJWRm0ro0aaALc5JIGmsAoQ42JtQcoMpJXheB14uEKmvEyIl+LmBWJw7NmWQVu7h+D4KprWxGk6Ml22b2nIsH9/rGS7BdmmkJCIXnb2nlUqAGVbk5eRYK8J6JkI4mlfHcH7klrl/jtfU1LyHmOfepAMOAwciUJEcCY7BkCkAMme6vgb4mwNOQjlwwBzola5DNcvRsR4S/k70keOwcK5oKeqSQx3nZ+ZSr3n+HVdiOJ/Wx17SFUpVnXKsz9GmJIIg+TMTVhUN69lj6ZOlk38lQKLeLsLLimMjrN+DcNhvs1HRgB2Rq6Os3EXnwfsoWHD2JliTvXV5Oe5Hcemutf47r4xYcKrOHTrhYK4ANbfmYIhwnukqqLYUfE3wcR60lL7/KaofsEBMpatL1pcN/ExBjpp7x/7E+dhLnyR9DPZgHo85kAyX5G/KhEtQN0sfpUOiClbIvHjvQTjPyLwtERZhwXkUydlbl33RZfXfXxGxngEVX7BlzmDMUKTouCrgXFeczNt/qV+wrn//S7pkcf4B5/ZemnAUZDhYZjMlEQ6SiaKSo5tES98YnLVlhTxKq6+lTzalb6il3beSC7ack9v/6jyVhj7+D+uS8/nn34q9H6VfGfBWcFzR+H9Ijm5yL9F7uP/9rzpz6+24/7n16H94LEWqBLjhhhtuuAmxROGef3cA4IYbbrjhhhvuf/8H6AQ75at3O7gAAAAASUVORK5CYII='
    Local $bString = Binary(_WinAPI_Base64Decode($Logo))
    If $bSaveBinary Then
        Local $hFile = FileOpen($sSavePath & "\RandomCopy10.3.1.png", 18)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return  $bString
EndFunc   ;==>_Logo

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode
Download compiled + source code here: Random_Copy_v0.96_beta_build_2014-01-07.zip

 

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted

then, take some action, do the work like the tips said and go fix it!

UEZ told you it was a 'start' and FireFox told you to use  _FileListToArray (which will allow you to do multiple folders, etc.) - do a search on the forum for that and you will find it.

saying things like "But I think if this code can choice multi foler in source is better" when you have been handed the tools is like the old saying "Looking a gift horse in the mouth!"  You should be grateful of the responses, learn from them and take action on what you have seen, not expectant of someone handing you more!

  • 3 months later...
  • Moderators
Posted

htclub,

Over 3 months before you ran the script? Obviously not a very pressing problem. ;)

Change line #507 in UEZ's code to read:

Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetDpiX", "handle", $hGfx, "float*", 0)
and it should work in 3.3.12.0. Just ignore all the "Obfuscator support has been discontinued" lines in the SciTE console. :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...