#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <MsgBoxConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiTreeView.au3>
#include <StaticConstants.au3>

#Include <File.au3>
   Global $oMyError = ObjEvent("AutoIt.Error","_ComErrFunc")
    Global $oIE, $GUIActiveX, $GUI_Button_Back, $GUI_Button_Forward
    Global $GUI_Button_Home, $GUI_Button_Stop, $msg, $MAX_ITEMS, $i, $c, $items,  $sFile, $sOpen
	Global $splash, $bgcolor = 0x404040, $txtcolor = 0xff8800, $extcolor = 0xffcc00, $items[4000], $names[4000], $StartDir, $TreevieItemNow
;~     Local $sFile = FileOpenDialog("Choose PDF", "C:\Users\reneh\Desktop\KRWD-Offline\Fahrrad", "PDF Files(*.pdf)", 3) ; put your own start folder here
;~     If @error Then
;~        $sFile="C:\Users\reneh\Desktop\KRWD-Offline\Fahrrad\Blinklichtanlage am Pedelec3.pdf"
;~        ; Return
;~     EndIf	
	
$gui = GUICreate("Konzern-Regelwerke", 1700, 1000, -1, -1)
$tree = GUICtrlCreateTreeView(6, 0, 361, 940)
$StartDir = @ScriptDir
;~ $StartDir = @StartMenuDir
;$TrreViewOfprograms = GUICtrlCreateTreeViewItem($StartDir, $Tree)
$TrreViewOfprograms = GUICtrlCreateTreeViewItem(@ScriptDir, $Tree)
$TimerStamp = TimerInit()
MakeList($StartDir, $TrreViewOfprograms, 0)
MakeList($StartDir, $TrreViewOfprograms, 1)
ReDim $items[$items[0] + 1]
ReDim $names[$names[0] + 1]

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

$oIE = ObjCreate("Shell.Explorer.2")

$GUIActiveX = GUICtrlCreateObj ($oIE, 372, 0, 1300, 980)


;$root = _GUICtrlTreeView_AddChild($tree,"",@ScriptDir,0)
 Local $idButton_Read = GUICtrlCreateButton("Öffnen", 2,950,100,30)
 Local $idButton_Close = GUICtrlCreateButton("Beenden", 268,950,100,30)
 $oIE.navigate("C:\Users\reneh\Desktop\KRWD-Offline\Fahrrad\Blinklichtanlage am Pedelec.pdf") ;$sFile
_GUICtrlTreeView_Expand($Tree)
GUISetState(@SW_SHOW)

 ;"C:\Users\reneh\Desktop\KRWD-Offline\Fahrrad\Blinklichtanlage am Pedelec3.pdf"

While 1
    Switch GUIGetMsg()
	   Case -3 
		   ExitLoop
	   Case $idButton_Read
		   $sFile = FileOpenDialog("Choose PDF", "C:\Users\reneh\Desktop\KRWD-Offline\Fahrrad", "PDF Files(*.pdf)", 3)
		   If @error Then
              MsgBox("","Hinweis","Es wurde keine Datei ausgewählt")
		  Else
			 $oIE.navigate($sFile) 
		 EndIf
	  Case $idButton_Close
		     ExitLoop 
	  Case Else
            If $msg >= $items[1] And $msg <= $items[UBound($items) - 1] Then ishidden(_GUICtrlTreeView_GetTree($Tree, "\"))
            Sleep(20)
            GUICtrlSetState($names, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "Display"-item and paint in bold
	   
EndSwitch	
WEnd

Func _SearchFolder($folder,$parent,$level=0)
    If $level >= 1 Then Return
    $files = _FileListToArrayRec($folder,"*.pdf;*.xl*;*.doc*", $FLTAR_RECUR)
    $folders = _FileListToArray($folder,"*",2)
    _FolderFunc($folders,$folder,$parent,$level)
    _FileFunc($files,$parent)
EndFunc

Func _FileFunc($files,$parent)
    For $i = 1 To UBound($files)-1
        _GUICtrlTreeView_AddChild($tree,$parent,$files[$i],1,1)
    Next
EndFunc

Func _FolderFunc($folders,$folder,$parent,$level)
    For $i = 1 To UBound($folders)-1
        $parentitem = _GUICtrlTreeView_AddChild($tree,$parent,$folders[$i],0)
        _SearchFolder($folder & "\" & $folders[$i],$parentitem,$level+1)
    Next   
EndFunc



Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
    $hWndTreeView = GUICtrlGetHandle($tree)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndTreeView
            Switch $iCode		
                Case -451
                    $item = _GUICtrlTreeView_GetSelection($hWndTreeView)
                    $root = $item
                    If _GUICtrlTreeView_GetChildCount($hWndTreeView,$item) <= 0 Then
                        $txt = _GUICtrlTreeView_GetText($hWndTreeView,$item)
                        Do
                            $parent = _GUICtrlTreeView_GetParentHandle($hWndTreeView,$item)
                            If $parent <> 0 Then
                                $txt = _GUICtrlTreeView_GetText($hWndTreeView,$parent) & "\" & $txt
                                $item = $parent
                            EndIf
                        Until $parent = 0
                        _SearchFolder($txt,$root)
                    EndIf
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc

Func LeftClickEvent()
    AdlibUnRegister('LeftClickEvent')
    
EndFunc

Func DoubleLeftClickEvent()
    AdlibUnRegister('LeftClickEvent')
    ConsoleWrite('Double left click' & @CRLF)
EndFunc

Func MakeList($dir, $TreeViewOfprograms, $mode = 0)
    FileChangeDir($dir)
    $search = FileFindFirstFile("*.*")
    While 1
        $file = FileFindNextFile($search);
        If @error Then ExitLoop
        $GetExt = GetExt($dir & "\" & $file)
        If $items[0] > 3998 Then ExitLoop
        If $GetExt <> "folder" And $mode = 1 And $GetExt <> "ini" Then;And $GetExt <> "lnk" And $GetExt <> "ini"
            $items[0] += 1
            $names[0] += 1
            $items[ $items[0] ] = GUICtrlCreateTreeViewItem($file, $TreeViewOfprograms)
            $names[ $names[0] ] = $file;$file$dir & "\" &
            GUICtrlSetColor($items[ $items[0]], 0X000000)
        ElseIf $GetExt = "folder" And $mode = 0 Then;And $GetExt <> "INI"
            $TreevieItemNow = GUICtrlCreateTreeViewItem($file, $TreeViewOfprograms)
            $items[0] += 1
            $names[0] += 1
            $items[ $items[0] ] = $TreevieItemNow
            $names[ $names[0] ] = $file;$file;$dir & "\" &
            GUICtrlSetColor($items[ $items[0]], 0x000000)
            MakeList($dir & "\" & $file, $TreevieItemNow, 0)
            MakeList($dir & "\" & $file, $TreevieItemNow, 1)
        EndIf
    WEnd
    FileClose($search)

EndFunc   ;==>MakeList

Func GetExt($file)
    If StringInStr(FileGetAttrib($file), "D") Then Return "folder"
    Return StringUpper(StringTrimLeft($file, StringInStr($file, ".", 0, -1))) ;return only extension
EndFunc   ;==>GetExt

Func ishidden($file)
    Local $attrib
    $attrib = FileGetAttrib($file)
    $file = StringReplace($sFile, "|","\")
	MsgBox("","Test",$File)
    If StringInStr($attrib, "H") Then Return 1
    Return 0
EndFunc ;==>ishidden

