VBS: Rückgabewert aus externem Programm

praetor

Mitglied
Registriert
24.10.04
Beiträge
2.157
Ort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Hallo,
ich versuche per Script ein externes Programm aufzurufen und möchte die Textausgabe das Ergebnis weiterverarbeiten.
Das Programm exiv2.exe sowie eine Testdatei test.jpg liegen im Scriptverzeichnis.
Code:
Set WshShell = CreateObject("WScript.Shell")
Aufruf = FF_GetFFPathEx (2) & "\" & "exiv2.exe -Plt -g Exif.Panasonic.NoiseReduction test.jpg"
Set oExec = WshShell.Exec(Aufruf)
x = oExec.StdOut.readall
msgbox x

Von der Kommadozeile funktioniert der Aufruf problemlos
Code:
exiv2.exe -Plt -g Exif.Panasonic.NoiseReduction test.jpg
und liefert zurück:
Code:
NoiseReduction                  Low (-1)
Die Übergabe des Ergebnisses an die Variable x gelingt leider nicht.
Kann mir bitte jemand einen Tipp geben?
 
AW: VBS: Rückgabewert aus externem Programm

Hallo Andreas,

bist Du sicher, dass das Programm mit dem Bild aufgerufen wird? Ich würde stets absolute Pfade mit Anführungszeichen verwenden. Vielleicht würde StdErr Auskunft darüber geben.
 
AW: VBS: Rückgabewert aus externem Programm

Hallo Werner,
Du lagst richtig. Das Bild wurde nicht gefunden. Ich dachte, exiv2.exe findet es ohne weiteres, wenn es im selben Verzeichnis liegt. War aber offensichtlich nicht so. Zudem war ich mir mit der Syntax ziemlich unsicher.
Merci!
Ich probier grad so ein bisschen rum, falls es damit vielleicht doch was werden sollte. 8-)
 
AW: VBS: Rückgabewert aus externem Programm

Hallo,

beim Aufruf eines externen Kommandozeilenprogramms über WshShell.Exec poppt jedes Mal das MS-DOS-Fenster kurz auf. Gibt es einen Weg, das zu unterdrücken? ???

Ich bin nicht sicher, ob das mit der Run-Methode besser ginge. Jedenfalls scheint es dann aber keine Möglichkeit zu geben, den Rückgabewert im Script weiter zu verarbeiten.

Dank &
 
AW: VBS: Rückgabewert aus externem Programm

Hallo Andreas,

nicht mit Script. Zumindest nicht ohne Hilfe.
 
AW: VBS: Rückgabewert aus externem Programm

Hallo Werner,
ich bin hier auf einen interessanten Lösungsansatz gestoßen, der es wohl doch ermöglicht, das DOS-Fenster zu unterdrücken. Das Beispielskript (exec-hidden-plus.vbs) läuft auch prima, wenn man es aus dem Dateisystem startet und es ermittelt Netzwerkdaten (ipconfig, ping), ohne dass das DOS-Fenster sichtbar wird.
Das Skript (was ich hier mal beifüge) läuft aber leider nicht aus FF heraus. Dort gibt es einen Fehler
Code:
Objekt erforderlich: 'WScript'
Src: Laufzeitfehler in Microsoft VBScript
Line:22 Error:0 Scode:800a01a8
Irgend etwas scheint beim Start aus FF heraus anders zu funktionieren. Ich weiß leider nicht, wo ich ansetzen soll. Vielleicht hast Du ja Lust, da mal einen Blick drauf zu werfen?
 

Anhänge

AW: VBS: Rückgabewert aus externem Programm

Hallo Andreas,

das Objekt WScript gibt es in FF nicht.
Den Namen deines Scriptes kennst Du und den Pfad kannst Du in FF mit FF_GetScriptPath ermitteln. Jetzt kannst Du das ganze manuell zusammensetzen oder über fso.BuildPath.
 
AW: VBS: Rückgabewert aus externem Programm

Hallo Werner,
das Objekt WScript gibt es in FF nicht.
das ist eine interessante Information (die m.E. in der Hilfe nicht zu finden ist). Gibt es denn noch weitere Abweichungen/Besonderheiten bei der Verwendung von VBS in FF?

WScript wird in dem Script ziemlich exzessiv verwendet. Ich fürchte, dass alles umzuschreiben übersteigt meinen gegenwärtigen Kenntnisstand ... Na vielleicht fällt mir ja noch ein anderer Weg ein.
 
AW: VBS: Rückgabewert aus externem Programm

Hallo Andreas,

es betrifft, soweit ich weiß, nur dieses Objekt.
Folgende Eigenschaften von WScript sind nicht enthalten bzw. haben keine Entsprechung: Arguments-Eigenschaft, FullName, Interactive, Name, ScriptFullName, ScriptName, StdErr, StdIn, StdOut, Version

Folgende Eigenschaft haben Funktionen als Ensprechung: Path => FF_GetScriptPath
Folgende Eigenschaft hat eine ähnliche Funktion, die nur innerhalb FF funktioniert, aber keine Argumente von der Kommandozeile bekommt: FF_GetParam/FF_SetParam
Folgende Eigenschaften kann man über Exec nutzen: StdErr, StdIn, StdOut
FixFoto-Version kann man mit FF_GetMajor, FF_GetMinor und FF_GetBuild zusammensetzen

Folgende Methoden sind enthalten (Ohne "WScript."): CreateObject, GetObject
Über folgende Methoden habe ich keine Auskunft: ConnectObject, DisconnectObject
Für folgende Methoden gibt es Funktionen: Echo => FF_Messagebox(In VBScript geht auch MsgBox, in JScript auch About), Quit => FF_Abort(Allerdings mit Fehlermeldung), Sleep => FF_Sleep

Statt WScript.Quit zu verwenden, ist es von Vorteil in Prozeduren/Funktionen zu arbeiten und mit Return(JScript) oder Exit Sub|Function(VBScript) zu arbeiten. Bei verschachtelten Prozeduren/Funktionen wird's etwas komplizierter.
 
AW: VBS: Rückgabewert aus externem Programm

Hallo Werner,
das hilft weiter. Da werde ich mich in einer ruhigen Minute noch mal drüber beugen.

@Micha: Vielleicht könnte man diese Infos irgendwie dauerhaft verfügbar machen? (z.B. hier mit anfügen? - oder gar in der Hilfe;))
 
Zurück
Oben