versteckte Dateien anzeigen/verstecken ... funktionierendes Script?

  • Hallo,

    gibt es hierzu bereits ein funktionierendes Script?
    gibt zwar mehrere threads mit anfängen u nd scripten, jedoch gehen die entweder garnicht, oder, wie zumindest in
    1 script wo alles soweit tadellos funzt, werden die/das explorer fenster nicht automatisch aktualisiert.

    das wäre folgendes script

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Process.au3>
    #include <Misc.au3>
    #Include <WinAPI.au3>
    ;
    AutoItSetOption("WinTitleMatchMode", 4)
    Opt("MustDeclareVars", 1)
    ;
    ;
    ;===============================================================================
    ; Start Program
    ;===============================================================================
    _main()
    ;
    ;
    ;===============================================================================
    ; Functions
    ;===============================================================================
    Func _main()
    _changeFileVisible()
    If @error Then Exit
    _listWin()
    EndFunc ;==>_main
    ;
    ;===============================================================================
    ; Function Name: _listWin
    ; Description: Listet alle offenen Fenster auf und selektiert die "WindowS-Explorer" Fenster in ein Array.
    ; Der erste Wert im Array ist auch gleichzeitig das "Aktive".
    ; Parameter(s):
    ;
    ;
    ; Syntax: _listWin()
    ; Return Value(s): On Success - Gibt ein Array zurück mit allen existierenden "Windows-Explorer" Fenstern
    ; deren Handle und Status
    ; $av_ExplorerWinList["Fenstertitel"]["Handle"]["Status"]
    ; On Failure -
    ;
    ; Author(s): Patric Pendelin <[email='patricpendelin@gmx.de'][/email]>
    ;===============================================================================
    Func _listWin()
    Local $ah_WinList = WinList()
    Local $av_ExplorerWinList[$ah_WinList[0][0]][3]
    Local $s_winState
    Local $s_winStatus
    Local $f_Class
    ;
    For $i = 0 To $ah_WinList[0][0] Step 1
    If $ah_WinList[$i][0] <> "" And IsVisible($ah_WinList[$i][1]) Then
    $f_Class = _isClass($ah_WinList[$i][0], "ExploreWClass")
    If $f_Class Then
    $av_ExplorerWinList[0][0] += 1
    $av_ExplorerWinList[$i][0] = $ah_WinList[$i][0]
    $av_ExplorerWinList[$i][1] = $ah_WinList[$i][1]
    $s_winState = WinGetState($ah_WinList[$i][1], "")
    ;
    If $s_winState = 7 Then
    $s_winStatus = "@SW_RESTORE"
    ElseIf $s_winState = 23 Then
    $s_winStatus = "@SW_MINIMIZE"
    ElseIf $s_winState = 39 Or $s_winState = 35 Then
    $s_winStatus = "@SW_MAXIMIZE"
    Else
    $s_winStatus = ""
    EndIf
    $av_ExplorerWinList[$i][2] = $s_winStatus
    EndIf
    EndIf
    Next
    $ah_WinList = ""; leert das Array
    _Array2DEmptyDel($av_ExplorerWinList, 0); löscht alle lehren Spalten
    ;
    ;~ _ArrayDisplay($av_ExplorerWinList, "_listWin")
    ;
    Return $av_ExplorerWinList
    EndFunc ;==>_listWin
    ;
    ;===============================================================================
    ; Function Name: _changeFileVisible
    ; Description:
    ;
    ; Parameter(s): Prüft, sdie Registry, wie der aktuelle Zustand der Versteckten Dateien ist
    ; und ändert den Wert dementsprechend
    ;
    ;
    ; Syntax: _changeFileVisible()
    ; Return Value(s): On Success - Return 1
    ; On Failure - Return 0
    ;
    ; Author(s): Patric Pendelin <[email='patricpendelin@gmx.de'][/email]>
    ;===============================================================================
    Func _changeFileVisible()
    Local $i_State
    ;
    $i_State = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden")
    If $i_State = 1 Then
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden", "REG_DWORD", "2")
    If Not @error Then Return 1
    ElseIf $i_State = 2 Then
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden", "REG_DWORD", "1")
    If Not @error Then Return 1
    EndIf
    If @error Then Return 0
    EndFunc ;==>_changeFileVisible
    ;
    ;===============================================================================
    ; Function Name: _isClass
    ; Description:
    ;
    ; Parameter(s): Prüft, ob es sich um die jeweilige Klasse handelt.
    ;
    ;
    ; Syntax: _isClass($s_WindowTitel, $s_Class)
    ; Return Value(s): On Success - Return 1
    ; On Failure - Return 0
    ;
    ; Author(s): Patric Pendelin <[email='patricpendelin@gmx.de'][/email]>
    ;===============================================================================
    Func _isClass($s_WindowTitel, $s_Class)
    Local $s_ClassName
    Local $h_Handle
    ;
    $s_ClassName = "classname=" & $s_Class
    $h_Handle = WinGetHandle($s_ClassName, $s_WindowTitel)
    If @error Then
    SetError(1)
    Return 0
    Else
    Return 1
    EndIf
    EndFunc ;==>_isClass
    ;
    ;===============================================================================
    ; Function Name: IsVisible
    ; Description:
    ;
    ; Parameter(s):
    ;
    ;
    ; Syntax: IsVisible($h_Handle)
    ; Return Value(s): On Success - Return 1
    ; On Failure - Return 0
    ;
    ; Author(s): AutoIt3 Help
    ;===============================================================================
    Func IsVisible($h_Handle)
    If BitAND(WinGetState($h_Handle), 2) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>IsVisible
    ;
    ;
    ;----------------------------------------------------------------------------------------------------------------------
    ; UDFs
    ;----------------------------------------------------------------------------------------------------------------------
    ;
    ;----------------------------------------------------------------------------------------------------------------------
    ; Function _Array2DEmptyDel(ByRef $avArray [, $Col=0])
    ;
    ; Description Delete empty Array elements
    ; Delete all emty Rows or all empty Columns
    ; Works also with 1D-Array (only Rows)
    ;
    ; Parameter $avArray Given Array
    ; optional $Col set 1 to delete empty Columns; default is 0 to delete empty Rows
    ;
    ; Return Succes -1 ByRef the given Array without empty Elements, resized
    ; Failure 0 and set @error = 1
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _Array2DEmptyDel(ByRef $avArray, $Col = 0)
    If (Not IsArray($avArray)) Then
    SetError(1)
    Return 0
    EndIf
    Local $UBound2nd = UBound($avArray, 2)
    If @error = 2 Then
    Local $arTMP[1]
    For $i = 0 To UBound($avArray) - 1
    If StringLen($avArray[$i] > 0) Then
    If StringLen($arTMP[UBound($arTMP) - 1]) = 0 Then
    $arTMP[UBound($arTMP) - 1] = $avArray[$i]
    Else
    ReDim $arTMP[UBound($arTMP) + 1]
    $arTMP[UBound($arTMP) - 1] = $avArray[$i]
    EndIf
    EndIf
    Next
    Else
    If $Col = 0 Then
    Local $arTMP[1][$UBound2nd], $val, $len
    For $i = 0 To UBound($avArray) - 1
    $val = ''
    For $k = 0 To $UBound2nd - 1
    $val &= $avArray[$i][$k]
    Next
    If StringLen($val) > 0 Then
    $len = 0
    For $k = 0 To UBound($arTMP, 2) - 1
    $len &= StringLen($arTMP[UBound($arTMP) - 1][$k])
    Next
    If $len = 0 Then
    For $k = 0 To $UBound2nd - 1
    $arTMP[UBound($arTMP) - 1][$k] = $avArray[$i][$k]
    Next
    Else
    ReDim $arTMP[UBound($arTMP) + 1][$UBound2nd]
    For $k = 0 To $UBound2nd - 1
    $arTMP[UBound($arTMP) - 1][$k] = $avArray[$i][$k]
    Next
    EndIf
    EndIf
    Next
    Else
    Local $arTMP[UBound($avArray)][1], $val, $len
    For $k = 0 To $UBound2nd - 1
    $val = ''
    Local $notEmpty = 0
    For $i = 0 To UBound($avArray) - 1
    $val &= $avArray[$i][$k]
    If StringLen($val) > 0 Then
    $notEmpty = 1
    ExitLoop
    EndIf
    Next
    If $notEmpty = 1 Then
    $len = 0
    For $i = 0 To UBound($arTMP) - 1
    $len &= StringLen($arTMP[$i][UBound($arTMP, 2) - 1])
    Next
    If $len = 0 Then
    For $i = 0 To UBound($avArray) - 1
    $arTMP[$i][0] = $avArray[$i][$k]
    Next
    Else
    ReDim $arTMP[UBound($avArray)][UBound($arTMP, 2) + 1]
    For $i = 0 To UBound($avArray) - 1
    $arTMP[$i][UBound($arTMP, 2) - 1] = $avArray[$i][$k]
    Next
    EndIf
    EndIf
    Next
    EndIf
    EndIf
    $avArray = $arTMP
    Return -1
    EndFunc ;==>_Array2DEmptyDel

    [/autoit]
  • Sry, ich hab im moment nicht genug Zeit, um ein Script zu schreiben (Muss Mathe lernen:D:D )
    Aber du kannst doch einfach alle Fenster aktualisieren lassen, oder?
    Das Scirpt zum anzeigen von Versteckten Dateine, hast du ja.

    //Edit: Habs probiert, alleine durch aktualiesieren gehts nicht, ich gugge morgen mal nochma.

    Einmal editiert, zuletzt von anno2008 (7. Mai 2008 um 23:28)

  • Du kannst dir Vielleicht alle Pfade der offenen Explorer anzeigen lassen, nachdem du den Registry key per Scirpt geändert hast.
    Dann kannst du einfach alle Explorer schliessen und erneut aufmachen.
    Ich habs Probiert, danach werden Versteckte Dateien angezeigt.