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.


Inhaltsverzeichnis

[Bearbeiten] Einsatzmöglichkeiten

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

Hier mal drei Beisiele:

[Bearbeiten] Externe Programme starten

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

Command.vbs:

  1.  sub main(ActionID)
  2.     Select Case ActionID 
  3.  
  4.         Case 20480
  5.         'Bei ActionID 20480
  6.             OSD.ExecNewProcess "C:\WINDOWS\notepad.exe", "", False, True
  7.             'Starte das externe Programm Notepad,
  8.             'übergibt keine Parameter an Notepad,
  9.             'warte nicht bis Notepad fertig ist,
  10.             'starte Notepad mit niedriger Windows Priorität
  11.  
  12.         Case 20481
  13.         'Bei ActionID 20481
  14.             OSD.ExecNewProcess "C:\Program Files\DVBviewer\TransEdit.exe", "", False, False
  15.             'Starte das externe Programm TransEdit,
  16.             'übergibt keine Parameter an TransEdit,
  17.             'warte nicht bis TransEdit fertig ist,
  18.             'starte TransEdit nicht mit niedriger Windows Priorität
  19.  
  20.         Case Else
  21.         'Bei allen anderen ActionIDs
  22.             osd.showInfoinTVpic "No action in the Command.vbs for the ActionID " & ActionID,1000
  23.             'Zeige die Text Information No action in the Command.vbs for the ActionID (ActionID)
  24.             'für 1000 Millisekunden im DVBViewer an.
  25.     End Select
  26.  end sub


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

Command.vbs:

  1.  sub main(ActionID)
  2.     Select Case ActionID 
  3.  
  4.         Case 60500
  5.         'Bei ActionID 60500
  6.             WindowManager.ShowWindow(9)
  7.             'Ruft das "Brightness Window" auf, die OSD Seite wo Helligkeit, 
  8.             'Kontraste und Farbe eingestellt werden können.
  9.  
  10.         Case 60501
  11.         'Bei ActionID 60501
  12.             WindowManager.ShowWindow(19)
  13.             'Ruft das "EQsettings Window" auf, das OSD Fenster vom Equalizer.
  14.  
  15.         Case Else
  16.         'Bei allen anderen ActionIDs
  17.             osd.showInfoinTVpic "No action in the Command.vbs for the ActionID " & ActionID,1000
  18.             'Zeige die Text Information No action in the Command.vbs for the ActionID (ActionID)
  19.             'für 1000 Millisekunden im DVBViewer an.
  20.     End Select
  21.  end sub

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

