Tüftler Posted June 24, 2009 Share Posted June 24, 2009 (edited) Ich versuche gerade über menuitems, in VBS, PIP (Bild in Bild) zu erkennen. Folgenden Code habe ich dafür benutzt: SendCommand(77) i = Datamanager.Value("#menuitems") SendCommand(84) If i = "1 Verschieben Modus" or "1 Normale Belegung" Then osd.showInfoinTVpic "PIP ist Aktiv!",3000 End If Das Problem ist aber dass in meiner Variable nichts hinterlegt wird, obwohl der Wert in "menuitems" laut DVBSpy, zu dieser Zeit der Einblendung, gefüllt ist. Wenn ich das OSD-Feld schließe ist der Wert natürlich sofort wieder leer. Warum wird also dieser Wert nicht in die Variable geschrieben? Wenn ich andere Sachen darüber abfrage geht dies aber. Geprüft habe ich es über eine MsgBox. Im Anschluss will ich dann prüfen, wenn PIP aktiv ist, auf den zur Zeit angewendeten Steuerungsmodus (Verschieben- oder Normaler Modus). Das habe ich wie folgt vor: Prüfe die Variable auf Buchstabenfolge "orm" (ist in allen Sprachversionen vorhanden, bis auf Persian & Russian), wenn ja entspräche das dem Verschieben Modus, welchen ich dann umstellen würde um die Farbsteuerung bei PIP nutzen zu können. Aber leider hakt es ja schon bei der Variablenübergabe. Hat da jemand eine Idee? Edited June 24, 2009 by Tüftler Quote Link to comment
nuts Posted June 24, 2009 Share Posted June 24, 2009 bin mir nicht sicher ob ich es 100% verstanden habe, aber du rufst das skript aus und definierst eine variable. nach dem showinfointvpic wird das skript beendet. beim nächsten aufruf des skripts ist der wert natürlich wieder "weg". eine möglichkeit (imho die einzige) den wert zu erhalten wäre das auslagert in eine .ini, .xml, .txt (oder sonst ein dateiformat) oder ein reg-schlüssel. Quote Link to comment
Tüftler Posted June 24, 2009 Author Share Posted June 24, 2009 (edited) Ja, da könnte der Fehler liegen. Man kann den Wert aber auch in eine selbst festgelegte DataManger-Variable schreiben, die dann immer noch vorhanden ist. Bspw. Datamanager.Value("#PIP Erkennung") = i Muss ich heute Abend mal probieren. Fraglich ist trotzdem warum das bei anderen Sachen geht, glaube es war "#TV.pic"? Egal, ich probiere es erst ein mal. Danke jedenfalls für den Denkanstoß. Edited June 24, 2009 by Tüftler Quote Link to comment
nuts Posted June 24, 2009 Share Posted June 24, 2009 achso interessant - wäre ja im prinzip wie das auslagern in eine .ini (oder ähnliches). von der systematik her müsste es so ablaufen (hab die : IDataManager funktionen jetzt noch nicht ausprobiert): skript start -> wert aus dem datamanager auslesen / wert in den datamanger schreiben -> auf den ausgelesenen wert reagieren -> skript ende wenn wir mal davon ausgehen, dass Datamanager.Value automatisch zwischen get/set value unterscheidet und wirklich "1 Verschieben Modus" oder "1 Normale Belegung" in den Datamanager geladen wurde, müsste dein skript eigentlich funktionieren klappt vielleicht der zweite aufruf? wenn schon ein wert hinterlegt wurde? Quote Link to comment
Tüftler Posted June 24, 2009 Author Share Posted June 24, 2009 (edited) Also so komme ich in VBS definitv nicht weiter. Kann es sein das man auf das gerade Aktive "menuitems" keinen Zugriff hat? Ich bekomme alle anderen Tags ausgelesen, auch wenn das F8-Feld (OSD Blau) bei PIP sichtbar ist, nur nicht das "menuitems" Noch jemand Vorschläge? Edited June 24, 2009 by Tüftler Quote Link to comment
Tüftler Posted June 24, 2009 Author Share Posted June 24, 2009 (edited) Werde das Thema wohl erst nach dem Urlaub weiter verfolgen. Habe das bisher direkt aus der command.vbs probiert aber evtl. geht es dort nicht. Daher nehme ich ein externes Script zur Abfrage, mal sehen ob es dann geht. "OffTopic" @Lars_MQ Was sollte man denn auf der Kieler Woche dieses Jahr unbedingt gesehen haben? Edited June 24, 2009 by Tüftler Quote Link to comment
dbraner Posted June 25, 2009 Share Posted June 25, 2009 Ich versuche gerade über menuitems, in VBS, PIP (Bild in Bild) zu erkennen.Folgenden Code habe ich dafür benutzt: SendCommand(77) i = Datamanager.Value("#menuitems") SendCommand(84) If i = "1 Verschieben Modus" or "1 Normale Belegung" Then osd.showInfoinTVpic "PIP ist Aktiv!",3000 End If Du machst das ja in der Command.vbs. Wenn Du hier zwei SendCommands hintereinander verwendest, werden die gequeuet und erst nach Beendigung des aktuellen Command.vbs ausgeführt (mein Verständnis). Sonst müsste ja Command.vbs reentrant sein, d.h. im Hintergrund nochmal für die beiden SendCommands aufgerufen werden. Ich glaube das Problem ist, dass Command.vbs nicht wartet, bis SendCommand(77) ausgeführt ist. Das wird eben erst nach dem Ende des aktuellen Command.vbs gemacht. Ich glaube es ist mal an der Zeit, ein kleines Programm zu schreiben (Plugin?) das außerhalb des DVBViewers läuft und dafür sorgt, solche Dinge wie Playstate, PIP ja/nein usw. in den Datamanager zu schreiben. Also Werte, die nützlich sind, aber leider im Datamanager nicht zur Verfügung stehen. Oder die Entwickler würden sich bereiterklären, diese Dinge im Datamanager aufzunehmen -> anderes Forum. Quote Link to comment
Tüftler Posted June 25, 2009 Author Share Posted June 25, 2009 Du machst das ja in der Command.vbs. Wenn Du hier zwei SendCommands hintereinander verwendest, werden die gequeuet und erst nach Beendigung des aktuellen Command.vbs ausgeführt (mein Verständnis). Sonst müsste ja Command.vbs reentrant sein, d.h. im Hintergrund nochmal für die beiden SendCommands aufgerufen werden. Ich glaube das Problem ist, dass Command.vbs nicht wartet, bis SendCommand(77) ausgeführt ist. Das wird eben erst nach dem Ende des aktuellen Command.vbs gemacht. Ich glaube es ist mal an der Zeit, ein kleines Programm zu schreiben (Plugin?) das außerhalb des DVBViewers läuft und dafür sorgt, solche Dinge wie Playstate, PIP ja/nein usw. in den Datamanager zu schreiben. Also Werte, die nützlich sind, aber leider im Datamanager nicht zur Verfügung stehen. Oder die Entwickler würden sich bereiterklären, diese Dinge im Datamanager aufzunehmen -> anderes Forum. Ja, bitte bitte ein Plugin wäre toll. Das wäre echt mein Traum. Ich habe so viele Ideen und bin wegen meiner einseitigen Programmiersprachen-Kenntnis (VBS in Anfängen) dermaßen eingeschränkt im Umsetzen dieser, dass ich vieles einfach sein lasse. Für mich wären da vornehmlich interessant: -> Pause (playstate) -> PIP -> Portal Sendererkennung (für Premiere und ähnliche mit Untergruppen/-Kanälen) -> PlayStateChange Na ja, morgen ist erstmal Urlaubsbeginn und dann sehen wir weiter. 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.