Starplayer v2 (MP3-Player)

    • Offizieller Beitrag

    Version 2.7.1 ( 05.10.2009 )

    Die neue Version vom Starplayer unterscheidet sich von der alten in einigen Dingen und deswegen mache ich mal einen neuen Thread auf.
    Vielleicht möchte ja der ein oder andere lieber die alte Version benutzen.

    Hier erstmal ein Screenshot von der neuen Version:
    autoit.de/wcf/attachment/6277/

    Was ist neu?
    - Der gerade gespielte Titel wird im Listview orange angezeigt (das ist nicht die Markierung vom selektieren).
    - Status-Anzeige: Anzahl der Dateien (Bytes) sowie die Gesamtspieldauer aller Lieder in der Playlist.
    - Es gibt einen Umschalt-Button, um die Playlist auf Endloswiedergabe zu schalten (Wiederholung der gesamten Playlist).
    - Mute-Button (der mit dem Lautsprecher drauf) unten rechts schaltet den Ton stumm.
    - Die Progressbar auf der rechten Seite kann mit dem Mausrad rauf-/runtgeregelt werden, wenn der Lautsprecher-Button blau ist. Außerdem kann die Lautstärke auch durch hineinklicken in die Progressbar geregelt werden.
    - Einzelne Titel kann man nun mit den beiden Buttons auf der linken Seite nach oben bzw. unten verschieben.
    - Alle Dateien aus der Playlist lassen sich exportieren (der Button mit dem Handy drauf). Dabei werden die Dateien in ein auswählbares Verzeichnis kopiert und es wird eine passende Playlist erzeugt. Gut geeignet zum füllen von tragbaren MP3-Playern/Handys.

    Weitere Features (gab es schon in der alten Version):
    - Doppelklick auf einen Eintrag spielt diesen ab.
    - Mausklick in die Song-Progressbar springt an die entsprechende Stelle im Lied.
    - Zufallssortierung der Playlist.
    - Laden/Speichern der Playlist.
    - Drag and Drop von MP3s bzw. ganzen Verzeichnissen mit MP3s (hier allerdings nicht rekursiv).
    - Fensterposition wird abgespeichert.
    - Minimieren in den Traybereich (auswählbar).
    - Immer im Vordergrund (auswählbar).

    Wen die Tooltips bei den Buttons stören, der kann in der Inidatei (c:\Dokumente und Einstellungen\Anwendungsdaten\Starplayer2\Starplayer.ini) folgenden Eintrag unter "Settings" erstellen:

    Code
    Tooltips=False

    Die Farben lassen sich im Script ändern. Am Anfang (unter Color-Definition) findet ihr die Farbzuweisungen. Falls ihr andere Farben bevorzugt.

    Script, Icons und Exedatei findet ihr im ZIP-Archiv.

    Für Verbesserungsvorschläge, Kritik und Fehlermeldungen stehe ich immer zur Verfügung. :)

    Edit 01.10.09 Version 2.1 :
    - Bug mit der Laufzeit behoben. Wenn "GetDetailsOf" nichts oder etwas falsches zurückgibt, wird nun die Datei mit _SoundOpen geöffnet und mit _SoundLength die Laufzeit ausgelesen. Nachteil ist, dass das dann etwas länger dauert.

    Edit 03.10.09 Version 2.2 :
    - Die Laufzeit eines MP3s wird nun durch eine Funktion "_GetMP3Info" von "YDY (Lazycat) <mpc@nm.ru>" (Danke für die Funktion, Lazycat!) ermittelt, falls "GetDetailsOf" nicht erfolgreich war. Und erst, wenn auch diese Funktion versagt, wird die Laufzeit über _SoundLength ausgelesen. So geht das einlesen wieder schneller.
    - Man kann den Starplayer als Standard-MP3-Player registrieren lassen: im Menü "Options" gibt es jetzt einen Eintrag "Register ".mp3" to Starplayer". Danach kann man einfach einen Doppelklick auf eine MP3-Datei machen und diese wird dann mit dem Starplayer abgespielt. Wenn der Starplayer bereits gestartet ist, dann wird bei einem Doppelklick die MP3-Datei dem Ende der Playlist hinzugefügt.

    Edit 03.10.09 Version 2.3 :
    - Es gab Probleme, wenn man sehr viele (>200 Stück) MP3s in der Playlist hatte. Dann wurde die Reaktion auf den Prev- bzw. Next-Button sehr lahm. Fehler behoben!
    - AdlibRegister ausgetauscht gegen _Timer_SetTimer. Mit _Timer_SetTimer wird die Laufzeitanzeige auch dann aktualisiert, wenn man das Menü öffnet. Außerdem funktioniert das Script so auch mit der letzten Stable-Version von AutoIt. Die Beta wird nur für den MP3-VBR-Support benötigt.
    - Zieht man nun Verzeichnisse (per Drag and Drop) auf die Playlist, so werden diese rekursiv (auch die MP3s aus den Unterverzeichnissen) eingelesen.

    Edit 04.10.09 Version 2.4 :
    - Problem mit dem Mehrfachaufruf behoben. Danke für's testen, Raupi!
    - Den blöden Fehler (Laufzeit wurde nicht aktualisiert) aus der 2.3er Version behoben.
    - Ein paar kleine Änderungen am Sourcecode.

    Edit 04.10.09 Version 2.5 :
    - _TimerSetTimer musste wieder rausfliegen, weil das beim beenden des Programms einen Absturz erzeugte.
    - In der Playlist wird nun zu jedem Titel auch das Album angezeigt (falls in den ID3-TAGs eingetragen).
    - die Up-/Down-Buttons haben jetzt eine Wiederholfunktion.
    - Im Menü "Options" gibt es einen neuen Eintrag "Play Title immediately when doubleclick in Explorer". Ist hier ein Haken, dann wird der Titel zwar immer noch der Playlist hinzugefügt, aber er wird auch gleich gespielt.
    - Die Registrierung als Standard-MP3-Player sollte jetzt korrekt funktionieren. Zumindest bei WindowsXP.

    Edit 05.10.09 Version 2.6 :
    - Das mit dem Timer habe ich nochmal überarbeitet. Jetzt nehme ich $WM_TIMER und damit läuft alles perfekt. :)
    - Zusätzlich zu der Erweiterung ".mp3" wird auch ".m3u" für die Playlist registriert, sodass man auch einen Doppelklick auf eine Playlist machen kann.
    - Error-Handling dem Source-Code hinzugefügt, um Fehleingaben des Benutzers zu verhindern.
    - Für die MP3- und M3U-Dateien gibt es eigene Standard-Icons. Diese (mp3.ico und m3u.ico) befinden sich im Icons-Unterverzeichnis des Scriptverzeichnisses.

    Edit 05.10.09 Version 2.7 :
    - Ein VU-Meter ist jetzt noch dazugekommen (siehe Screenshot). Ein ganz besonderer Dank geht dafür an Eukalyptus für das tolle Beispiel zur "BassEnc.au3".
    - Und es gibt jetzt einen Menüpunkt "Credits", für meine Danksagungen. :)

    Edit 05.10.09 Version 2.7.1 :
    - Bei den Dateien "bass.au3" und "bassenc.au3" habe ich die Variable $error in $my_error umbenannt, wegen Compilerfehler.
    - Das Audio-Device und -Input wird nun in der Inidatei gespeichert, damit man es nicht bei jedem Programmstart auswählen muss (falls die Standardeinstellung nicht korrekt ist).
    - Nach umfangreichen Tests von Raupi (Danke dafür) scheint es so, dass die 2.7er Versionen nur unter WindowsXP einwandfrei laufen. Unter Windows7 geht das VU-Meter nicht und unter Vista funktioniert das Programm gar nicht. Deswegen biete ich mal zusätzlich noch die 2.6er Version zum Download an, bis ich dafür eine Lösung gefunden habe.

  • Hey,

    Leider kommt der übliche Arrayfehler sobald man eine Musikdatei hinzufügt.

    Außerdem sind beim Source Beta und Stable Funktionen gemischt?
    AdlibRegister, AdlibDisable usw.

    Das Design ist aber cool :D

  • Seltsam, bei mir wird gemeckert (ERROR: AdlibDisable(): undefined function.).
    Naja wie auch immer, liegt vielleicht an Scite? ?(

    @Arrayfehler:
    Tritt in der .exe und dem Skript auf (egal wie hinzugefügt).
    Zeile 524 ist der Übeltäter.


    Datei: mp3
    Bitrate: ka
    ID3Tags: wohl keine (bin nicht so der mp3 Profi)
    OS: WinXP

    -> kein Eintrag in Duration -> kein Text vom Subitem
    Stringsplit gibt dann trotzdem ein Array zurück und die Isarray -Abfrage verfehlt den Sinn.

    [autoit]


    $string = ""
    $astring = StringSplit($string, ":")
    If IsArray($astring) then
    MsgBox(1, "", "Array gefunden")
    else
    MsgBox(1, "", "Kein Array :(")
    endif

    [/autoit]

    Würde ich mal behaupten, zu so später Stunde.

    • Offizieller Beitrag

    Ok, das mit IsArray war ein Bug. Aber eigentlich dürfte er sich gar nicht bemerkbar machen. Der Fehler liegt tiefer versteckt. Da wird die Laufzeit nicht richtig ermittelt.
    Kannst Du mal dieses Script bei Dir mit einem MP3 testen:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $sPath = FileOpenDialog('Test', '', '(*.mp3)', 3, '')
    $aProperty = GetExtProperty($sPath, -1)
    _ArrayDisplay($aProperty)
    $hFile = FileOpen(@ScriptDir & '\Ausgabe-Array.txt', 2)
    If $hFile <> -1 Then
    For $i = 0 To UBound($aProperty) - 1
    FileWriteLine($hFile, $aProperty[$i])
    Next
    FileClose($hFile)
    EndIf
    ;===============================================================================
    ; Function Name: GetExtProperty($sPath,$iProp)
    ; Description: Returns an extended property of a given file.
    ; Parameter(s): $sPath - The path to the file you are attempting to retrieve an extended property from.
    ; $iProp - The numerical value for the property you want returned. If $iProp is is set
    ; to -1 then all properties will be returned in a 1 dimensional array in their corresponding order.
    ; The properties are as follows:
    ; Name = 0
    ; Size = 1
    ; Type = 2
    ; DateModified = 3
    ; DateCreated = 4
    ; DateAccessed = 5
    ; Attributes = 6
    ; Status = 7
    ; Owner = 8
    ; Author = 9
    ; Title = 10
    ; Subject = 11
    ; Category = 12
    ; Pages = 13
    ; Comments = 14
    ; Copyright = 15
    ; Artist = 16
    ; AlbumTitle = 17
    ; Year = 18
    ; TrackNumber = 19
    ; Genre = 20
    ; Duration = 21
    ; BitRate = 22
    ; Protected = 23
    ; CameraModel = 24
    ; DatePictureTaken = 25
    ; Dimensions = 26
    ; Width = 27
    ; Height = 28
    ; Company = 30
    ; Description = 31
    ; FileVersion = 32
    ; ProductName = 33
    ; ProductVersion = 34
    ; Requirement(s): File specified in $spath must exist.
    ; Return Value(s): On Success - The extended file property, or if $iProp = -1 then an array with all properties
    ; On Failure - 0, @Error - 1 (If file does not exist)
    ; Author(s): Simucal ([email='Simucal@gmail.com'][/email])
    ; Note(s):
    ;
    ;===============================================================================
    Func GetExtProperty($spath, $iProp)
    Local $iExist, $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty, $sProperty
    $iExist = FileExists($spath)
    If $iExist = 0 Then
    SetError(1)
    Return 0
    Else
    $sFile = StringTrimLeft($spath, StringInStr($spath, '\', 0, -1))
    $sDir = StringTrimRight($spath, (StringLen($spath) - StringInStr($spath, '\', 0, -1)))
    $oShellApp = ObjCreate('shell.application')
    $oDir = $oShellApp.NameSpace($sDir)
    $oFile = $oDir.Parsename($sFile)
    If $iProp = -1 Then
    Local $aProperty[35]
    For $i = 0 To 34
    $aProperty[$i] = $oDir.GetDetailsOf($oFile, $i)
    Next
    Return $aProperty
    Else
    $sProperty = $oDir.GetDetailsOf($oFile, $iProp)
    If $sProperty = '' Then
    Return 0
    Else
    Return $sProperty
    EndIf
    EndIf
    EndIf
    EndFunc

    [/autoit]


    An welcher Stelle wird da die Laufzeit angezeigt?

    • Offizieller Beitrag

    Das kann doch gar nicht sein. ?(
    Ich habe zwar mittlerweile rausgekriegt, dass die Informationen bei den verschiedenen Windows-Versionen an anderer Stelle sind (deshalb die Abfrage am Anfang), aber dass sie gar nicht zurückgegeben werden ist mir neu.
    Kann das sonst noch jemand bestätigen?
    Weil, ich habe auch WindowsXP und bei mir wird bei all meinen MP3s (auch die VBR-codierten) die Laufzeit ausgegeben.

  • Nun läufts :)
    Das Hinzufügen ist leider nichtmehr besonders schnell. :(
    Schuld ist wie erwähnt die _SoundLenght Funktion.

    edit \
    Hab hier was gefunden:

    Spoiler anzeigen
    [autoit]


    $file = FileOpenDialog("Please select file", "", "MP3 files (*.mp3)");
    if @error then Exit
    $aData = _GetMP3Info($file)
    if @error then Exit
    $aLabel = StringSplit("MPEG Version: |Layer: |Bitrate: |Frequency: |Channel Mode: |Have CRC: |Copyright: |Original: ", "|")
    Dim $out = ""
    for $i = 0 to UBound($aData)-1
    $out = $out & $aLabel[$i+1] & $aData[$i] & @CR
    next
    MsgBox (0, "MP3 Data", $out)

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

    ;===============================================================================
    ;
    ; Description: Retrieve MP3 basic information
    ; Parameter(s): File name
    ; Requirement(s): None
    ; Return Value(s): On Success - array with data:
    ; 0 - MPEG version
    ; 1 - Layer
    ; 2 - Bitrate
    ; 3 - Frequency
    ; 4 - Channel Mode
    ; 5 - CRC protected
    ; 6 - Copyrighted
    ; 7 - Original
    ; On Failure empty string and sets @ERROR:
    ; 1 - Info not found
    ; Author(s): YDY (Kot) <[email='mpc@nm.ru'][/email]>
    ; Version: 1.0.00
    ; Date: 22.08.2004
    ; Note(s): None
    ;
    ;===============================================================================

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

    Func _GetMP3Info($file)
    Local $frame = "", $data[8], $offset = 1, $isVBR = 0
    Local $aVersion = StringSplit("MPEG 2.5|Undefined|MPEG 2.5|MPEG 1", "|")
    Local $aLayer = StringSplit("Undefined|Layer III|Layer II|Layer I", "|")
    Local $sBitrate = ""
    Local $sFrequency = ""
    Local $aChanMode = StringSplit("Stereo|Joint stereo|Dual channel|Mono", "|")
    Local $aFlags = StringSplit("No|Yes", "|")

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

    If _FileReadAtOffsetHEX ($file, 1, 3) = "494433" Then; ID3v2 tag found
    $offset = BitShift(Dec(_FileReadAtOffsetHEX ($file, 7, 4)), 1); End of ID3v2 tag
    Endif

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

    For $ic = $offset to 2048 + $offset
    $marker = _FileReadAtOffsetHEX ($file, $ic, 2)
    $marker = StringLeft($marker, 3)
    If StringInStr("FFF,FFE", $marker) Then; Assume that is frame start
    $frame = _FileReadAtOffsetHEX ($file, $ic, 4)
    If _FileReadAtOffsetHEX ($file, $ic+36, 4) = "58696E67" Then $isVBR = 1; This is a right way?..
    Exitloop
    Endif
    Next

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

    If $frame = "" Then
    SetError(1); Frame not found (not mp3 data?)
    Return ("")
    Endif

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

    Local $head = _HexToBin($frame)
    Local $nVer = _GetRBits($head, 19, 2)
    Local $nLay = _GetRBits($head, 17, 2)

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

    Select
    Case $nVer = 3
    $sFrequency = "44100|48000|32000|Undefined"
    Case $nVer = 2
    $sFrequency = "22050|24000|16000|Undefined"
    Case $nVer = 0
    $sFrequency = "11025|12000|8000|Undefined"
    EndSelect
    Local $aFrequency = StringSplit($sFrequency, "|")

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

    If $isVBR Then
    $data[2] = "Variable"
    Else
    Select
    Case $nVer = 3 and $nLay = 3
    $sBitrate = "Free|32|64|96|128|160|192|224|256|288|320|352|384|416|448|Undefined"
    Case $nVer = 3 and $nLay = 2
    $sBitrate = "Free|32|48|56|64|80|96|112|128|160|192|224|256|320|384|Undefined"
    Case $nVer = 3 and $nLay = 1
    $sBitrate = "Free|32|40|48|56|64|80|96|112|128|160|192|224|256|320|Undefined"
    Case $nVer = 2 and $nLay = 3
    $sBitrate = "Free|32|48|56|64|80|96|112|128|144|160|176|192|224|256|Undefined"
    Case ($nVer = 2 and $nLay = 2) or ($nVer = 2 and $nLay = 1)
    $sBitrate = "Free|8|16|24|32|40|48|56|64|80|96|112|128|144|160|Undefined"
    EndSelect
    Local $aBitrate = StringSplit($sBitrate, "|")
    $data[2] = _GetData($aBitrate, _GetRBits($head, 12, 4))
    Endif

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

    $data[0] = _GetData($aVersion, $nVer)
    $data[1] = _GetData($aLayer, $nLay)
    $data[3] = _GetData($aFrequency, _GetRBits($head, 10, 2))
    $data[4] = _GetData($aChanMode, _GetRBits($head, 6, 2))
    $data[5] = _GetData($aFlags, not _GetRBits($head, 16, 1)); CRC
    $data[6] = _GetData($aFlags, _GetRBits($head, 3, 1)); Private
    $data[7] = _GetData($aFlags, _GetRBits($head, 2, 1)); Original
    Return($data)
    EndFunc

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

    Func _GetRBits($str, $pos, $size)
    Local $ic, $res = 0, $bStr = StringMid($str, 33 - $pos - $size, $size)
    For $ic = 0 to $size-1
    If StringMid($bStr, $size-$ic, 1) == "1" Then $res = $res + 2^$ic
    Next
    Return ($res)
    EndFunc

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

    Func _GetData(ByRef $array, $val)
    If $val > UBound($array)-1 Then Return("Undefined")
    Return ($array[$val+1])
    EndFunc

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

    Func _HexToBin($str)
    Local $res=""
    While StringLen($str) > 0
    $val = Dec(StringLeft($str, 1))
    $str = StringTrimLeft($str, 1)
    For $i = 3 to 0 Step -1
    $pw = 2^$i
    If $val - $pw < 0 Then
    $res = $res & "0"
    Else
    $res = $res & "1"
    $val = $val - $pw
    Endif
    Next
    Wend
    Return ($res)
    EndFunc

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

    Func _FileReadAtOffsetHEX ($file, $offset, $bytes)
    Local $tfile = FileOpen($file, 0)
    Local $tstr = ""
    FileRead($tfile, $offset-1)
    For $i = $offset To $offset + $bytes - 1
    $tstr = $tstr & Hex(Asc(FileRead($tfile, 1)), 2)
    Next
    FileClose($tfile)
    Return ($tstr)
    Endfunc

    [/autoit]


    Leider gibt es scheinbar auch viele .mp3's mit variabler Bitrate.
    Wäre mal interessant wie winamp das macht, allerdings dauert es dort ja auch etwas um mehrere Dateien hinzuzufügen.

    Einmal editiert, zuletzt von nuts (1. Oktober 2009 um 13:55)

    • Offizieller Beitrag

    Sehr schön dein neuer Player. Besonders gefällt mir das Rekursive einlesen der Unterverzeichnisse. :thumbup::thumbup:
    Ich hätte da noch ein Erweiteungs/Verbesserungsvorschlag. Wenn man eine Gruppe von MPS´s selektiert und dann auf Öffnen mit Starplayer klickt werden mehrer Instanzen geöffnet und in jeder läuft dann ein MP3 File. Kannst du das abändern?

    Edit: Noch ein Verbesserungvorschlag: Wenn man mit den Up und Down Tasten ein Lied verschieben will wäre ein Keydelay sinnvoll. Damit meine ich, bleibst du auf den Button wird nach gewissen Zeitabständen immer um eine Stelle Auf- oder Abwärts verschoben. Es ist ziemlich nerfig bei 200 Titeln 199 mal die Up Taste zu drücken um den letzte Titel an die Ertse Stelle zu bekommen :wacko:

  • Tolles Programm :thumbup:
    Klappt super, schönes Design :) hör grad en neues Album damit :D
    aber wie hast du es gemacht, dass ein Klick auf die Progressbar die Song-Position dahin verschiebt?
    Bin auch grad an nem AudioPlayer (mal wieder) und könnte diese Funktion gut gebrauchen :D und in deinem Quelltext find ich nichts.
    Ich wäre dir sehr dankbar wenn du den Code postest/ mir die Zeilen im Script sagst :)
    Danke :D

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
  • @ Raupi, du hast meine Frage vorweg genommen :D
    Ich wollte die Nächsten Stunden einen Thread aufmachen wo ich genau das fragen wollte :D

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Ich kann den Fehler gerade nicht nachvollziehen. Allerdings wird bei mir in dem Fall auch nur die erste selektierte Datei an Starplayer übergeben (Bug in XP?).
    Vermutlich ist das aber auch schwer zu beheben, denn wenn die alle "gleichzeitig" gestartet werden, sind die Scripte wahrscheinlich schon über die Abfrage (WinExists) hinaus, bevor die Fenster erstellt werden.
    Vielleicht sollte ich das mit ProcessExists machen...aber dafür brauche ich die PID. Gibt's eine Funktion vom Prozessnamen zur PID? Ach...ProcessList könnte vielleicht helfen...muss ich mal testen.

    Aber einen kleinen Bug habe ich noch in die neue Version eingebaut:
    In Zeile 432 muss statt:

    [autoit]

    $iTimerDuration = -2

    [/autoit]


    diese Zeile stehen

    [autoit]

    $iTimerDuration = -1

    [/autoit]


    Sonst wird die Laufzeitanzeige beim nächsten Titel nicht aktualisiert.

    Edit:

    Zitat

    aber wie hast du es gemacht, dass ein Klick auf die Progressbar die Song-Position dahin verschiebt?


    Ich habe Dir mal ein Beispielscript geschrieben:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    $hGui = GUICreate('Test', 400, 300)
    $hProgress = GUICtrlCreateProgress(10, 10, 350, 20)
    $hLabel = GUICtrlCreateLabel('0%', 365, 12, 35, 20)
    GUISetState()
    $aPos = ControlGetPos($hGui, '', $hProgress)

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_PRIMARYUP
    $aInfo = GUIGetCursorInfo($hGui)
    If $aInfo[4] = $hProgress Then
    $iPercent = 100 / $aPos[2] * ($aInfo[0] - $aPos[0])
    GUICtrlSetData($hProgress, $iPercent)
    GUICtrlSetData($hLabel, Int($iPercent) & '%')
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Ich hab da eine Idee:
    Immer wenn du den Starplayer über eine MP3 ,also mit parameter, startes überprüft er ob es schon einen Prozess mit dem Namen von Starplayer gibt, wenn ja sendest du dem eine Nachricht, wo der Pfad der neuen Datei drin Steht. das überprfüen ist ja ganz einfach

    [autoit]


    $PID = ProcessExists("notepad.exe") ; Gibt die PID des Prozesses zurück oder 0, falls der Prozess nicht gefunden wurde.

    [/autoit]

    doch wie sendest du vom einen Starplyer zum anderen eine Nachricht? Naja, das könnte man doch einfach über ein Verstecktes Label machen, was du dann mit ControlsetText bearbeitest und der Starplayer, der schon leuft, guck ob das Label verändert wurde. Um das Label zu verändern brauchst du ja den Handle und so, das kannst du ja einfach vom Starplayer in eine Datei schreiben lasse und vom anderen auslesen lassen.

    Hast du das kapiert?
    Ist nen bischen scheiße formuliert, wenn du es nicht kapiert hast schreib ich nochmal ausformuliert vieleicht mit beispiel

    EDIT:
    Hab noch 2 Fehler, bei mir geht die Zeitanzeige nicht, also wie lange ich schon einen Titel abspiele und das Registrieren auf MP3 geht auch nicht, hab WIN7

    mfg. Jam00

    2 Mal editiert, zuletzt von Jam00 (3. Oktober 2009 um 23:55)