Command.vbs

Aus DVBViewer
Wechseln zu: Navigation, Suche

Das Command.vbs Script gehört zu den DVBViewer VBScripte und muss sich im DVBViewer Verzeichnis im Unterordner Scripts befinden.

Es wird über Inputbefehle mit einer ActionID von 20480 oder größer aufgerufen.

Ruft ein Tastendruck (Tastatur oder Fernbedienung) oder der -x Kommandoparameter einen solchen Inputbefehl auf, startet das Command.vbs wobei der main(ActionID)-Funktion die ActionID als Integer übergeben wird.


Einsatzmöglichkeiten[Bearbeiten]

Grob gesagt kann man über die Datei die Gesamte Steuerung des DVBViewer umgestalten.

Hier mal drei Beisiele:

Externe Programme starten[Bearbeiten]

Das Command.vbs kann dazu verwendet werden, externe Programme oder Scripte mit der Fernbedienung aufzurufen.

Command.vbs:

sub main(ActionID)
   Select Case ActionID 

       Case 20480
       'Bei ActionID 20480
           OSD.ExecNewProcess "C:\WINDOWS\notepad.exe", "", False, True
           'Starte das externe Programm Notepad,
           'übergibt keine Parameter an Notepad,
           'warte nicht bis Notepad fertig ist,
           'starte Notepad mit niedriger Windows Priorität

       Case 20481
       'Bei ActionID 20481
           OSD.ExecNewProcess "C:\Program Files\DVBviewer\TransEdit.exe", "", False, False
           'Starte das externe Programm TransEdit,
           'übergibt keine Parameter an TransEdit,
           'warte nicht bis TransEdit fertig ist,
           'starte TransEdit nicht mit niedriger Windows Priorität

       Case Else
       'Bei allen anderen ActionIDs
           osd.showInfoinTVpic "No action in the Command.vbs for the ActionID " & ActionID,1000
           'Zeige die Text Information No action in the Command.vbs for the ActionID (ActionID)
           'für 1000 Millisekunden im DVBViewer an.
   End Select
end sub

OSD Seiten direkt aufrufen für die es keine ActionID gibt[Bearbeiten]

Command.vbs:

sub main(ActionID)
   Select Case ActionID 

       Case 60500
       'Bei ActionID 60500
           WindowManager.ShowWindow(9)
           'Ruft das "Brightness Window" auf, die OSD Seite wo Helligkeit, 
           'Kontraste und Farbe eingestellt werden können.

       Case 60501
       'Bei ActionID 60501
           WindowManager.ShowWindow(19)
           'Ruft das "EQsettings Window" auf, das OSD Fenster vom Equalizer.
       Case Else
       'Bei allen anderen ActionIDs
           osd.showInfoinTVpic "No action in the Command.vbs for the ActionID " & ActionID,1000
           'Zeige die Text Information No action in the Command.vbs for the ActionID (ActionID)
           'für 1000 Millisekunden im DVBViewer an.
   End Select
end sub


Der Wert für die OSD Seite (ID) WindowManager.ShowWindow(x) kann der windowdef.xml im Konfigurationsverzeichnis entnommen werden.

Mehrfach-Belegung von Tasten[Bearbeiten]

Das Command.vbs kann ebenso dazu verwendet werden, die Funktion der Tasten in Abhängigkeit der eingeblendeten OSD-Fenster, Timeshift oder Dateiwiedergabe anzupassen.


Hier ein Beispiel, wo die OSD-Farbtasten in Abhängigkeit von OSD-Seiten und die Pfeiltasten in Abhängigkeit von Timeshift und Dateiwiedergabe angepasst werden. Dazu müssen die entsprechenden Tasten auf Inputbefehle mit folgenden ActionIDs anlernent werden:

OSD-Rot = ActionID 30500

OSD-Grün = ActionID 30501

OSD-Gelb = ActionID 30502

OSD-Blau = ActionID 30503

OSD-Links = ActionID 30504

OSD-Rechts = ActionID 30505

OSD-aufwärts = ActionID 30506

OSD-abwärts = ActionID 30507


Command.vbs:

