#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=ticket.ico
#AutoIt3Wrapper_Outfile=ticket.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include<GuiTreeView.au3>
#include<EditConstants.au3>
#include<GUIConstantsEx.au3>
#include<TreeViewConstants.au3>
#include<WindowsConstants.au3>
#include<ButtonConstants.au3>
#include<guiconstants.au3>
#Include<Restart.au3>
#Include<Misc.au3>
#include<FileConstants.au3>

Global $sPath = '\\BER04APPMM4-1\allgemein\Mailer\'
;~ Global $sPath = 'F:\Mailer\'
Global $version = "1.1.2"

$line = FileReadLine("\\BER04APPMM4-1\allgemein\ticketversion.txt",1)
If FileExists(@ScriptDir & "\old_" & @ScriptName) Then FileDelete(@ScriptDir & "\old_" & @ScriptName)

#Region UpdateCheck
If _VersionCompare($line, $version) = 1 Then
	MsgBox(0,"","Genutzte Version: " & $version & @CRLF & "Gefundene Version: " & $line & @CRLF & @CRLF & "Update notwendig" & @CRLF & @CRLF & "Programm wird neu gestartet!")
	FileMove(@ScriptFullPath, @ScriptDir & "\old_" & @ScriptName)
	FileCopy("\\BER04APPMM4-1\allgemein\ticket.exe", @DesktopDir, 1)
	If FileExists(@ScriptDir & "\old_" & @ScriptName) Then FileDelete(@ScriptDir & "\old_" & @ScriptName)
	_ScriptRestart()
Else
;~ 	MsgBox(0,"","Genutzte Version: " & $version & @CRLF & "Gefundene Version: " & $line & @CRLF & @CRLF & "Kein Update notwendig")
EndIf
#EndRegion UpdateCheck

#Region GUI
Global $width = 800, $height = 600
Global $hGui = GUICreate('OSC Mailer ' & $version, $width, $height, -1, -1)
Global $Files
Global $bFiles = True
WinActivate ("OSC Mailer")
WinSetOnTop("OSC Mailer","",1)
Dim $input_infos[4]

#Region OSC Tickets TreeView
GUICtrlCreateGroup("OSC Tickets", 5, 20, 275, 465)
GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
Global $hTreeView = GUICtrlCreateTreeView(12, 35, $width - 540, $height - 160, BitOR($GUI_SS_DEFAULT_TREEVIEW, $TVS_CHECKBOXES), $WS_EX_STATICEDGE)
GUICtrlSetFont(-1, 10, 400, 0, 'Arial')
GUICtrlSetBkColor(-1, 0xF8F8F8)
#EndRegion OSC Tickets TreeView

#Region Legende
GUICtrlCreateGroup("Legende", 5, 490, 275, 85)
GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
GUICtrlCreateLabel("Reservierungs-Ticket", 35, 510)
GUICtrlCreateIcon("imageres.dll", -103, 15, 510, 15, 15)
GUICtrlCreateLabel("erledigtes Ticket", 35, 530)
GUICtrlCreateIcon("imageres.dll", -102, 15, 530, 15, 15)
GUICtrlCreateLabel("normales Ticket", 35, 550)
GUICtrlCreateIcon("imageres.dll", -100, 15, 550, 15, 15)
GUICtrlCreateLabel("wichtiges Ticket", 180, 510)
GUICtrlCreateIcon("imageres.dll", -101, 160, 510, 15, 15)
#EndRegion Legende

