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