Tüftler Posted November 26, 2008 Posted November 26, 2008 Wer kann mir bei meinem Problem helfen? Ich möchte gern ein Bild beim starten des Timeshift Modus über ein Script (Command.vbs) anzeigen lassen. Bisher ist es mir nur gelungen eine entsprechende Meldung in der InfoBar anzeigen zu lassen. _____________________________________________ 'Timeshift (geändert) Case 30505 SendCommand(50) if isTimeshift=false Then osd.showInfoinTVpic "Timeshift aktiv",3000 End if _____________________________________________ Mit folgender Zeile würde es evtl. klappen, wenn ich nur wüsste, mit welchem Befehl ich festlegen kann wo er das Bild findet (liegt bei mir mit im Script-Verzeichnis) _____________________________________________ OSD.ShowimageinTVpic Timeshift-Info.png,5000 _____________________________________________ So bekomme ich aber folgende Fehlermeldung:" Objekt erforderlich 'Timeshift' " ! Wer hat bitte Lösungsvorschläge. Quote
JMS Posted November 26, 2008 Posted November 26, 2008 Dim myPath myPath = WScript.ScriptFullName Dim myDir myDir = Left(myPath, InStrRev(myPath, "\")) Dim img img = myDir & "Timeshift-Info.png" OSD.ShowimageinTVpic img, 5000 Quote
Moses Posted November 26, 2008 Posted November 26, 2008 (edited) Versuch mal das Timeshift-Info.png in Anführungszeichen zu schreiben. Alternativ auch mal mit vollem Pfad (also C:\... usw). Äh, achja, in VB wird man wahrscheinlich auch \\ statt \ in einem String schreiben müssen. Oder so wie "JMS" sagt... ist deutlich sauberer Edited November 26, 2008 by Moses Quote
Tüftler Posted November 26, 2008 Author Posted November 26, 2008 Dim myPath myPath = WScript.ScriptFullName Dim myDir myDir = Left(myPath, InStrRev(myPath, "\")) Dim img img = myDir & "Timeshift-Info.png" OSD.ShowimageinTVpic img, 5000 Verstehe leider nur Bahnhof: Wo gebe ich denn da meinen Pfad (D:\Programme\DVBViewer\Scripts\Timeshift.png) genau an. Ich kenne mich wirklich nicht aus damit, habe vieles nur durch probieren und Googeln realisiert. Sorry @Moses das mit \\ geht leider nicht und "" hatte ich schon probiert. Trotzdem Danke. Quote
JMS Posted November 26, 2008 Posted November 26, 2008 Verstehe ich nicht. Du ersetzt einfach Deine Zeile OSD.ShowimageinTVpic Timeshift-Info.png,5000 durch diesen Code Block. Du wolltest doch, dass das Script die Datei Timeshift-Info.png in dem Verzeichnis sucht, in dem es selbst läuft, oder? Jochen Quote
Tüftler Posted November 26, 2008 Author Posted November 26, 2008 sub main(Command) Select Case Command 'OSD-Rot (geändert) Case 30500 Dim myPath myPath = WScript.ScriptFullName Dim myDir myDir = Left(myPath, InStrRev(myPath, "\")) Dim img img = myDir & "Timeshift.png" OSD.ShowimageinTVpic img, 5000 Sieht bei mir jetzt so aus (Timeshift-Info.png ist in Timeshift.png umbenannt!) Fehlermeldung: " Objekt erforderlich " " Quote
JMS Posted November 26, 2008 Posted November 26, 2008 Sagt es auch, in welcher Zeile? Wie sieht das ganze Script aus? Wie wird OSD initialisiert? Jochen Quote
Tüftler Posted November 27, 2008 Author Posted November 27, 2008 Nein, sagt es nicht. Die Fehlermeldung wird nur in einem OSD Fenster angezeigt. sub main(Command) Select Case Command 'OSD-Rot (geändert) Case 30500 Dim myPath myPath = WScript.ScriptFullName Dim myDir myDir = Left(myPath, InStrRev(myPath, "\")) Dim img img = myDir & "Timeshift.png" OSD.ShowimageinTVpic img, 5000 'OSD-Grün (geändert) Case 30501 if osd.isVisible Then SendCommand(75) Else 'OSD-Show Audio SendCommand(8203) End if 'OSD-Gelb (geändert) Case 30502 if osd.isVisible Then SendCommand(76) Else 'OSD-Show FavChannels SendCommand(8200) End if 'OSD-Blau (geändert) Case 30503 if osd.isVisible Then SendCommand(77) Else 'OSD-Show Pictures SendCommand(8202) End if 'OSD-Timeline (geändert) Case 30504 if osd.isVisible Then SendCommand(8196) Else 'OSD-Show Timeline SendCommand(8201) End if Case Else osd.showInfoinTVpic "No action in th Command.vbs for this Action ID.",1000 End Select end sub Über die OSD Initialisierung weiss ich nichts. Aber die Einblendung, siehe 1.post, geht ja auch. PS: Das "'OSD-Rot (geändert) Case 30500" verwende ich nur zum Testen, da auf meinem Testrechner kein Timeshift geht, weil keine TV Karte vorhanden. Der erste post läuft aber bereits auf dem HTPC. Danke für deine Mühen. Quote
JMS Posted November 27, 2008 Posted November 27, 2008 Ok. Dann wird vermutlich das VBS vom Viewer 'gehostet' und es gibt möglicherweise kein WScript Objekt. Dann habe ich auf die Schnelle auch keine ordentliche Idee. Zumindest probieren, ob es geht, köntest Du mal, in dem Du in Deiner ursprünglichen Lösung den vollen Pfad zur Datei eingibst (in ", \, keine \\), so wie Moses es vorgeschlagen hat. OSD.ShowimageinTVpic "D:\Programme\DVBViewer\Scripts\Timeshift.png", 5000 Jochen Quote
Tüftler Posted November 27, 2008 Author Posted November 27, 2008 Das hatte ich leider schon getestet, dann kommt folgende Fehlermeldung: Leider ist der Rest der Meldung nicht lesbar. Unterstützt werden wohl nur Befehle laut "DVBViewer COM Interface.chm". Nur habe ich da leider nichts zur Pfadangabe gefunden, weshalb ich hier ja frage. Kannst du mir evtl sagen wie man einen eigenen Scriptaufruf über die Interne Scriptengine einbinden kann, wenn das überhaupt möglich ist? Ansonsten belasse ich es halt beim OSD-Banner. Danke dir. Quote
JMS Posted November 27, 2008 Posted November 27, 2008 Nein, da weiss ich nicht weiter. Hier spielt halt auch der Scripting Host (DVBViewer) ein Rolle. Insbesondere müßtest Du wissen, welche Art von Objekt OSD.ShowimageinTVpic als ersten Parameter braucht, wenn der zweite 5000 ist. Sorry Jochen Quote
Moses Posted November 27, 2008 Posted November 27, 2008 Bist du sicher, dass der Funktionsname so stimmt? Ich kann nur eine Funktion ShowImage finden. Aus der Dokumentation des COM Interface (was du hier nutzt): procedure ShowImage(const Filename: WideString; Timeout: Integer); Shows a Image dialog centred on screen. The Image will be resized to fit into the display. Parameters Filename The complete filename of the image. Timeout in Milliseconds. Das ist natürlich Pascal Code und kein Basic... aber der Funktionsname sollte identisch sein. Vielleicht löst das ja schon dein Problem? Quote
Tüftler Posted November 28, 2008 Author Posted November 28, 2008 Bist du sicher, dass der Funktionsname so stimmt? Ich kann nur eine Funktion ShowImage finden. Aus der Dokumentation des COM Interface (was du hier nutzt): procedure ShowImage(const Filename: WideString; Timeout: Integer); Shows a Image dialog centred on screen. The Image will be resized to fit into the display. Danke Moses, jetzt geht es. Nur das Timeout geht nicht. Das heist, dass Bild geht erst nach ESC drücken weg._____________OSD.Showimage "D:\Programme\DVBViewer\Scripts\Timeshift.png", 5000_____________ War übrigens mein Fehler, da es erst so bei mir nicht ging (Schreibweise war bei mir falsch), habe ich es dann so gebastelt. (entstanden aus osd.showInfoinTVpic) Nach eurer Hilfe hatte ich meine Änderung glatt vergessen rückgängig zu machen. Quote
Tüftler Posted November 28, 2008 Author Posted November 28, 2008 Oh, da habe ich wohl ein Bug in der internen ScriptEngine gefunden. Denn so geht es mit ausblenden über Timeout: ____________ OSD.Showimage "D:\Programme\DVBViewer\Scripts\Timeshift.png",3 ____________ Zitat aus der DVBViewer COM Interface.chm: "Shows a Image dialog centred on screen. The Image will be resized to fit into the display. Parameters Filename The complete filename of the image. Timeout in Milliseconds. " --> Sind aber Sekunden! Daher blieb das Bild bei ",3000" auch stehen. Jedenfalls kann ich das jetzt endlich so in meinem Script verwenden. Danke euch, für eure Hilfe. Quote
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.