17 + x Fenster ???

  • Hi zusammen,

    ich schreibe schon seit ner Weile ein Tool, mitdem ich meine Musiksammlung einfacher ordnen kann. Ich stelle mir das so vor, dass man das Cover jedes Musikalbums auf dem Desktop frei anordnen kann (siehe Screenshot). Bei Doppelklick wird es dann gestartet, bei Rechtsklick soll sich ein Kontextmenu öffnen, um die einzelnen Titel auch einzeln starten zu können. Dabei gibt es leider ein Problem: Ab dem 17. Album (Fenster) öffnet sich zwar noch das Kontextmenu, allerdings kann anschließend kein Titel mehr gestartet werden.

    Habe dazu auch schonmal auf der englischen Seite gefragt, dort wurde auf ein internes Limit verwiesen.

    Falls jemand dazu irgendeinen Hinweis hat, wär ich sehr froh darüber! Vieleicht kann man das ja irgendwie elegant umgehen, oder das Limit entfällt in einer zukünftigen Version???

    Robert

    • Offizieller Beitrag

    Hi!

    Schöner Vista-Screen... Ist das da standardmäßig dabei? Habe ich noch nicht gesehen.
    Bezüglich des Limits sehe ich eher schwarz, da es ja ein windows-seitiges Limit zu sein scheint. Vermutlich wird auch Windows Vista da nichts ändern, aber das weiß ich nicht genau.

    Prinzipiell könnte man für jedes Album ein eigenes AutoIt-Skript starten, dann sollte das limt ja behoben sein, wenn ich das richtig verstanden habe. Aber das ist wohl kaum praktikabel, daher solltest du dir lieber andere Wege überlegen, wie man das umsetzen kann, denke ich. Also einen anderen Ansatz als die Ziehbildchen. Beispiel: Eine Liste, die auf Tastendruck eingeblendet wird und beim Auswählen der Einträge in der Albunliste Details und Abspielfunktionen dazu anzeigt in einer GUI...

    peethebee

  • Hi Laetterman,

    das kann ich mir nicht vorstellen.Wenn sich das Kontexmenü nicht geöffnet hätte würde ich das glauben können.Aber das du das Lied nicht abspielen kannst glaube ich nicht.Wenn du beim Kontextmenü auf das Lieb klickst springst du doch einfach zur funktion
    Play($lied)
    Run ( "c:\Programme\Winamp.exe " & $lied)
    Wie sollte für den Run Befehl ein Limit entsehen können ?
    Poste bitte mal dein Script damit wir das sehen können.

    2 Mal editiert, zuletzt von Tam0r (28. September 2006 um 01:59)

  • Hallo TamOr,

    ... es ist leider wirklich so! Hier ist ein Beispiel dazu und auch eine Erklärung! Es öffnen sich 20 Fenster mit jeweils 20 Kontextmenus. Wählt man einen Track aus wird 'Beep' gestartet. Das klappt bei mir aber nur bis zum 17. Fenster .. danach Stille...

    An Peethebee, die Hintergrundbilder von Vista sind ne echte Augenweite. Aber auch dort ändert sich leider nichts an der Begrenzung!!

    Mist , habe schon so viel Zeit damit verbracht, und jetz das... finde die Idee mit den 'Ziehbildchen' eigentlich recht praktisch...

  • Also bei mir klappt das wunderbar... und mit dem beispiel das ich dir gezeigt habe sollte das auch wunderbar gehen..

  • Also bist du sicher das das Beispiel von dem Link bei dir funktioniert? Habe es auf vier Rechnern und zwei Betriebssystemen ausprobiert, da geht es nirgends !!! Was für ein Betreibssystem hast du?

    Der Run Befehl hat kein Limit, sondern die Menueinträge für jedes Fenster (siehe Link!).

  • Ich habe Windows XP und nach diesem Beispiel das ich bisl verrändert habe damit man Bilder ohne Fensterrahmen erstellen kann etc.... Es geht wunderbar.Soll ich etwas ein Screenshot machen mit den 20 Menü einträgen.Wenn ich bei fenster 20 auf Menüeintrag 20 klicke öffnet sich die msgbox!

    [autoit]


    #include <GUIConstants.au3>

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

    Opt("TrayIconDebug", 1)
    Opt("WinTitleMatchMode", 3)
    Opt("GUIOnEventMode", 1)

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

    HotKeySet("{ESC}", "Terminate")

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

    $parent = GUICreate("Gui1", 200, 100, 50, 45)
    GUISetState (@SW_SHOW)
    $X = BitOr($WS_POPUP, $WS_BORDER)
    $dummy = GUICtrlCreateDummy()
    $contextmenu = GUICtrlCreateContextMenu($dummy)

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

    $context_sub = GUICtrlCreateMenu("Play Track", $contextmenu)
    For $z = 1 To 20
    GUICtrlCreateMenuitem('Title ' & $z, $context_sub)
    GUICtrlSetOnEvent(-1, "f_Start_Song")
    Next

    GUICtrlCreateMenuItem("Verknüpfung bearbeiten...", $contextmenu)
    GUICtrlSetOnEvent(-1, "f_start_Song")
    GUICtrlCreateMenuitem ("",$contextmenu)
    GUICtrlCreateMenuitem ("Delete", $contextmenu)
    GUICtrlSetOnEvent(-1, "Terminate")

    For $i = 2 To 20
    GUICreate("" & $i, 200, 100, 40*$i, 45*$i, $x, $WS_EX_TOPMOST,$WS_EX_TOOLWINDOW)
    GUISetState (@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_SECONDARYUP, "f_show_context")
    Next

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

    While 1
    Sleep(10)
    Wend

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

    Exit

    [/autoit]


    edit: [ autoit] Tags eingebunden - Gun-Food

    Einmal editiert, zuletzt von Tam0r (28. September 2006 um 23:48)

  • nein sollst du natürlich nicht. Aber so wie ich das Beispiel verstehe, wird hier 20 mal dasselbe Menu angezeigt. Nun hat aber jedes Album verschiedene Songtitel. DIE würd ich gern anzeigen, und nicht jedesmal Track1, Track2 usw., das wär ja Quatsch.

    Einmal editiert, zuletzt von Laetterman (29. September 2006 um 00:17)

  • So nun habe ich es so wie du willst Probier mal.
    Undzwar wird nur ein Menü erstellt das sich aber je nach Fensteranklick automatisch anpasst.Musst nur noch machen das er das angeklickte dann ausliest und playt

    [autoit]


    #include <GUIConstants.au3>

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

    Opt("TrayIconDebug", 1)
    Opt("WinTitleMatchMode", 3)
    Opt("GUIOnEventMode", 1)

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

    HotKeySet("{ESC}", "Terminate")

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

    $parent = GUICreate("Gui1", 200, 100, 50, 45)
    GUISetState (@SW_SHOW)
    $X = BitOr($WS_POPUP, $WS_BORDER)
    $dummy = GUICtrlCreateDummy()
    $contextmenu = GUICtrlCreateContextMenu($dummy)

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

    $context_sub = GUICtrlCreateMenu("Play Track", $contextmenu)
    Dim $Gui[21]
    Dim $Titel[21]
    $Fensteraktiv = ""

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

    For $z = 1 To 20
    $Titel[$z] = GUICtrlCreateMenuitem('Title ' & $z, $context_sub)
    GUICtrlSetOnEvent(-1, "f_Start_Song")
    Next

    GUICtrlCreateMenuItem("Verknüpfung bearbeiten...", $contextmenu)
    GUICtrlSetOnEvent(-1, "f_start_Song")
    GUICtrlCreateMenuitem ("",$contextmenu)
    GUICtrlCreateMenuitem ("Delete", $contextmenu)
    GUICtrlSetOnEvent(-1, "Terminate")

    For $i = 2 To 20
    $Gui[$i] = GUICreate("" & $i, 200, 100, 40*$i, 45*$i, $x, $WS_EX_TOPMOST,$WS_EX_TOOLWINDOW)
    GUISetState (@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_SECONDARYUP, "f_show_context")
    Next

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

    While 1
    Sleep(10)
    For $i = 1 to 20

    if WinActive ( $i) Then
    if $i = $fensteraktiv Then
    Else
    For $n = 1 to 20
    GUICtrlSetData ( $Titel[$n], Iniread ( "Playlist.ini", $i,$n,"Error"))
    Next
    $Fensteraktiv = $i
    EndIf
    Else
    EndIf
    Next

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



    Wend

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

    Func f_start_Song()
    Beep(400, 10)
    EndFunc

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

    Func Terminate()
    Exit
    EndFunc

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

    Func f_show_context()
    Local $hMenu = GUICtrlGetHandle($contextmenu)
    Local $arPos = MouseGetPos()

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

    DllCall("user32.dll", "int", "TrackPopupMenuEx", _
    "hwnd", $hMenu, _
    "int", 0, _
    "int", $arPos[0], _
    "int", $arPos[1], _
    "hwnd", $parent, _
    "ptr", 0)
    EndFunc

    [/autoit]


    Konnte leider keien datei anhängen aber die Playlist .inisieht so aus bei mir :

    [autoit]


    [1]
    1=a
    2=b
    3=c
    4=d
    5=e
    6=f
    7=g
    8=h
    9=i
    10=j
    11=k
    12=l
    13=m
    14=n
    15=o
    16=p
    17=q
    18=r
    19=s
    20=t
    [2]
    1=a
    2=b
    3=c
    4=d
    5=e
    6=f
    7=g
    8=h
    9=i
    10=j
    11=k
    12=l
    13=m
    14=n
    15=o
    16=p
    17=q
    18=r
    19=s
    20=t
    [3]
    ...

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

    Einmal editiert, zuletzt von Tam0r (29. September 2006 um 20:16)

  • Zitat

    So nun habe ich es so wie du willst Probier mal.
    Undzwar wird nur ein Menü erstellt das sich aber je nach Fensteranklick automatisch anpasst.Musst nur noch machen das er das angeklickte dann ausliest und playt

    Finde ich echt gut hab auch so viel Musik auf mein Pc.
    Könntest du mir bitte ein Beispiel geben wie ich den einzelnen Fenstern ein pic zuweissen kann,und wie ich die Titel im kontex starte.bin schon dabei die ini. zu schreiben die wird rieig.Wehre echt net wenn mir jemand helfen könnte.

    mfg. weedhead

  • ja eigentlich nur die titel des entsrechenden Albums.und bei klick auf diesen sollte das starten,ich glaube das ist schon wieder bischen zu hoch für mich.

    mfg, weedhead

  • Knapp 5 uhr morgends geht es nicht schöner :P


    [autoit]


    #include <GUIConstants.au3>

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

    Opt("TrayIconDebug", 1)
    Opt("WinTitleMatchMode", 3)
    Opt("GUIOnEventMode", 1)

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

    HotKeySet("{ESC}", "Terminate")

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

    $parent = GUICreate("Gui1", 200, 100, 50, 45)
    GUISetState (@SW_SHOW)
    $X = BitOr($WS_POPUP, $WS_BORDER)
    $dummy = GUICtrlCreateDummy()
    $contextmenu = GUICtrlCreateContextMenu($dummy)
    $Player = "C:\Programme\winamp\winamp.exe"
    $mp3_ordner = "c:\"

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

    $context_sub = GUICtrlCreateMenu("Play Track", $contextmenu)
    Dim $Gui[21]
    Dim $Titel[21]
    $Fensteraktiv = ""

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

    For $z = 1 To 20
    $Titel[$z] = GUICtrlCreateMenuitem('Title ' & $z, $context_sub)
    GUICtrlSetOnEvent(-1, "f_Start_Song"&$z)
    Next

    GUICtrlCreateMenuItem("Verknüpfung bearbeiten...", $contextmenu)
    GUICtrlSetOnEvent(-1, "f_start_Song")
    GUICtrlCreateMenuitem ("",$contextmenu)
    GUICtrlCreateMenuitem ("Delete", $contextmenu)
    GUICtrlSetOnEvent(-1, "Terminate")

    For $i = 2 To 20
    $Gui[$i] = GUICreate("" & $i, 200, 100, 40*$i, 45*$i, $x, $WS_EX_TOPMOST,$WS_EX_TOOLWINDOW)
    GUISetState (@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_SECONDARYUP, "f_show_context")
    Next

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

    While 1
    Sleep(10)
    For $i = 1 to 20

    if WinActive ( $i) Then
    if $i = $fensteraktiv Then
    Else
    For $n = 1 to 20
    GUICtrlSetData ( $Titel[$n], Iniread ( "Playlist.ini", $i,$n,"Error"))
    Next
    $Fensteraktiv = $i
    EndIf
    Else
    EndIf
    Next

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



    Wend

    Func f_start_Song()
    ;~ Run ( $Player & " "& $mp3_ordner & IniRead ( "Playlist.ini", $i, "1",""))
    EndFunc

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

    Func f_start_Song1()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "1",""))
    EndFunc

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

    Func f_start_Song2()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "2",""))
    EndFunc

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

    Func f_start_Song3()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "3",""))
    EndFunc

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

    Func f_start_Song4()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "4",""))
    EndFunc

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

    Func f_start_Song5()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "5",""))
    EndFunc

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

    Func f_start_Song6()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "6",""))
    EndFunc

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

    Func f_start_Song7()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "7",""))
    EndFunc

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

    Func f_start_Song8()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "8",""))
    EndFunc

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

    Func f_start_Song9()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "9",""))
    EndFunc

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

    Func f_start_Song10()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "10",""))
    EndFunc

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

    Func f_start_Song11()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "11",""))
    EndFunc

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

    Func f_start_Song12()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "12",""))
    EndFunc

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

    Func f_start_Song13()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "13",""))
    EndFunc

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

    Func f_start_Song14()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "14",""))
    EndFunc

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

    Func f_start_Song15()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "15",""))
    EndFunc

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

    Func f_start_Song16()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "16",""))
    EndFunc

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

    Func f_start_Song17()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "17",""))
    EndFunc

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

    Func f_start_Song18()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "18",""))
    EndFunc

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

    Func f_start_Song19()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "19",""))
    EndFunc

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

    Func f_start_Song20()
    _Winactive()
    Run ( $Player & " "& $mp3_ordner & IniRead ( "E:\Auto IT\Source\Playlist.ini", $fensteraktiv, "20",""))
    EndFunc

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

    Func _Winactive()
    For $u = 1 to 20
    If $u = Winactive ($u) Then
    Global $fensteraktiv = $u
    Else
    EndIf
    Next
    EndFunc

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

    Func Terminate()
    Exit
    EndFunc

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

    Func f_show_context()
    Local $hMenu = GUICtrlGetHandle($contextmenu)
    Local $arPos = MouseGetPos()

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

    DllCall("user32.dll", "int", "TrackPopupMenuEx", _
    "hwnd", $hMenu, _
    "int", 0, _
    "int", $arPos[0], _
    "int", $arPos[1], _
    "hwnd", $parent, _
    "ptr", 0)
    EndFunc

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