#Region OSC Infos
$button_newticket = IconButton("Eingabemaske leeren", 460, 0, 165, 25, 33)
GUICtrlCreateGroup("OSC Infos", 290, 20, 500, 135)
GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
GUICtrlCreateLabel("Markt:", 300, 50)
$input_infos[0] = GUICtrlCreateCombo("", 360, 48, 150, 18, $CBS_DROPDOWNLIST)
GUICtrlSetData($input_infos[0], "MM Alex|MM Biesdorf|MM Brandenburg|MM Charlottenburg|MM Eiche|MM Gropius|MM HBF|MM HSH|MM Moabit|MM Neukölln|MM Potsdam|MM Prenz'l Berg|MM Schöneweide|MM Schwedt|MM Spandau|MM Steglitz|MM Tegel|MM Tempelhof|MM Waltersdorf|MM Wedding", "")
GUICtrlCreateLabel("Name KD:", 540, 50)
$input_infos[1] = GUICtrlCreateInput("", 600, 48, 150, 18)
GUICtrlCreateLabel("Abteilung:", 300, 80)
$input_infos[2] = GUICtrlCreateCombo("", 360, 78, 150, 18, $CBS_DROPDOWNLIST)
GUICtrlSetData($input_infos[2], "Büro|Online Bestellungen|BW TV|BW HiFi|BW Foto|BW Henkelware|BW Navi/Outdoor|BW Zubehör|BW Car-HiFi|Computer|Computer Zubehör|GSM|Bürokom|WW Großgeräte|WW Kleingeräte|WW Bodenpflege|Tonträger & Software|Service|eBay", "")
GUICtrlCreateLabel("Telefon#:", 540, 80)
$input_infos[3] = GUICtrlCreateInput("", 600, 78, 150, 18, $ES_NUMBER)
GUICtrlCreateLabel("Belegnummer/Auftragsnummer/Bestellnummer:", 425, 110, 250, 15)
$input_createfile = GUICtrlCreateInput("", 470, 130, 135, 18)
$input_reservierung = GUICtrlCreateCheckbox("Reservierung?", 610, 128)
$input_important = GUICtrlCreateCheckbox("Wichtig?", 710, 128)
#EndRegion OSC Infos

GUICtrlCreateGroup("Anliegen", 290, 155, 500, 80)
GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
$input_update = GUICtrlCreateEdit("", 300, 170, 480, 55, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))

$button_createfile = GUICtrlCreateButton("OSC Fall erstellen", 480, 240, 120, 20)
GUICtrlSetFont(-1, 7, 600, 0, "Verdana")

#Region OSC'ler
GUICtrlCreateGroup("", 450, 270, 180, 50)
GUICtrlCreateLabel("Nur für den OSC'ler", 492, 270, 92, 15)
$button_filedelete = GUICtrlCreateButton("", 475, 285, 25, 25, $BS_ICON)
GUICtrlSetImage(-1, "shell32.dll", -145,0)
GUICtrlSetTip(-1, "Schließt das ausgewählte OSC Ticket")
$button_update = GUICtrlCreateButton("Update OSC Fall", 510, 287, 95, 20)
#EndRegion OSC'ler

#Region Notizen
GUICtrlCreateGroup("Notizen", 290, 320, 500, 255)
GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
$notizen = GUICtrlCreateEdit("", 300, 335, 480, 230, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_READONLY))
#EndRegion

GUICtrlSetFont(-1, 6, 400, 0, "Verdana")
Global $hStatus1 = GUICtrlCreateLabel('', 0, $height - 16, $width / 2, 16, -1, $WS_EX_STATICEDGE)
Global $hStatus2 = GUICtrlCreateLabel('', $width / 2 + 1, $height - 16, $width / 2, 16, -1, $WS_EX_STATICEDGE)
#EndRegion GUI

$winuser = @UserName
GUISetState()
_TreeViewUpdate()
AdlibRegister("_TreeViewUpdate",300000) ;alle 5 Minuten

While True
	If FileExists(@ScriptDir & "\old_" & @ScriptName) Then FileDelete(@ScriptDir & "\old_" & @ScriptName)
    Switch GUIGetMsg()
        Case $GUI_EVENT_PRIMARYDOWN
            $aInfo = GUIGetCursorInfo($hGui)
