Seite 1 von 2
Argumente an EXE Datei übergeben und Resultat zurückgeben
Verfasst: 27.03.2006 09:56
von funk.munich
Hallo zusammen,
ich bin neu hier und versuche gerade mal ein paar Dinge mit PB auszuprobieren.
Ich möchte gerne über eine Skript Sprache (in dem Fall VBS) ein exe
Datei aufrufen.
Über diese Datei kann ich dann eine Datei oder einen Ordner selektieren.
Das Ergebnis soll dann an das Skript zurück gegeben werden, damit die
Pfadangabe weiter genutzt werden kann.
Gibt es hierzu eine Möglichkeit? Ich habe in der PB Hilfe schon nachgeschaut, aber leider nichts passendes dazu gefunden?
Kann mir hierzu jemand einen Tipp geben?
Das wäre super cool.
Danke,
Daniel
Re: Argumente an EXE Datei übergeben und Resultat zurückgebe
Verfasst: 27.03.2006 10:34
von Kiffi
> Über diese Datei kann ich dann eine Datei oder einen Ordner selektieren.
> Das Ergebnis soll dann an das Skript zurück gegeben werden, damit die
> Pfadangabe weiter genutzt werden kann.
sol die EXE nichts weiteres machen, als eine Dateiauswahlbox anzeigen? Das
kann man doch auch mit VBS machen.
http://www.tutorials.de/forum/visual-ba ... rufen.html
Oder habe ich Dich da falsch verstanden?
Grüße ... Kiffi
Verfasst: 27.03.2006 11:09
von funk.munich
Hi,
danke für die schnelle Info. Wenn ich nur eine Datei auswählen möchte
dann ist das richtig.
Jedoch bei Ordner Auswahl sowie bestimmte Anzeige zusätzlicher Infos (Size, ...) habe ich unter VBS noch keine andere Lösung finden können.
Eigentlich benötige ich eine exe hauptsächlich für Ordner Auswahl.
Danke + Gruß,
Daniel
Verfasst: 27.03.2006 11:10
von funk.munich
Hi,
noch etwas...
also zum Einlesen habe ich was gefunden:
ProgramParameter()
jetzt bräuchte ich nur noch was zum ausgeben.
Gruß,
Daniel
Verfasst: 27.03.2006 11:30
von Kiffi
> jetzt bräuchte ich nur noch was zum ausgeben.
tscha, ich glaube, das sieht schlecht aus mit dem Rückgabewert.
Mit PB hat man zwar die Möglichkeit, mit 'End' einen Exitcode
zurückzuliefern, aber
1. Darf der Exitcode nur numerisch sein
und
2. weiss ich nicht, ob das mit dem Exitcode überhaupt funktioniert. Hierzu
gibt's ein paar Threads in diesem Board (hat mich nicht sonderlich
interessiert. Deshalb habe ich sie mir nicht so genau durchgelesen).
Quick'n Dirty - Lösung: Du erstellst mit Deinem PB-Programm eine
temporäre Datei, in der Du die ausgewählten Dateien hineinschreibst und
liest diese mit Deinem VBS wieder aus. Eine andere Möglichkeit sehe ich
momentan nicht.
Mal abwarten, was die anderen schreiben.
Grüße ... Kiffi
Verfasst: 27.03.2006 11:33
von funk.munich
Hi,
das habe ich schon ausprobiert und funktioniert auch einwandfrei.
Aber man will sich ja so viele Zwischenschritte wie möglich sparen.
Dann bleibt mir wohl nichts anderes übrig.
Aber danke für Deinen schnellen Support.
Bis dann,
Daniel
Verfasst: 27.03.2006 11:50
von Kiffi
> Aber man will sich ja so viele Zwischenschritte wie möglich sparen.
Sehr löblich!

Zumal das Schreiben in eine Temp-Datei ziemlich suboptimal
und fehleranfällig ist.
Aber wie gesagt: Vielleicht finden die anderen noch eine bessere Lösung.
Grüße ... Kiffi
Verfasst: 27.03.2006 12:08
von helpy
funk.munich hat geschrieben:Eigentlich benötige ich eine exe hauptsächlich für Ordner Auswahl.
Ordnerauswahl in VBScript:
=>
Selection Of A Folder Using The Shell Application Browseforfolder Method... (Vbscript)
Verfasst: 27.03.2006 12:47
von funk.munich
Hi zusammen,
vielen Dank für die schnelle Hilfe. Das nächste Mal schaue ich erst mal
auf die MSDN Seite
Danke + Gruß,
Daniel
PS Trotzdem wäre es interessant zu wissen, ob es eine Möglichkeit gibt
den Eingabewert auszulesen.
Verfasst: 27.03.2006 13:39
von helpy
funk.munich hat geschrieben:PS Trotzdem wäre es interessant zu wissen, ob es eine Möglichkeit gibt
den Eingabewert auszulesen.
1. Einlesen des Rückgabewertes (Exit-Code) eines Programms:
Code: Alles auswählen
Option Explicit
Dim WshShell
Set WshShell = WScript.CreateObject ("WSCript.shell")
' Gibt 0 zurück, da kein Fehler auftritt!
MsgBox WshShell.Run("cmd /C CD C:",,True)
' Gibt 1 zurück, da ein Fehler (Verzeichnis existiert nicht) auftritt
MsgBox WshShell.Run("cmd /C CD C:\Dir_Does_Not_Exist",,True)
Wenn Du statt "True" in der Run-Methode "False" angibst, dann kehrt das Skript sofort nach dem Aufruf des Programms zur Skriptausführung zurück, ohne auf das Ende des Programms zu warten. Der Rückgabewert ist in diesem Fall immer 0.
Mit der Exec-Methode des WshShell-Objektes kannst Du ein Programm starten und dessen Standard-Ausgabe (StdOut) einlesen und sogar über die Standard-Eingabe (StdIn) Information an das Programm übergeben. Beispiel aus der "Windows Script Hilfe" von MS:
Code: Alles auswählen
Dim WshShell, oExec, input
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("test.bat")
input = ""
Do While True
If Not oExec.StdOut.AtEndOfStream Then
input = input & oExec.StdOut.Read(1)
If InStr(input, "Drücken Sie eine beliebige Taste") <> 0 Then Exit Do
End If
WScript.Sleep 100
Loop
oExec.StdIn.Write VbCrLf
Do While oExec.Status <> 1
WScript.Sleep 100
Loop
Um das zu verwenden könntest Du Dir ein PB-Programm (Konsolen-Programm!!) schreiben, das Dir über die Standard-Ausgabe alle benötigten Infos ausgibt und das Skript liest diese ein!
cu, helpy