Function CheckScriptHost()

Die Funktion CheckScriptHost() ermittelt, welcher Script Host eingestellt ist und bekommt als Übergabeparameter einen boolschen Wert (true oder false), der in der Funktion ausgewertet wird, um ggfls. einen Skript Abbruch einzuleiten.

CONST CONST_ERROR = 0
CONST CONST_CSCRIPT = 1
CONST CONST_WSCRIPT = 2


Function CheckScriptHost(ByVal bQuit)
    On ERROR Resume Next
    Dim strFullname, strCommand, i, j, strMsg
    
    strFullname = wscript.FullName
    i = InStr(1, strFullName, ".exe", 1)
    If i = 0 then
        CheckScriptHost = CONST_ERROR
    Else
        j = InStrRev(strFullName, "\", i, 1)
        If j = 0 then
            CheckScriptHost = CONST_ERROR
        Else
            strCommand = Mid(strFullName, j+1, i-j-1)
            Select Case LCase(strCommand)
                Case "cscript"
                    CheckScriptHost = CONST_CSCRIPT
                Case "wscript"
                    CheckScriptHost = CONST_WSCRIPT
                Case Else
                    CheckScriptHost = CONST_ERROR
            End Select
        End If
    End If
    
    If CheckScriptHost <> CONST_CSCRIPT Then
        strMsg = "Scripting Host CSCRIPT erforderlich." & vbCRLF _
            & "Aufruf: cscript.exe myScript.vbs" & vbCRLF & vbCRLF _
            & "Cscript kann permanent gesetzt werden mit ..." & vbCRLF _
            & "CSCRIPT /H:CSCRIPT"
        MsgBox strMsg, 4096, "Need to run CSCRIPT"
        PrintLog 0, strMsg
        If bQuit Then
            wscript.quit
        End If
    End if
End Function

Mit der Function CheckScriptHost() soll überprüft werden, welcher Script Host eingestellt ist.
Ich möchte generell meine Skripte per Default unter cscript.exe laufen lassen, da z.B. bei Ausgaben mit wscript.echo unter dem Script Host wscript.echo eine MessageBox geöffnet wird.
Die Funktion bekommt mit dem Parameter bQuit ein Flag, das angibt, ob das Skript beendet werden soll, wenn nicht cscript eingestellt ist.
In CheckScriptHost() werden global definierte Konstanten verwendet, die als Returnwert zurückgegeben werden.
Eigentlich bräuchte CheckScriptHost() keinen Return liefern, sondern könnte als Sub definiert sein, wenn der Aufruf generell mit dem Parameter true erfolgt, oder wscript.quit wird einfach immer ausgeführt, wenn nicht cscript eingestellt ist.

Der Windows Script Host

Der Windows Script Host WSH stellt die Laufzeitumgebung für Skripte bereit und unterstützt verschiedene Skriptsprachen, wie VBScript, JScript, Perl und andere.
Für eine konsolenbasierte Umgebung wird cscript.exe und für eine GUI-basierte Umgebung wird wscript.exe gestartet.
Mit dem Aufruf cscript.exe /h:cscript kann per Default die konsolenbasierte Umgebung von WSH eingestellt werden. Ein Skript wird dann ohne zusätzliche Angaben in dieser Umgebung ablaufen.
Mit dem Aufruf wscript.exe myScript.vbs kann ein Skript explizit in einer bestimmten Umgebung, z.B. GUI-basiert gestartet werden.
Die folgende Grafik verdeutlicht sehr anschaulich die verschiedenen Komponenten innerhalb des Windows Script Host.



Scripting Basics