;~ 			MsgBox(0,"",$aInfo[4])
            If $aInfo[4] = $hTreeView Then
                $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
				GUICtrlSetData($hStatus1, ' ' & _GUICtrlTreeView_GetTree($hTreeView))
				$readini = FileRead(_GUICtrlTreeView_GetTree($hTreeView))
				GUICtrlSetData($notizen,StringTrimLeft($readini, StringInStr($readini, @CRLF, 0, 6)))
				$read_info1 = FileReadLine(_GUICtrlTreeView_GetTree($hTreeView),1)
				GUICtrlSetData($input_infos[0],$read_info1)
				GUICtrlSetData($input_infos[0],$read_info1)
				$read_info2 = FileReadLine(_GUICtrlTreeView_GetTree($hTreeView),2)
				GUICtrlSetData($input_infos[1],$read_info2)
				$read_info3 = FileReadLine(_GUICtrlTreeView_GetTree($hTreeView),3)
				GUICtrlSetData($input_infos[2],$read_info3)
				GUICtrlSetData($input_infos[2],$read_info3)
				$read_info4 = FileReadLine(_GUICtrlTreeView_GetTree($hTreeView),4)
				GUICtrlSetData($input_infos[3],$read_info4)
				$read_info5 = FileReadLine(_GUICtrlTreeView_GetTree($hTreeView),5)
				GuiCtrlSetState($input_reservierung,$read_info5)
				$read_info6 = FileReadLine(_GUICtrlTreeView_GetTree($hTreeView),6)
				GuiCtrlSetState($input_important,$read_info6)
				$read_info7 = StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\BER04APPMM4-1\allgemein\Mailer\\', '')
				Global $read_info8 = StringReplace($read_info7, '.txt', '')
				GUICtrlSetData($input_createfile,$read_info8)
                Opt('GUIDataSeparatorChar', $oldGUIDataSeparatorChar)
                If BitAND(_GUICtrlTreeView_HitTest($hTreeView, $aInfo[0] - 11, $aInfo[1] - 41), 64) Then
                    $checked = _GUICtrlTreeView_GetChecked($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView))
                    _GUICtrlTreeView_SetBold($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView), $checked)
                    $hItem = _GUICtrlTreeView_GetFirstChild($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView))
                    If $hItem Then _MarkChildItems($hTreeView, $hItem, $checked)
				EndIf
            EndIf
;~ 			If $aInfo[4] = 7 Then
;~ 				GUICtrlSetData($input_infos[0],"")
;~ 				GUICtrlSetData($input_infos[0],"MM Alex|MM Biesdorf|MM Brandenburg|MM Charlottenburg|MM Eiche|MM Gropius|MM HBF|MM HSH|MM Neukölln|MM Potsdam|MM Prenz'l Berg|MM Schöneweide|MM Schwedt|MM Spandau|MM Steglitz|MM Tegel|MM Tempelhof|MM Waltersdorf|MM Wedding","")
;~ 				GUICtrlSetData($input_infos[1],"")
;~ 				GUICtrlSetData($input_infos[2],"")
;~ 				GUICtrlSetData($input_infos[2], "BW TV|BW HiFi|BW Foto|BW Henkelware|BW Zubehör|BW Car-HiFi|Neue Medien|Computer|Zubehör|GSM|Bürokom|Navi, Outdoor|WW Großgeräte|WW Kleingeräte|Enternainment|Tonträger|Software|Service|eBay|Lager|Sicherheit", "")
;~ 				GUICtrlSetData($input_infos[3],"")
;~ 				GUICtrlSetData($notizen,"")
;~ 				GUICtrlSetData($input_update,"")
;~ 				GUICtrlSetData($input_createfile,"")
;~ 				GuiCtrlSetState($input_reservierung,4)
;~ 			EndIf
		Case $button_update
            $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
			$read_update = GUICtrlRead($input_update)
