nuts Posted January 9, 2009 Share Posted January 9, 2009 (edited) hey, ich hab folgendes problem am htpc: die musikwiedergabe mit dem DVBViewer gefällt mir überhaupt nicht, außerdem fehlen mir die schönen winamp visualisierungen. auf der anderen seite finde ich es in winamp vom handling her ziemlich schwierig vom sofa aus eine playliste zu erstellen, mit dem DVBViewer funktionierts super - einfach übers osd durch die verzeichnisse browsen und die titel oder ganze ordner hinzufügen. ich hab mir jetzt folgende lösung gebastelt, die ich selbst noch ziemlich suboptimal finde. 1. schritt das command.vbs im DVBViewer verändern, dazu müssen erstmal eigene input befehle für die 4 osd farbtasten angelegt werden. ist hier gut von Tjod beschrieben: http://wiki.DVBViewer.info/index.php/Command.vbs sub main(Command) Select Case Command 'OSD-Rot (geändert) Case 30500 if osd.isvisible Then If windowmanager.isoverlay Then 'Wird Grade ein Dialogfenster angezeigt Sende folgenden Befehl: SendCommand(74) ElseIf windowmanager.activeWindowID = 5 Then 'Wird Grade das Musik-Fenster angezeigt dann sende folgenden Befehl: SendCommand(74) SendCommand(69) Else 'Bei allen anderen OSD Fenster folgenden Befehl Senden: SendCommand(74) End If Else 'OSD-Show Video SendCommand(8204) End if case 30501 SendCommand(75) 'OSD-Gelb (geändert) Case 30502 if osd.isVisible Then If windowmanager.isoverlay Then 'Wird Grade ein Dialogfenster angezeigt Sende folgenden Befehl: SendCommand(76) ElseIf windowmanager.activeWindowID = 2004 Then 'Wird Grade das Playlist-Fenster angezeigt dann sende folgenden Befehl: SendCommand(76) SendCommand(16383) SendCommand(16382) OSD.ExecNewProcess "C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\DVBViewer\dvbviewermusik.exe", "", False, False Else 'Bei allen anderen OSD Fenster folgenden Befehl Senden: SendCommand(76) End if Else 'OSD-Show FavChannels SendCommand(8200) End if case 30503 SendCommand(77) End Select end sub also wenn das osd fenster musik offen ist wird auf den befehl "osd rot" sowohl der ausgewählte titel der playliste hinzugefügt und gleichzeitig die playliste im DVBViewer gestopt (um zu verhindern, dass gleich die wiedergabe startet im osd fenster "playlist wird auf den befehl "osd gelb" die erstellte playliste gespeichert, der DVBViewer minimiert und der graph gestoppt (ka obs nötig ist, wollte nur das sich winamp und DVBViewer nicht in die haare kriegen) anschließend wird ein skript von mir ausgeführt - hier mal der quellcode (ich habs mal in grün auskommentiert): #include <GUIConstants.au3> if FileExists(@ScriptDir & "\konfig.ini") = 0 Then Opt("GUICoordMode", 1) $GUI = GUICreate("DVBViewer Playlist-Verzeichnis angeben",500, 100) $Input =GUICtrlCreateInput("", 10, 10, 400) $open = GUICtrlCreateButton("./.", 420, 7) $speichern = GUICtrlCreateButton("Speichern", 210, 40,80, 40) GUISetState() while 1 $msg = GUIGetMsg() Switch $msg case $GUI_EVENT_Close Exit case $speichern Iniwrite(@ScriptDir & "\konfig.ini", "Playlist", "1",GUICtrlRead($Input)) GUIDelete($GUI) ExitLoop Case $open $playlist = FileOpenDialog("", "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\CMUV\DVBViewer", "Playlist (*.m3u)") GUICtrlSetData($Input, $playlist) Endswitch wend endif ;wenn keine konfig.ini vorhanden ist wird eine kleine gui erzeugt um diese zu erstellen und dort den ort wo der DVBViewer seine playliste abspeichert auszuwählen ; eigentlich eher unwichtig für das ganze, könnte man auch weglassen und über eine von hand erstellte .ini lösen ShellExecuteWait(IniRead(@ScriptDir & "\konfig.ini","Playlist", "1", "")) ; hier wird die vom DVBViewer erstellen playlist mit dem von windows dafür vorgesehenen prog. abgespielt (bei mir winamp, klar) - das skript pausiert bis winamp wieder geschlossen wird $DVBViewer = ObjGet ("", "DVBViewerServer.DVBViewer") ;zur kommunikation mit dem DVBViewer If $DVBViewer = 0 Then MsgBox (1, "", "Keine Verbindung zum DVBViewer möglich") ;wenn com server nicht erreichbar ist wird das skript beendet (sollte normal nicht vorkommen) Exit Else $DVBViewer.SendCommand (16397) ; der DVBViewer wird in den zustand vor ausführen des skripts versetzt $DVBViewer.SendCommand (8203) ;das osd musik fenster wird angezeigt (könnte man bei interesse noch über einen eintrag in der .ini anpassbar machen) WinActivate("DVBViewer") ;der DVBViewer erhält den fokus EndIf exit hier mal das .exe file zum ausprobieren. http://rapidshare.com/files/181458366/dvbv...rmusik.exe.html (ich hoffe es läuft bei euch, bin nicht so der profi programmierer) soweit funktioniert das schon, nur wirklich schön ists nicht. z.b. muss ich zum nachträglichen hinzufügen eines titels winamp schließen, im DVBViewer den titel hinzufügen und das ganze von neuem starten. des weiteren würde ich gerne winamp über den DVBViewer kontrollieren - ist es möglich über den DVBViewer von mir definierte com events zu senden? sonst bleibt nur der umweg über eventghost/girder um winamp auch mit der fernbedienung zu steuern. am allerbesten wäre es die winamp kontrolle ganz ins osd vom DVBViewer einzubinden und winamp nur im hindergrund laufen zu lassen - nur müsste man dann vom winamp abfangen welches lied gerade läuft und diese infos ans osd fenster playlist übergeben (und ich hab keine ahnung wie das gehen soll). meine hoffnung ist, dass sich ein erfahrener plugin entwickler / programmierer mit einklinkt und zumindest mal ein besseres konzept vorstellt. ich helfe auch gern mit, nur mein können ist sehr beschränkt - ich kann nur einfaches autoit skript zeugs. bessere einfache lösungen (z.b. eine übersetzung des autoit code direkt in .vbs) wären auch willkommen. gruß nuts Edited January 9, 2009 by nuts Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.