Jump to content

menuitems bei PIP auslesen


Tüftler

Recommended Posts

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? :D

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 by Tüftler
Link to comment

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.

Link to comment

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 by Tüftler
Link to comment

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?

Link to comment

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 by Tüftler
Link to comment

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 by Tüftler
Link to comment
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.

Link to comment
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. ;)

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...