sub main(ActionID)
   Select Case ActionID

       Case 30500
       'bei OSD-Rot
           If osd.isVisible Then
           'Ist das OSD sichtbar dann mache folgendes:

               If windowmanager.isoverlay Then
               'Wird gerade ein Dialogfenster angezeigt sende folgenden Befehl:
                   SendCommand(74)
                   'OSD-Rot
               ElseIf windowmanager.activeWindowID = 500 Then
               'Wird gerade das miniEPG angezeigt dann sende folgenden Befehl:
                   SendCommand(34)
                   'Aufnehmen
               ElseIf windowmanager.activeWindowID = 0 Then
               'Wird gerade das OSD Menü angezeigt dann sende folgenden Befehl:
               SendCommand(8201)
               'Zeige OSD-Timeline
               Else
               'Bei allen anderen OSD Fenster folgenden Befehl senden:
                   SendCommand(74)
                   'OSD-Rot
               End If

           Else
               'Wenn kein OSD Fenster sichtbar ist sende folgenden Befehl:
               SendCommand(8201)
               'Zeige OSD-Timeline
           End If 

       Case 30501
       'bei OSD-Grün
           If osd.isVisible Then
               SendCommand(75)
               'OSD-Grün
           Else
               SendCommand(2010)
               'Zeige die Uhr
           End If 

       Case 30502
       'bei OSD-Gelb
           If osd.isVisible Then
               SendCommand(76)
               'OSD-Gelb
           Else
               SendCommand(8199)
               'Zeige Senderliste
           End If 

       Case 30503
       'bei OSD-Blau
           If osd.isVisible Then
               SendCommand(77)
               'OSD-Blau
           Else
               SendCommand(77)
           End If 

       Case 30504
       'bei OSD-Links
           If osd.isVisible Then
           'Ist das OSD sichtbar dann mache folgendes:
               SendCommand(2000)
               'OSD-Links
           ElseIf isMediaplayback Then
           'Wenn kein OSD Fenster sichtbar ist und eine Datei wiedergegeben wird mache folgendes:
               SendCommand(112)
               'voriges
           Else
           'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird mache folgendes:
               SendCommand(2000)
           End If 
           
       Case 30505
       'bei OSD-Rechts
           If osd.isVisible Then
           'Ist das OSD sichtbar dann mache folgendes:
               SendCommand(2100)
               'OSD-Rechts
           ElseIf isMediaplayback Then
           'Wenn kein OSD Fenster sichtbar ist und eine Datei wiedergegeben wird mache folgendes:
               SendCommand(113)
               'nächstes
           Else
           'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird mache folgendes:
               SendCommand(2100)
           End If 

       Case 30506
       'bei OSD-aufwärts
           If osd.isVisible Then
           'Ist das OSD sichtbar dann mache folgendes:
               SendCommand(78)
               'OSD-aufwärts
           ElseIf isMediaplayback Then
           'Wenn kein OSD Fenster sichtbar ist und eine Datei wiedergegeben wird mache folgendes:
               SendCommand(78)
               'OSD-aufwärts
           ElseIf istimeshift Then
           'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird und Timeshift aktiv ist mache folgendes:
               SendCommand(9)
               'Sender +
           Else
           'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird und kein Timeshift aktiv ist mache folgendes:
               SendCommand(78)
           End If 
           
       Case 30507
       'bei OSD-abwärts
           If osd.isVisible Then
           'Ist das OSD sichtbar dann mache folgendes:
               SendCommand(79)
               'OSD-abwärts
           ElseIf isMediaplayback Then
           'Wenn kein OSD Fenster sichtbar ist und eine Datei wiedergegeben wird mache folgendes:
               SendCommand(79)
               'OSD-abwärts
           ElseIf istimeshift Then
           'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird und Timshift aktiv ist mache folgendes:
               SendCommand(8)
               'Sender -
           Else
           'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird und kein Timshift aktiv ist mache folgendes:
               SendCommand(79)
           End If 
           
       Case Else
           osd.showInfoinTVpic "No action in the Command.vbs for the ActionID " & ActionID,1000
           'Zeige die Text Information No action in the Command.vbs for the ActionID (ActionID)
           'für 1000 Millisekunden im DVBViewer an.
   End Select
end sub


Die DVBViewer eigenen ActionIDs können in der Datei actions.ini im DVBViewer Verzeichnis gefunden werden. Und die activeWindowID kann einfach mit dem DVBViewer Spy (Mitgliederbereich > Sources) bei OSD Window Event abgelesen werden, wenn die entsprechende OSD Seite geöffnet ist.