[Bearbeiten] Mehrfach-Belegung von Tasten

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:

  1.  sub main(ActionID)
  2.     Select Case ActionID
  3.  
  4.         Case 30500
  5.         'bei OSD-Rot
  6.             If osd.isVisible Then
  7.             'Ist das OSD sichtbar dann mache folgendes:
  8.  
  9.                 If windowmanager.isoverlay Then
  10.                 'Wird gerade ein Dialogfenster angezeigt sende folgenden Befehl:
  11.                     SendCommand(74)
  12.                     'OSD-Rot
  13.                 ElseIf windowmanager.activeWindowID = 500 Then
  14.                 'Wird gerade das miniEPG angezeigt dann sende folgenden Befehl:
  15.                     SendCommand(34)
  16.                     'Aufnehmen
  17.                 ElseIf windowmanager.activeWindowID = 0 Then
  18.                 'Wird gerade das OSD Menü angezeigt dann sende folgenden Befehl:
  19.                 SendCommand(8201)
  20.                 'Zeige OSD-Timeline
  21.                 Else
  22.                 'Bei allen anderen OSD Fenster folgenden Befehl senden:
  23.                     SendCommand(74)
  24.                     'OSD-Rot
  25.                 End If
  26.  
  27.             Else
  28.                 'Wenn kein OSD Fenster sichtbar ist sende folgenden Befehl:
  29.                 SendCommand(8201)
  30.                 'Zeige OSD-Timeline
  31.             End If 
  32.  
  33.         Case 30501
  34.         'bei OSD-Grün
  35.             If osd.isVisible Then
  36.                 SendCommand(75)
  37.                 'OSD-Grün
  38.             Else
  39.                 SendCommand(2010)
  40.                 'Zeige die Uhr
  41.             End If 
  42.  
  43.         Case 30502
  44.         'bei OSD-Gelb
  45.             If osd.isVisible Then
  46.                 SendCommand(76)
  47.                 'OSD-Gelb
  48.             Else
  49.                 SendCommand(8199)
  50.                 'Zeige Senderliste
  51.             End If 
  52.  
  53.         Case 30503
  54.         'bei OSD-Blau
  55.             If osd.isVisible Then
  56.                 SendCommand(77)
  57.                 'OSD-Blau
  58.             Else
  59.                 SendCommand(77)
  60.             End If 
  61.  
  62.         Case 30504
  63.         'bei OSD-Links
  64.             If osd.isVisible Then
  65.             'Ist das OSD sichtbar dann mache folgendes:
  66.                 SendCommand(2000)
  67.                 'OSD-Links
  68.             ElseIf isMediaplayback Then
  69.             'Wenn kein OSD Fenster sichtbar ist und eine Datei wiedergegeben wird mache folgendes:
  70.                 SendCommand(112)
  71.                 'voriges
  72.             Else
  73.             'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird mache folgendes:
  74.                 SendCommand(2000)
  75.             End If 
  76.  
  77.         Case 30505
  78.         'bei OSD-Rechts
  79.             If osd.isVisible Then
  80.             'Ist das OSD sichtbar dann mache folgendes:
  81.                 SendCommand(2100)
  82.                 'OSD-Rechts
  83.             ElseIf isMediaplayback Then
  84.             'Wenn kein OSD Fenster sichtbar ist und eine Datei wiedergegeben wird mache folgendes:
  85.                 SendCommand(113)
  86.                 'nächstes
  87.             Else
  88.             'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird mache folgendes:
  89.                 SendCommand(2100)
  90.             End If 
  91.  
  92.         Case 30506
  93.         'bei OSD-aufwärts
  94.             If osd.isVisible Then
  95.             'Ist das OSD sichtbar dann mache folgendes:
  96.                 SendCommand(78)
  97.                 'OSD-aufwärts
  98.             ElseIf isMediaplayback Then
  99.             'Wenn kein OSD Fenster sichtbar ist und eine Datei wiedergegeben wird mache folgendes:
  100.                 SendCommand(78)
  101.                 'OSD-aufwärts
  102.             ElseIf istimeshift Then
  103.             'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird und Timeshift aktiv ist mache folgendes:
  104.                 SendCommand(9)
  105.                 'Sender +
  106.             Else
  107.             'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird und kein Timeshift aktiv ist mache folgendes:
  108.                 SendCommand(78)
  109.             End If 
  110.  
  111.         Case 30507
  112.         'bei OSD-abwärts
  113.             If osd.isVisible Then
  114.             'Ist das OSD sichtbar dann mache folgendes:
  115.                 SendCommand(79)
  116.                 'OSD-abwärts
  117.             ElseIf isMediaplayback Then
  118.             'Wenn kein OSD Fenster sichtbar ist und eine Datei wiedergegeben wird mache folgendes:
  119.                 SendCommand(79)
  120.                 'OSD-abwärts
  121.             ElseIf istimeshift Then
  122.             'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird und Timshift aktiv ist mache folgendes:
  123.                 SendCommand(8)
  124.                 'Sender -
  125.             Else
  126.             'Wenn kein OSD Fenster sichtbar ist und keine Datei wiedergegeben wird und kein Timshift aktiv ist mache folgendes:
  127.                 SendCommand(79)
  128.             End If 
  129.  
  130.         Case Else
  131.             osd.showInfoinTVpic "No action in the Command.vbs for the ActionID " & ActionID,1000
  132.             'Zeige die Text Information No action in the Command.vbs for the ActionID (ActionID)
  133.             'für 1000 Millisekunden im DVBViewer an.
  134.     End Select
  135.  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.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
DVBViewer
Werkzeuge