Ich möchte, wenn ein Menü den Timeout erreicht, daß dann der aktuelle Button vom Zustand "highlighted" in den Zustand "activated" wechselt, so als ob der Nutzer draufgeklickt hat. Anschließend möchte ich einen neuen Timeout setzen, der dann z.B. den Film startet. Es soll also beim Temiout so ablaufen, als ob der Nutzer den highligted Button gedrückt hat - natürlich ohne echte Nutzerinteraktion. Leider bekomme ich nicht heraus, wie ich das erreichen kann. Mir schwebt vor, das ganze mit VM Kommandos zu bewerkstelligen. Ich kenne "SetHL Btn" und würde mir ein "SetActivate Btn" wünschen. Kann ich das mit VM Kommandos erreichen?
TIA Uwe
Antwort von Birger Jesch:
"Uwe Kotyczka" schrieb im Newsbeitrag VM Kommando "Aktiviere Button" gibt es so was?### > Hallo! > > Ich möchte, wenn ein Menü den Timeout erreicht, daß dann > der aktuelle Button vom Zustand "highlighted" in den Zustand > "activated" wechselt, so als ob der Nutzer draufgeklickt hat. > Anschließend möchte ich einen neuen Timeout setzen, der > dann z.B. den Film startet. Es soll also beim Temiout so > ablaufen, als ob der Nutzer den highligted Button gedrückt > hat - natürlich ohne echte Nutzerinteraktion. > Leider bekomme ich nicht heraus, wie ich das erreichen kann. > Mir schwebt vor, das ganze mit VM Kommandos zu > bewerkstelligen. Ich kenne "SetHL Btn" und würde mir ein > "SetActivate Btn" wünschen. > Kann ich das mit VM Kommandos erreichen? > > TIA Uwe
Grundsätzlich ja. Leider schreibst Du nichts über das verwendete DVD-Authoringprogramm. Mit DVDlab Pro z.B. lassen sich Kommando- sequenzen in der Post-Command-Area unterbringen, die Dein gewünschtes Verhalten realisieren. Mit Scenarist und Maestro dürfte das ebenfalls möglich sein. Gängige "Klickibunties" (;Ulead Powertools, DVDit usw.) werden nicht gehen, da hier ein Herabsteigen bis auf VM-Ebene nicht geht.
In DVDlab Pro würde ich das wie folgt realisieren:
Out des Menüs mit einer Caselist verbinden (;Case-Register ist GPRM0), Timeout im Menüdesigner festlegen. Post-Commands des Menüs:
GPRM0%SPRM8 ## aktuelles Highlite nach GPRM0 GPRM0/24 ## Errechnen der Buttonnummer
In der Caselist wird je nach Buttonnummer (;GPRM0) zum gewünschten Ziel verzweigt. Soll der Button "aufleuchten" (;also das Drücken simuliert werden), muss nach der Caselist für jeden Button ein "Dummymenü" dazwischen geschalten werden (;ohne aktive Buttons, dafür aber mit geänderter Farbe des "aktiven" Buttons und Timeout v. ca. 1 sec), welche letztendlich per Outlink auf das gewünschte Movie (;oder was auch immer) verzweigen. Diese Dummymenüs kannman einfach per "Duplicate Menu" oder "Clone Menu" erzeugen.
Gruss Birger
Antwort von Uwe Kotyczka:
Hallo Birger, vielen Dank für Deine Antwort.
Ich hatte meine Frage schonmal gepostet (;in einer engl.sprachigen Gruppe) war dort aber nicht weitergekommen. Diese Frage war schon mit dem Hintergrund der dortigen Diskussion gestellt. Die Authoring-Software habe ich vergessen zu erwähnen. Ich arbeite mit DVDlab Pro.
Auf eine ähnliche Lösung wie Du vorschlägst bin ich auch schon gekommen. Nämlich ein Dummy-Menu mit einem sehr kurzen Timeout zu zeigen. Allerdings habe ich zum eigentlichen Starten des Films nicht das Post-Command-Area genutzt, sondern habe bei dem Dummy-Menu unter Properties den Reiter "PBC" gewählt, dort einen Timeout von 0 Sekunden (;a/v) gewählt, und (;in Abhängigkeit des vorher highlighted Buttons) dann bei "Force Activate Btn" die jeweilige Button-Nummer eingegeben. Es funktioniert auch so leidlich. "Force Activate Btn" macht eigentlich genau das, was ich suche. Es simuliert einen Button-Press durch den Nutzer perfekt. Leider versteckt die DVDlab Pro GUI vollständig, was da an Kommandos abläuft. Mit diesem Workaround gibt es zwei Probleme: Zum einen gibt es auf allen Software-Playern, die ich habe (;WinDVD, PowerDVD, Nero ShowTime), beim Umschalten vom eigentlichen zum Dummy-Menü ein kurzes Flackern. Sehr unschön. Und zum anderen wird bei einem timeout von 0 die entsprechende Callback-Funktion nicht wirklich immer aufgerufen. Manchmal klappt der Timout einfach nicht. Bei Deinem Vorschlag (;1 Sekunde/andere Farbtabelle) könnte das evtl. besser klappen. Aber alles in allem bleibt es ein ziemlicher Workaround. Insbesondere das kurze Flackern wird bleiben. Und es geht ja mit "Force Activate Btn" offensichtlich auch ohne Flackern. Wonach ich wirklich suche ist, was dieses "Force Activate Btn" eigentlich tut und wie man von der fixierten Button-Nummer zu einer variablen, zur Laufzeit zu bestimmenden kommen kann. Da ich das in DVDlab Pro nicht rausbekommen habe und auch nicht in DVDRemake Pro (;das zeigt mir auch keine Callbacks für die Timeouts, oder jedenfalls kann ich sie nicht finden) habe ich mit DVDlab Pro mehrere kleine Projekte (;1 Filmchen m it 2 Kapiteln, 1 Menü mit 2 Buttons) kompiliert und jeweils die Werte für Timeout und "Force Activate Btn" variiert. Anschließend habe ich die .vob/.ifo Dateien hex verglichen. Und bin zu erstaunlichen Ergebnissen gekommen. Die ganzen Pre und Post VM Kommandos habe ich ja hex in den .ifo Dateien gefunden. Also habe ich Unterschiede in den .ifo Dateien erwartet. Wenn ich aber n ur den Wert "Force Activate Btn" verändere, dann ist nur VTS 01 0.VOB binär anders. Und zwar taucht bei einem Timeout von drei Sekunden siebenmal die Hex-Folge 00 00 02 12 30 88 80 45 bzw. siebenmal die Hex-Folge 00 00 01 12 30 88 80 45 (;Button 2 bzw. 1) auf. Die Anzahl des Auftauchens der anderen Hex-Folge scheint mit 2n 1 zu gehen, wobei n der Timeout in Sekunden ist. Variiert man den Timeout und läßt die Button-Nummer unverändert, dann unterscheiden sich sowohl VTS 01 0.IFO als auch VTS 01 0.VOB, und zwar erheblich. An der Stelle habe ich es dann aufgegeben, aus den reinen Hex-Codes des kompilierten Projekts Rückschlüsse ziehen zu wollen.
Hast Du eine Ahnung, was sich hinter dem "Force Activate Btn" Feature von DVDlab Pro verbirgt? Gibt es vielleicht doch einen eleganten Workaround für diese scheinbar so leichte Aufgabe?
Ich würde mich freuen, wieder von dir zu hören.
uwe.kotyczka @ web.de
> Grundsätzlich ja. Leider schreibst Du nichts über das verwendete > DVD-Authoringprogramm. Mit DVDlab Pro z.B. lassen sich Kommando- > sequenzen in der Post-Command-Area unterbringen, die Dein > gewünschtes Verhalten realisieren. Mit Scenarist und Maestro > dürfte das ebenfalls möglich sein. Gängige "Klickibunties" (;Ulead > Powertools, DVDit usw.) werden nicht gehen, da hier ein Herabsteigen > bis auf VM-Ebene nicht geht. > > In DVDlab Pro würde ich das wie folgt realisieren: > > Out des Menüs mit einer Caselist verbinden (;Case-Register ist GPRM0), > Timeout im Menüdesigner festlegen. Post-Commands des Menüs: > > GPRM0SPRM8 ## aktuelles Highlite nach GPRM0 > GPRM0/=1024 ## Errechnen der Buttonnummer > > In der Caselist wird je nach Buttonnummer (;GPRM0) zum gewünschten > Ziel verzweigt. Soll der Button "aufleuchten" (;also das Drücken simulie= rt > werden), muss nach der Caselist für jeden Button ein "Dummymenü" > dazwischen geschalten werden (;ohne aktive Buttons, dafür aber mit > geänderter Farbe des "aktiven" Buttons und Timeout v. ca. 1 sec), welche > letztendlich per Outlink auf das gewünschte Movie (;oder was auch immer) > verzweigen. Diese Dummymenüs kann man einfach per "Duplicate Menu" > oder "Clone Menu" erzeugen.
> > Leider bekomme ich nicht heraus, wie ich das erreichen kann. > > Mir schwebt vor, das ganze mit VM Kommandos zu > > bewerkstelligen. Ich kenne "SetHL Btn" und würde mir ein > > "SetActivate Btn" wünschen. > > Kann ich das mit VM Kommandos erreichen?
Antwort von Uwe Kotyczka:
Nachtrag:
Nach langem Probieren und Vergleichen der kompilierten vob und ifo Dateien habe ich herausgefunden, wie es geht.
Wenn man bei DVDlab Pro unter "Force Activate Btn" 63 eingibt, dann wird nach Erreichen des Timeouts nicht etwa der Button 63 automatisch gestartet [so viele Buttons gibt es ja meist sowieso nicht ;-)) ], sondern der aktuell "gehighlightete". Und das was es ja genau, was ich erreichen wollte. Ich habe zwar keine Ahnung, warum das so ist, bin aber trotzdem froh, daß es geht und daß ich es nun weiß.