meta data for this page
  •  

Dies ist eine alte Version des Dokuments!


Externes Programm aufrufen

Table of Contents

Externes Programm aufrufenDOS Befehle ausführenRückgabewert verarbeitenURL aufrufenVBScript:

Dim oWSHShell
Dim Aufruf
Aufruf = """C:\Program Files\irgendeine.exe""" ' Auf Leerzeichen achten, oftmals Maskierung sinnvoll
Set oWSHShell = CreateObject("WScript.Shell")
oWSHShell.Run Aufruf
 

Um einen Pfad nachträglich zu maskieren, benötigt man reichlich Anführungszeichen:

Pfad = """" & Pfad & """"
'oder wenn sowieso die Zeichenkette zusammengesetzt werden muss
Pfad = Chr(34) & Pfad & Chr(34)


JScript:

function openProg(progname)
{
// progname = Pfad zum Programm (String)
var oWSHShell = new ActiveXObject("WScript.Shell");
oWSHShell.Run(progname, 10, true);
}

DOS Befehle ausführen

Manchmal ist es sinnvoll, einen DOS-Befehl aus einer Skriptdatei heraus auszuführen. Dabei muss der Pfad zum Kommandozeileninterpreter (command.com oder cmd.exe) expliziet angegeben werden, was über die Umgebungsvariable COMSPEC geschehen kann.
Nachfolgendes Beispiel zeigt den Inhalt von C:\ an:

Set ws = CreateObject("WScript.Shell")
ws.Run "%COMSPEC% /K DIR C:\",1


%COMSPEC% ist je nach Betriebssystem die Umgebungsvariable für command.com oder cmd.exe
%COMSPEC% /K bedeutet: Eingabeaufforderung bleibt geöffnet
%COMSPEC% /C bedeutet: Schließen der Eingabeaufforderung nach Ausführung des Befehls

Grundsätzlich poppt eine Eingabeaufforderung auf. Diese kann jedoch unterdrückt werden. Das nachfolgende Beispiel läuft unsichtbar ab und löscht eine Datei:

Set ws = CreateObject("WScript.Shell")
ws.Run "%COMSPEC% /C DEL C:\test.txt",0


Rückgabewert verarbeiten

Ruft man per Skript ein externe Kommandozeilentool auf und möchte die Rückgabewert dieses Tools im Skript weiterberarbeiten, so scheitert einen Umleitung der Programmausgaben mittels ">" bzw. "»" in eine Datei. Es tritt dann ein Fehler auf. Es gelingt aber mit dem Windows Scripting Host-Befehl WshShell.Exec

VBScript

'Bsp.: Ausgabe des DIR-Befehls
Aufruf = "%COMSPEC% /C DIR C:\"
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec(Aufruf)
Ausgabe = oExec.StdOut.readall
MsgBox Ausgabe

Das führt aber zu dem unschönen Effekt, dass sich kurz ein DOS-Fenster öffnet. Um das zu umgehen kann der Aufruf mit Hilfe der Funktion ExecHidden realisiert werden:

VBScript

'Bsp.: Ausgabe des DIR-Befehls
Aufruf = "%COMSPEC% /C DIR C:\"
Ausgabe = ExecHidden (Aufruf)
MsgBox Ausgabe
Function ExecHidden (CMD)
    ' v3.A - Quelle: http://dieseyer.de/dse-wsh-scr-b.html
    Dim FileOut, oWsh, Tmp
    CMD = Replace( CMD, """", """""" )
    Tmp = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%Temp%") & "\" & "ExecHidden.VBS"
     Set FileOut  = CreateObject("Scripting.FileSystemObject").OpenTextFile( Tmp , 2, true)
      FileOut.WriteLine( " Set      oExec = WScript.CreateObject(""WScript.Shell"").Exec(""" & CMD & """) " )
      FileOut.WriteLine( " WScript.CreateObject(""WScript.Shell"").Environment( ""volatile"" )( ""Eregbnis"" ) = oExec.StdOut.ReadAll() " )
      FileOut.Close
     Set FileOuT  = nothing
     Set oWsh = CreateObject("WScript.Shell")
         oWsh.Run "CScript.exe //NOLOGO " & Tmp , 0, true
    ExecHidden = oWsh.Environment("volatile")( "Eregbnis" )
    'zum Löschen der 'Tmp-Datei nächste Zeile frei geben
     CreateObject("Scripting.FileSystemObject").DeleteFile( Tmp )
End Function


URL aufrufen


In gleicher Weise können auch Webseiten aufgerufen werden

VBScript:

Dim oWSHShell
Set oWSHShell = CreateObject("WScript.Shell")
oWSHShell.Run "http://www.fixfoto.info/"
 


JScript:

function openLink(url)
{
// url = Link zur Website (String)
var oWSHShell = new ActiveXObject("WScript.Shell");
oWSHShell.Run(url,0,false);
}