hilfe bei laufwerk durchsuche

  • hallo ich sitze hier vor folgenden problem bei meiner laufwerk suche

    1,ich habe mehrere laufwerke im meinen pc .die ich durch suchen will. im code suche ich alle .exe.

    jetzt mein problem es wird nur das letzte laufwerk durchsucht aber wieso

    hier mal der code

    kann einer mal helfen

    danke im vorraus

    Spoiler anzeigen
    [autoit]


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;
    ;; ;
    ;; ;
    ;; ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    #include <file.au3>;FÜR _PFAD SPLIT
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <FileListToArrayEx.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <GuiStatusBar.au3>;für Statusbar
    #include <array.au3>; FÜR _ArrayDisplay
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Dim $listview[1], $szDrive, $szDir, $szFName, $szExt
    #region ### START Koda GUI section ### Form=C:\Form1.kxf
    $Form1 = GUICreate("Form1", 617, 550, 192, 124)
    GUISetBkColor(0x9DB9EB)
    $Combo1 = GUICtrlCreateCombo("", 31, 350, 60, 25)
    GUICtrlCreateLabel("Laufwerkauswahl!", 100, 350, 500, 25)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $listview = GUICtrlCreateListView("", 16, 24, 593, 318)
    GUICtrlSetData(-1, "")
    ;;;;;;;;;;;;;;;;Statusbar
    Global $aParts[3] = [300, 360, -1], $aText[3] = ['Fertig.', '0', '']
    Global $hStatus = _GUICtrlStatusBar_Create($Form1, $aParts, $aText, $SBARS_SIZEGRIP)
    _GUICtrlStatusBar_SetSimple($hStatus, False)
    _GUICtrlStatusBar_SetMinHeight($hStatus, 20)
    ;;;;;;;;;;;;;;;;;;;;;
    Local $hLV = GUICtrlGetHandle($listview)
    _GUICtrlListView_AddColumn($hLV, 'Fund [ Laufwerk: \ Pfad \ Datei ] - DoubleClick zum Öffnen des Verzeichnis! ', 500)

    [/autoit] [autoit][/autoit] [autoit]

    $Button1 = GUICtrlCreateButton(".exe", 91, 456, 49, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    GUIRegisterMsg(0x004E, "_DoubleClickOnListView");Die Funktion wird bei einem Klick auf die GUI aufgerufen!
    ;;;;;;;;;;;;;;;;;
    #endregion ### END Koda GUI section ###
    Dim $array[1][1]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $Button1
    exe()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $listview Then;Wenn der Klick auf das ListView ging..
    If $event = $NM_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ; Hier kommt hin was er machen soll:
    ;MsgBox(0, "",GUICtrlRead(GUICtrlRead($ListView)))
    ;$Path = _PathSplit(StringReplace(GUICtrlRead(GUICtrlRead($ListView)), '|', ''), $szDrive, $szDir, $szFName, $szExt)
    ;ShellExecute($Path[1] & $Path[2])
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; GEÄNDERT
    $Path = _PathSplit(StringReplace(GUICtrlRead(GUICtrlRead($listview)), '|', ''), $szDrive, $szDir, $szFName, $szExt)
    ShellExecute($Path[1] & $Path[2])
    WinWaitActive("[Class:CabinetWClass]")
    $file = ($Path[3] & $Path[4])
    ControlSend("[Class:CabinetWClass]", "", "", $file)
    ;;;;;;;;;;;;;;;;;;;;;;;
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

    [/autoit] [autoit][/autoit] [autoit]

    Func exe()
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($listview))
    ;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,versuchaufwerke
    _GUICtrlStatusBar_SetText($hStatus, 0, 1)
    $iLVCount = 0 ; Zähler auf Null setzen
    $aDrives = DriveGetDrive('all') ; Alle Festplatten-Buchstaben holen
    For $i = 0 To UBound($aDrives) - 1 ; Alle Festplatten durchgehen
    _GUICtrlStatusBar_SetText($hStatus, 'Durchsuche Festplatte "' & StringUpper($aDrives[$i]) & '\"', 0)
    $sPath = (StringUpper($aDrives[$i])) ;Wandelt einen String in Großschrift um.
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    _GUICtrlStatusBar_SetText($hStatus, 'Bitte warten...', 2)
    Next
    ;;;;;;;;;;;;;;;;
    SplashTextOn('Suche gestartet', ' Bitte warten.....', 150, 40, -1, -1, 20, "", 13)
    $array = _FileListToArrayEx($sPath, '*.exe')
    Dim $listviewitems[UBound($array)]
    For $i = 0 To UBound($array) - 1
    $listviewitems[$i] = GUICtrlCreateListViewItem($array[$i], $listview)
    Next
    SplashOff()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>exe

    [/autoit]


    und hier das include

  • Hallo sillyboy,

    du rufst es ja auch erst nach der Schleife in der du die Lafwerke durchgehst auf, du musst den Aufruf in der Schleife machen. Allerdings musst du dann auch das Array $$listviewitems anders handhaben, z.B. mit

    [autoit]

    _ArrayAdd

    [/autoit]

    arbeiten.

    auch darfst du die Schleife für die Listview erst bei 1 anfangen lassen da _FileListToArrayEx im 1. Element die Anzahl der Funde zurückgibt,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (21. Februar 2011 um 19:44)

  • Hallo sillyboy,

    die

    func exe()
    [autoit]

    Func exe()
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($listview))
    ;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,versuchaufwerke
    _GUICtrlStatusBar_SetText($hStatus, 0, 1)
    $iLVCount = 0 ; Zähler auf Null setzen
    $aDrives = DriveGetDrive('all') ; Alle Festplatten-Buchstaben holen
    ;;;;;;;;;;;;;;;;
    Dim $listviewitems[1]
    $listviewitems[0] = 0
    SplashTextOn('Suche gestartet', ' Bitte warten.....', 150, 40, -1, -1, 20, "", 13)
    _GUICtrlListView_BeginUpdate($listview)
    For $i = 0 To UBound($aDrives) - 1 ; Alle Festplatten durchgehen
    _GUICtrlStatusBar_SetText($hStatus, 'Durchsuche Festplatte "' & StringUpper($aDrives[$i]) & '\"', 0)
    $sPath = (StringUpper($aDrives[$i])) ;Wandelt einen String in Großschrift um.
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    _GUICtrlStatusBar_SetText($hStatus, 'Bitte warten...', 2)
    $array = _FileListToArrayEx($sPath, '*.exe')
    For $j = 1 To UBound($array) - 1
    $iLV = GUICtrlCreateListViewItem($array[$j], $listview)
    _ArrayAdd($listviewitems,$iLV)
    $listviewitems[0] += 1
    Next
    Next
    _GUICtrlListView_EndUpdate($listview)
    ;_ArrayDisplay($listviewitems)
    SplashOff()
    EndFunc ;==>exe

    [/autoit]

    so klappts,

    mfg autoBert

  • danke darauf wäre ich nicht gekommen (noch nicht ,ergeiz)

    konnte das aber nicht irgendwo herauslesen