;~ 			FileWrite(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), @CRLF & "Update am " & @MDAY&"."&@MON&" "&@YEAR&", "&@HOUR&":"&@MIN&" durch " & $winuser&":" & @CRLF & $read_update & @CRLF & "--------------------------------------------------------------------------------------------------------------------------------------------------------")
			FileWrite(_GUICtrlTreeView_GetTree($hTreeView), @CRLF & "Update am " & @MDAY&"."&@MON&" "&@YEAR&", "&@HOUR&":"&@MIN&" durch " & $winuser&":" & @CRLF & $read_update & @CRLF & "--------------------------------------------------------------------------------------------------------------------------------------------------------")
			$readini = FileRead(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
			GUICtrlSetData($notizen,StringTrimLeft($readini, StringInStr($readini, @CRLF, 0, 4)))
			GUICtrlSetData($input_update,"")
			AdlibUnRegister("_TreeViewUpdate")
			_ScriptRestart()
		Case $button_createfile
			_checkInputs()
		Case $button_newticket
			GUICtrlSetData($input_infos[0],"")
			GUICtrlSetData($input_infos[0],"MM Alex|MM Biesdorf|MM Brandenburg|MM Charlottenburg|MM Eiche|MM Gropius|MM HBF|MM HSH|MM Moabit|MM Neukölln|MM Potsdam|MM Prenz'l Berg|MM Schöneweide|MM Schwedt|MM Spandau|MM Steglitz|MM Tegel|MM Tempelhof|MM Waltersdorf|MM Wedding","")
			GUICtrlSetData($input_infos[1],"")
			GUICtrlSetData($input_infos[2],"")
			GUICtrlSetData($input_infos[2], "Büro|Online Bestellungen|BW TV|BW HiFi|BW Foto|BW Henkelware|BW Navi/Outdoor|BW Zubehör|BW Car-HiFi|Computer|Computer Zubehör|GSM|Bürokom|WW Großgeräte|WW Kleingeräte|WW Bodenpflege|Tonträger & Software|Service|eBay", "")
			GUICtrlSetData($input_infos[3],"")
			GUICtrlSetData($notizen,"")
			GUICtrlSetData($input_update,"")
			GUICtrlSetData($input_createfile,"")
			GuiCtrlSetState($input_reservierung,4)
			GuiCtrlSetState($input_important,4)
		Case $button_filedelete
			$oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
			$checked = _GUICtrlTreeView_GetChecked($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView))
			If $checked = True then
				$tmp = MsgBox(48+4, '', "Möchtest Du das OSC Ticket schließen?")    ; Yes, No, Cancel
				Switch $tmp
					Case 6    ; JA
