dateien Lesen!

  • hallo ihr!
    Warscheinlich wurde diese frage schon oft gestellt ... allerdings habe ich nichts passendes in der suche gefunden!

    also: Ich möchte einen script machen, der mir anzeigt welche Dateien (in meinem falle *.mp3 dateien) in einem ordner sind, und diese in einer liste anzeigt!
    wenn ich dann auf einen Titel klicke soll sich mein standart mediaplayer öffnen!

    Ich höffe ihr könnt mir helfen!

    Vielen Dank im Vorraus ... Mfg Lenny ^^

    Jaja, Moo does the Cow!

    • Offizieller Beitrag

    Aber, aber - nix in der Suche gefunden :lol:
    Wonach hast du da nur gesucht? ;)

    Schau mal FileFindFirstFile() / FileFindNextFile()
    Dort kannst du mit Wildcards suchen.
    Die gefundenen Dateinamen einfach in eine Liste füllen.
    Bei Klick auf Listenelement Shellexecute()

    So mal als grobe Anleitung.

  • Hallo!

    Ist der Anfang so okay ?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("AForm1", 395, 447, 694, 280)
    $Find = FileFindFirstFile("C:\Dokumente und Einstellungen\Lenny\Eigene Dateien\Meine Musik\*.mp3")
    $liste = GUICtrlCreateList($find , 0, 24, 393, 409)
    $Button1 = GUICtrlCreateButton("Schließen", 152, 0, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

    [/autoit]

    Danke im Vorraus ... ^^

    Ich hab doch ein List (GUICtrlCreateList($find , 0, 24, 393, 409)
    oder noch was anderes ?

    Jaja, Moo does the Cow!

    Einmal editiert, zuletzt von Lenny (13. Oktober 2007 um 15:40)

    • Offizieller Beitrag

    Hi!

    Für die Anzeige brauchst du eine List oder LIstView (GUICTRLCreateList(View)).
    Die füllst du dann mit den Ergebnisse aus FilFindFirstFile oder _FIleListToArray.

    Edit: Sorry, hatte nur kurz drüber geschaut und gedacht, du verwendest $Find = FileFindFirstFile("C:\Dokumente und Einstellungen\Lenny\Eigene Dateien\Meine Musik\*.mp3") als Control. Das Füllen muss trotzdem in einer Schleife passieren, siehe dazu zumindest mal das Beispiel in der Hilfe zu FileFindFirstFile.

    peethebee

  • Hallo!
    Erstmal danke für die schnellen antoworten!


    Also ... ich habe es jetzt so gemacht:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    $Form1 = GUICreate("AForm1", 395, 447, 694, 280)
    $Button1 = GUICtrlCreateButton("Schließen", 152, 0, 75, 25, 0)

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

    $search = FileFindFirstFile("C:\Dokumente und Einstellungen\Lenny\Eigene Dateien\Meine Musik\*.mp3")
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    $liste = GUICtrlCreateList($file, 0, 24, 393, 409)


    WEnd
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Exit
    EndSwitch

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

    WEnd

    [/autoit]

    Ich sehe auch meine ganze musik ... sie läuft allerdings in der obersten spalte in sekunden schnelle durch ... (10 lieder ca. 1sek) ...

    was muss ich noch hinzufügen ?

    Vielne Dank im Vorraus!

    Edit1:
    Ich hab den Button1 aus der While schleife rausgenommen (war nur ausversehen da) jetzt laufen alle lieder ca in (0.5 sek) durch ... ?( .. Oo

    Hat sich ja eig nichts geändert!

    Lenny

    Edit2: ... GUISetState(@SW_SHOW) hab ich jetzt auch rausgelassen ... noch schneller !!! ... je weniger da drinnen ist desto schneller wird iwie !?

    Lenny

    Jaja, Moo does the Cow!

    2 Mal editiert, zuletzt von Lenny (13. Oktober 2007 um 17:51)

    • Offizieller Beitrag

    Du mußt erst die Liste in der GUI erstellen, dann die Daten suchen und dann die Liste befüllen.
    Ich habs mal vorbereitet.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiList.au3>
    Dim $arFile[1]

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

    $Form1 = GUICreate("AForm1", 395, 447, 694, 280)
    $Button1 = GUICtrlCreateButton("Schließen", 152, 0, 75, 25, 0)
    $liste = GUICtrlCreateList('', 0, 24, 393, 409)

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

    $search = FileFindFirstFile("C:\Dokumente und Einstellungen\Lenny\Eigene Dateien\Meine Musik\*.mp3")
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    ReDim $arFile[UBound($arFile)+1]
    $arFile[UBound($arFile)-1] = $file
    WEnd
    For $i = 1 To UBound($arFile) -1
    _GUICtrlListAddItem ( $liste, $arFile[$i] )
    Next

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


    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Exit
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Einfacher!?

    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiList.au3>
    Dim $arFile[1]

    $Form1 = GUICreate("AForm1", 395, 447, 694, 280)
    $Button1 = GUICtrlCreateButton("Schließen", 152, 0, 75, 25, 0)
    $liste = GUICtrlCreateList('', 0, 24, 393, 409)

    $search = FileFindFirstFile("C:\Dokumente und Einstellungen\Lenny\Eigene Dateien\Meine Musik\*.mp3")
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    _GUICtrlListAddItem ( $liste, $file )
    WEnd

    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Exit
    EndSwitch
    WEnd

    [/autoit]

    peethebee

  • Joa .. super !

    Funzt beides Super ... obwohl mir peethebee's lösung ein Bissl besser gefällt weils einfacher zu verstehen ist ... ^^

    Könntet ihr mir noch sagen was man braucht um das lied abzuspieln ? ... also nur sagen ... würd ich gern selber basteln ... ^^

    Vielen Dank im Vorraus ....

    Also warscheinlich
    Case $***
    Und hier?


    Vielen Dank ... ^^

    Lenny

    edit1:

    So könnte ihc es mir vorstellen:

    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiList.au3>
    Dim $arFile[1]

    $Form1 = GUICreate("AForm1", 395, 447, 694, 280)
    $Button1 = GUICtrlCreateButton("Schließen", 152, 0, 75, 25, 0)
    $liste = GUICtrlCreateList('', 0, 24, 393, 409)

    $search = FileFindFirstFile("C:\Dokumente und Einstellungen\Lenny\Eigene Dateien\Meine Musik\*.mp3")
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    _GUICtrlListAddItem ( $liste, $file )
    WEnd

    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Exit;;;;;
    Case $liste
    ShellExecute("wmplayer.exe", $search);;;;;
    EndSwitch
    WEnd

    [/autoit]

    aBER das klappt natürlich nicht -.-


    Lenny

    Jaja, Moo does the Cow!

    3 Mal editiert, zuletzt von Lenny (13. Oktober 2007 um 19:15)

    • Offizieller Beitrag

    Denk doch mal etwas nach ;)
    Du mußt einen Eintrag markieren, dann auslesen und erst dann kannst du die Datei ausführen.
    Zwei Möglichkeiten:
    - Auswahl per Doppelklick oder
    - Eintrag markieren und per Kontextmenü auslesen

    Für Doppelklick habe ich im Skriptforum ein Bsp. stehen, wie du Doppelklick auf jedes Control anwenden kannst.

  • :D Danke Bugfix


    ...Omg ,,, hätte ja nicht gedacht das dieser script so komplex ist ...
    Ich werde es versuchen ... wenn es nciht klappt mach ich mit leichteren sachen weiter ... :S Kannst du mir denn wenigstens einen Anfang für

    Makieren ~~~~> auslesen .... Geben ?
    Ich habe mir den Doppelklick script schon angeguckt und dieser ist wirklich ziemlich komplex ... :S

    Lenny

    Jaja, Moo does the Cow!

    Einmal editiert, zuletzt von Lenny (13. Oktober 2007 um 20:10)

    • Offizieller Beitrag

    Guckst du :D

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiList.au3>
    Opt("GUIOnEventMode", 1)
    Opt("MouseCoordMode", 0) ; Maus-Koordinaten relativ zum Fenster
    Global $start
    Global $n = 0
    Global $MousePos = True
    Global $pos
    Global $clickspeed = RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "DoubleClickSpeed")

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 467, 260, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_PRIMARYdown')
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_PRIMARYup')
    $List1 = GUICtrlCreateList("", 25, 18, 290, 175, BitOR($WS_BORDER, $WS_VSCROLL))
    $Input1 = GUICtrlCreateInput("", 25, 214, 290, 21)
    $MyButton1 = GUICtrlCreateButton("Liste füllen", 340, 34, 100, 30, 0)
    GUICtrlSetOnEvent(-1, '_FillList')
    $MyButton2 = GUICtrlCreateButton("Liste leeren", 344, 148, 100, 30, 0)
    GUICtrlSetOnEvent(-1, '_ClearList')
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func _FillList()
    For $i = 1 To 20
    _GUICtrlListAddItem ( $List1, "Eintrag Nummer: " & $i )
    Next
    EndFunc

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

    Func _ClearList()
    _GUICtrlListClear ( $List1 )
    EndFunc

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

    Func _List_1_DblClick()
    Local $txt = _GUICtrlListGetSelItemsText ( $List1 )
    If IsArray($txt) Then GUICtrlSetData( $Input1, $txt[1] )
    EndFunc

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

    Func _PRIMARYdown()
    $pos = MouseGetPos()
    Select
    Case _CheckCtrlDblClick($Form1, $List1)
    _List_1_DblClick()
    Case Else
    $MousePos = False
    EndSelect
    EndFunc

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

    Func _PRIMARYup()
    If $MousePos Then
    If $n = 2 Then
    $n = 0
    Else
    $start = TimerInit()
    EndIf
    EndIf
    EndFunc

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

    Func _CheckCtrlDblClick($GUI, $CTRL)
    Local $CtrlPos = ControlGetPos($GUI, '', $CTRL)
    If ($pos[0] >= $CtrlPos[0] And $pos[0] <= $CtrlPos[0] + $CtrlPos[2]) And _
    ($pos[1] >= $CtrlPos[1] +20 And $pos[1] <= $CtrlPos[1] +20 + $CtrlPos[3]) Then
    $n += 1
    $MousePos = True
    If $n = 2 And (TimerDiff($start) < $clickspeed) Then
    Return True
    Else
    $start = TimerInit()
    $n = 1
    EndIf
    EndIf
    EndFunc

    [/autoit]


    Dran denken: Verwende OnEvent-Mode

    • Offizieller Beitrag

    Hier, ich hab mal deine Ausleseroutine mit eingebunden.
    Check mal obs so läuft.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiList.au3>
    Opt("GUIOnEventMode", 1)
    Opt("MouseCoordMode", 0)
    Global $start
    Global $n = 0
    Global $MousePos = True
    Global $pos
    Global $clickspeed = RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "DoubleClickSpeed")

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 395, 447, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_PRIMARYdown')
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_PRIMARYup')
    $List1 = GUICtrlCreateList("", 20, 20, 355, 407, BitOR($WS_BORDER, $WS_VSCROLL))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _FillList()

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func _FillList()
    Local $search = FileFindFirstFile("C:\Dokumente und Einstellungen\Lenny\Eigene Dateien\Meine Musik\*.mp3")
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    _GUICtrlListAddItem ( $List1, $file )
    WEnd
    EndFunc

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

    Func _List_1_DblClick()
    Local $txt = _GUICtrlListGetSelItemsText ( $List1 )
    If IsArray($txt) Then ShellExecute( $txt[1] )
    EndFunc

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

    Func _PRIMARYdown()
    $pos = MouseGetPos()
    Select
    Case _CheckCtrlDblClick($Form1, $List1)
    _List_1_DblClick()
    Case Else
    $MousePos = False
    EndSelect
    EndFunc

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

    Func _PRIMARYup()
    If $MousePos Then
    If $n = 2 Then
    $n = 0
    Else
    $start = TimerInit()
    EndIf
    EndIf
    EndFunc

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

    Func _CheckCtrlDblClick($GUI, $CTRL)
    Local $CtrlPos = ControlGetPos($GUI, '', $CTRL)
    If ($pos[0] >= $CtrlPos[0] And $pos[0] <= $CtrlPos[0] + $CtrlPos[2]) And _
    ($pos[1] >= $CtrlPos[1] +20 And $pos[1] <= $CtrlPos[1] +20 + $CtrlPos[3]) Then
    $n += 1
    $MousePos = True
    If $n = 2 And (TimerDiff($start) < $clickspeed) Then
    Return True
    Else
    $start = TimerInit()
    $n = 1
    EndIf
    EndIf
    EndFunc

    [/autoit]
  • Hallo !

    Nein ---- der script läuft nicht so wie er sollte ... siehe Screenshot ....

    Trotzdem Vielen Dank

    €: Bei den geschwärzten stellen wollte ich euch nur nicht mit meinem schlimmen musikstil belästigen ... das stand nur ....

    EinLied.mp3

    "EinLied.mp3"konnte nicht...