dbraner Posted January 17, 2009 Share Posted January 17, 2009 Hallo, ich würde gerne eine Taste im OSD doppelt belegen. Diese Taste soll die Action Play DVD ausführen wenn eine DVD eingelegt ist und die Action Play Audio CD wenn eine Audio CD eingelegt ist. Gibt es eine Möglichkeit über das COM-Interface festzustellen, ob eine Audio-CD oder eine DVD im Laufwerk liegt? Es geht hier nicht um Autoplay sondern um den Fall, dass die Wiedergabe der DVD/CD gestoppt wurde und der TV Modus aktiv ist, wobei die DVD/CD aber noch im Laufwerk liegt. Quote Link to comment
dbraner Posted January 20, 2009 Author Share Posted January 20, 2009 Hallo, ich würde gerne eine Taste im OSD doppelt belegen. Diese Taste soll die Action Play DVD ausführen wenn eine DVD eingelegt ist und die Action Play Audio CD wenn eine Audio CD eingelegt ist. Gibt es eine Möglichkeit über das COM-Interface festzustellen, ob eine Audio-CD oder eine DVD im Laufwerk liegt? Es geht hier nicht um Autoplay sondern um den Fall, dass die Wiedergabe der DVD/CD gestoppt wurde und der TV Modus aktiv ist, wobei die DVD/CD aber noch im Laufwerk liegt. Fixed it: Eine Unterscheidung ist nicht notwendig. Man definiert einfach wie im Wiki zu Command.vbs einen neuen Code und weist diesem eine Taste zu. Im entsprechenden Zweig in der Command.vbs schickt man dann einfach die Codes PlayDVD und PlayAudioCD hintereinander. Damit funktioniert dann das Starten einer eingelegten DVD und AudioCD. Sub main (ActionID) Select Case ActionID Case 30511 ' Play DVD CD SendCommand (8250) ' Play DVD SendCommand (8257) ' Play AudioCD Case Else osd.showInfoinTVpic "No action in the Command.vbs for the ActionID " & ActionID,1000 End Select End Sub Quote Link to comment
a4ke Posted January 27, 2009 Share Posted January 27, 2009 Hallo, ich habe es so gelöst: ####### Sub main (ActionID) Select Case ActionID Case 30700 Dim fsoObject, fsoDrive, fsoFilesystem, PlaySendCmd Set fsoObject = CreateObject("Scripting.FileSystemObject") Set fsoDrive = fsoObject.GetDrive("E:") 'der Laufwerksbuchstabe muss angepasst werden. If fsoDrive.IsReady = True Then fsoFilesystem = fsoDrive.FileSystem Select Case fsoFilesystem Case "UDF" 'Play DVD=8250 PlaySendCmd = 8250 Case "CDFS" 'Play AudioCD=8257 PlaySendCmd = 8257 End Select Else fsoFilesystem = "NO_Disk" 'Play=92 PlaySendCmd = 92 End If 'msgbox("Filesystem: " & fsoFilesystem & "; PlaySendCmd: " & PlaySendCmd) 'debug 'osd.showInfoinTVpic fsoFilesystem,2000 'debug SendCommand(PlaySendCmd) Case Else osd.showInfoinTVpic "No action in the Command.vbs for the ActionID " & ActionID,1000 End Select End Sub ####### So ist die Play Taste dreifach belegt. DVBViewer sprigt zu den Aufnahmen, wenn keine CD/DVD im Laufwerk liegt. Gruß A4ke Quote Link to comment
dbraner Posted January 28, 2009 Author Share Posted January 28, 2009 Coole Lösung! Vor allem spart man sich wieder eine Taste auf der FB. Weißt Du welches Dateisystem erkannt wird, wenn eine Blue-Ray Disk im Laufwerk liegt? Ist das auch UDF wie bei DVDs oder kann das von Disk zu Disk unterschiedlich sein? Quote Link to comment
a4ke Posted January 29, 2009 Share Posted January 29, 2009 Ich habe Herrn google gefragt. Blu Ray hat UDF 2.5. Welchen Wert fsoDrive.FileSystem zurück gibt weiß ich nicht. Sobald ich einen Rechner mit Blu Ray Laufwerk sehe, werde ich es wissen und hier schreiben. Gruß Andreas Quote Link to comment
a4ke Posted March 11, 2009 Share Posted March 11, 2009 Hallo, ich habe jetzt noch ein Popup Menü eingebaut, damit man auch zu den Aufnahmen gelangt, wenn eine DVD/CD im Laufwerk liegt. Die Funktion habe ich in ein eigenes VB Script untergebracht. DVBViewer\Scripts\Play.vbs 'Play DVD/CD/Recordings - Script Option Explicit Dim DVBViewer Dim fsoObject, fsoDrive, fsoFilesystem Dim PlaySendCmd, PlayPopUpValue, PlayPopUpText Set fsoObject = CreateObject("Scripting.FileSystemObject") Set fsoDrive = fsoObject.GetDrive("E:") 'der Laufwerksbuchstabe muss angepasst werden. If GetDVBVObject(DVBViewer) Then If fsoDrive.IsReady = True Then fsoFilesystem = fsoDrive.FileSystem Select Case fsoFilesystem Case "UDF" 'Play DVD=8250 PlaySendCmd = 8250 PlayPopUpText = "DVD starten,Aufnahmen,Zurück" Case "CDFS" 'Play AudioCD=8257 PlaySendCmd = 8257 PlayPopUpText = "CD starten,Aufnahmen,Zurück" End Select Else fsoFilesystem = "NO_Disk" 'OSD-Show Recordings=8196 PlaySendCmd = 8196 End If If fsoFilesystem <> "NO_Disk" then PlayPopUpValue = DVBViewer.osd.ShowPopUp ("Auswahl:",PlayPopUpText,true) Select Case PlayPopUpValue Case 1 'OSD-Show Recordings=8196 PlaySendCmd = 8196 Case -1,2 WScript.Quit(0) End Select end if 'DVBViewer.osd.showInfoinTVpic PlayPopUpValue & " " & PlaySendCmd,2000 DVBViewer.SendCommand(PlaySendCmd) end if '#################################################################### Function GetDVBVObject(Obj) On Error Resume Next Err.Clear: Set Obj = GetObject(, "DVBViewerServer.DVBViewer") If Err.Number = 424 OR Err.Number = 429 Then GetDVBVObject = False Else GetDVBVObject = True End If end Function Liegt eine CD/DVD im Laufwerk, wird ein Popup Menü geöffnet. Hier kann man zwischen DVD/CD Starten; Aufnahmen und Zurück wählen. In der Command.vbs rufe ich mit drücken der Play Taste auf der Fernbedienung Play.vbs auf. 'Play (geändert) Case 30700 Dim objShell Dim Status Set objShell = CreateObject("Wscript.Shell") Status = objShell.run("""C:\Program Files\DVBViewer\Scripts\Play.vbs""",0,false) Status wird nicht ausgewertet, ist aber für den Aufruf objShell.run nötig. ",false" am Ende der Zeile bedeutet, dass Command.vbs nicht auf das Ende von Play.vbs wartet. Dieses ist wichtig, wenn man, so wie ich, die Cursortasten in der Command.vbs neu definiert hat. Dieses ist auch der Grund für ein eigenes Play.vbs. Hat man den gesammten Code in Command.vbs, wartet Command.vbs auf das Ergebnis vom Popup Menü und alle neu definierten Befehle funktionieren nicht. Gruß a4ke 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.