;~ 							FileMove(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),$sPath & "erledigt")
;~ 							FileMove(_GUICtrlTreeView_GetTree($hTreeView),$sPath & "erledigt")
							FileMove(_GUICtrlTreeView_GetTree($hTreeView), $sPath & "erledigt\" & @MDAY&"."&@MON&"."&@YEAR&"_"&@HOUR&"_"&@MIN & "h_" & $read_info7 & ".txt")
							$fehlerpruefung = @error
							if $fehlerpruefung = 0 Then FileMove(_GUICtrlTreeView_GetTree($hTreeView), $sPath & "erledigt\" & @MDAY&"."&@MON&"."&@YEAR&"_"&@HOUR&"_"&@MIN & "h_" & $read_info7 & ".txt")
							GUICtrlSetData($input_infos[0],"")
							GUICtrlSetData($input_infos[1],"")
							GUICtrlSetData($input_infos[2],"")
							GUICtrlSetData($input_infos[3],"")
							GUICtrlSetData($notizen,"")
							_TreeViewUpdate()
					Case 7    ; NEIN
				EndSwitch
			Else
				MsgBox(0,"Achtung","Kein Ticket ausgewählt")
			EndIf
		Case $GUI_EVENT_CLOSE
			AdlibUnRegister("_TreeViewUpdate")
            Exit
    EndSwitch
WEnd

Func _checkInputs()
	Local $test = 0
    for $i = 0 to UBound($input_infos)-1
            if GUICtrlRead($input_infos[$i]) = "" then
                $test = 1
                ExitLoop
            EndIf
	next
		If $test = 1 then
			MsgBox(0,"Achtung!", 'Bitte alle Felder unter "OSC Infos" ausfüllen.')
		ElseIf GUICtrlRead($input_createfile) = "" Then
			MsgBox(48,"Achtung!", 'Bitte eine Belegnummer/Bestellnummer/Auftragsnummer eingtragen.' & @CRLF & @CRLF & "Wenn keine vorhanden ist bitte 'keine' eintragen.")
		Else
			$oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
			$read_createfile = GUICtrlRead($input_createfile)
			$read_input_infos1 = GUICtrlRead($input_infos[0])
			$read_input_infos2 = GUICtrlRead($input_infos[1])
			$read_input_infos3 = GUICtrlRead($input_infos[2])
			$read_input_infos4 = GUICtrlRead($input_infos[3])
			$read_update = GUICtrlRead($input_update)
			if BitAnd(GUICtrlRead($input_reservierung),$GUI_CHECKED) = $GUI_CHECKED then $read_checkbox	= 1
			if BitAnd(GUICtrlRead($input_reservierung),$GUI_UNCHECKED) = $GUI_UNCHECKED then $read_checkbox = 4
			if BitAnd(GUICtrlRead($input_important),$GUI_CHECKED) = $GUI_CHECKED then $read_checkbox_important	= 1
			if BitAnd(GUICtrlRead($input_important),$GUI_UNCHECKED) = $GUI_UNCHECKED then $read_checkbox_important = 4
			FileWrite($sPath & $read_createfile & ".txt", $read_input_infos1 & @CRLF & $read_input_infos2 & @CRLF & $read_input_infos3 & @CRLF & $read_input_infos4 & @CRLF & $read_checkbox & @CRLF & $read_checkbox_important &@CRLF & "Erstellt am " &@MDAY&"."&@MON&" "&@YEAR&", "&@HOUR&":"&@MIN&" durch " & $winuser & @CRLF & $read_update & @CRLF)
			_TreeViewUpdate()
			GUICtrlSetData($input_infos[0],"")
			GUICtrlSetData($input_infos[1],"")
			GUICtrlSetData($input_infos[2],"")
			GUICtrlSetData($input_infos[3],"")
			GUICtrlSetData($input_update,"")
			GUICtrlSetData($input_createfile,"")
			MsgBox(0,"", 'OSC Ticket erstellt')
			AdlibUnRegister("_TreeViewUpdate")
			_ScriptRestart()
		EndIf
	Return
EndFunc

Func _MarkChildItems(ByRef $hTreeView, $hItem, $checked)
    Do
        $hNewItem = _GUICtrlTreeView_GetFirstChild($hTreeView, $hItem)
        If $hNewItem Then _MarkChildItems($hTreeView, $hNewItem, $checked)
        _GUICtrlTreeView_SetChecked($hTreeView, $hItem, $checked)
        _GUICtrlTreeView_SetBold($hTreeView, $hItem, $checked)
        $hItem = _GUICtrlTreeView_GetNextChild($hTreeView, $hItem)
    Until $hItem = 0
EndFunc   ;==>_MarkChildItems

Func _TreeViewUpdate()
    GUICtrlSetData($hStatus1, ' Bitte warten! Verzeichnis wird eingelesen...')
    GUICtrlSetData($hStatus2, '')
    $Timer = TimerInit()
    Local $aCount = _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles)
    If Not @error Then
        $msg = ' Benötigte Zeit: ' & Round(TimerDiff($Timer) / 1000, 3) & ' sek.'
        $msg &= '  |   ' & $aCount[1] & ' OSC Tickets ' ; & $aCount[0] & ' Verzeichniss(e)'
        GUICtrlSetData($hStatus1, ' Fertig')
        GUICtrlSetData($hStatus2, $msg)
    EndIf
EndFunc   ;==>_TreeViewUpdate

;===============================================================================
; Function Name:   _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles)
; Description::    erstellt ein TreeView mit Verzeichnissen (+Dateien)
; Parameter(s):    $hTreeView = ControlID/Handle des TreeViews
;                  $sPath     = Verzeichnispfad, der dargestellt werden soll
;                  $bFiles    = True = auch Dateien anzeigen, False = nur Verzeichnisse
; Requirement(s):  #include<GuiTreeView.au3>
; Return Value(s): Array mit Anzahl der Verzeichnisse=[0] und Dateien=[1]
;                  0 und @error = 1, wenn der Pfad nicht existiert bzw. kein Verzeichnis ist
;                  0 und @error = 2, wenn das FileSystemObject nicht erstellt werden konnte
; Author(s):       Oscar (www.autoit.de)
;===============================================================================

Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False)
    Local $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0]
    If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0)
    $sPath = FileGetLongName($sPath)
    Local $oFSO = ObjCreate('Scripting.FileSystemObject')
    If @error Then Return SetError(2, 0, 0)
    _GUICtrlTreeView_BeginUpdate($hTreeView)
    _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView))
    Local $hTreeViewItem = GUICtrlCreateTreeViewItem($sPath, $hTreeView)
    GUICtrlSetColor(-1, $FolderColor)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'imageres.dll', 101) ;Icon "Grüner Haken"
    $Folder = $oFSO.GetFolder($sPath)
    _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
