Jump to content

VBS Scripts, Programmierung


Tüftler

Recommended Posts

Posted

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. :bye:

_____________________________________________

'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' " ! :bounce:

 

Wer hat bitte Lösungsvorschläge.

Posted
Dim myPath
myPath = WScript.ScriptFullName
Dim myDir
myDir = Left(myPath, InStrRev(myPath, "\"))

Dim img
img = myDir & "Timeshift-Info.png"

OSD.ShowimageinTVpic img, 5000

Posted (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 :bye:

Edited by Moses
Posted
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: :bye:

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.

Posted

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

Posted

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 " "

Posted

Sagt es auch, in welcher Zeile? Wie sieht das ganze Script aus? Wie wird OSD initialisiert?

 

Jochen

Posted

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.

Posted

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

Posted

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.

Posted

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

Posted

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? :bye:

Posted
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. :blink:

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. :oops:

Posted

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. :)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...