====== Externes Programm aufrufen ======
===== Externes Programm aufrufen =====
//VBScript://
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 [[/WScript%20in%20FixFoto|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);
}