;~     If $bFiles Then
;~         For $Files In $Folder.Files
;~             $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
;~             $read_reservierung = FileReadLine($sPath & $Files.Name,5)
;~ 			$read_important = FileReadLine($sPath & $Files.Name,6)
;~             If $read_reservierung = 4 then
;~                 _GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 99) ;Icon "Blaues Fragezeichen"
;~             ElseIf $read_important = 4 then
;~                 _GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 100) ;Icon "Rotes Ausrufezeichen"
;~             Else
;~                 _GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 102) ;Icon "Gelbes Ausrufezeichen"
;~             EndIf
;~             $aCount[1] += 1
;~         Next
;~     EndIf
    If $bFiles Then
        For $Files In $Folder.Files
            $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
            $read_reservierung = FileReadLine($sPath & $Files.Name, 5)
            $read_important = FileReadLine($sPath & $Files.Name, 6)
			Select
				Case $read_reservierung = 4
					_GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 100)
				Case $read_important = 4
					_GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 99)
				Case Else
					_GUICtrlTreeView_SetIcon($hTreeView, $hFileItem, 'imageres.dll', 102)
			EndSelect
            $aCount[1] += 1
        Next
    EndIf
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4)
    _GUICtrlTreeView_EndUpdate($hTreeView)
    GUICtrlSetState($hTreeViewItem, $GUI_EXPAND)
    $oFSO = ''
    Return $aCount
EndFunc   ;==>_GUICtrlTreeView_CreateDirectory

Func _CreateDirectoryRecursive($hTreeView, $Folder, $ItemOld, $bFiles, ByRef $aCount)
    Local $hFolderItem, $hFileItem, $FolderColor = 0x0000FF
    For $Subfolder In $Folder.SubFolders
        $hFolderItem = GUICtrlCreateTreeViewItem($Subfolder.Name, $ItemOld)
        GUICtrlSetColor(-1, $FolderColor)
        _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 3, 2)
        _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 110, 4)
        $aCount[0] += 1
        _CreateDirectoryRecursive($hTreeView, $Subfolder, $hFolderItem, $bFiles, $aCount)
        If $bFiles Then
            For $Files In $Subfolder.Files
                $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hFolderItem)
                $aCount[1] += 1
            Next
        EndIf
    Next
EndFunc   ;==>_CreateDirectoryRecursive

Func IconButton($BItext, $BIleft, $BItop, $BIwidth, $BIheight, $BIconNum, $BIDLL = "shell32.dll")
    GUICtrlCreateIcon($BIDLL, $BIconNum, $BIleft + 5, $BItop + (($BIheight - 16) / 2), 16, 16)
    GUICtrlSetState( -1, $GUI_DISABLE)
    $XS_btnx = GUICtrlCreateButton($BItext, $BIleft, $BItop, $BIwidth, $BIheight, $WS_CLIPSIBLINGS)
    Return $XS_btnx
EndFunc