Argumente an EXE Datei übergeben und Resultat zurückgeben

Anfängerfragen zum Programmieren mit PureBasic.
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Argumente an EXE Datei übergeben und Resultat zurückgeben

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Argumente an EXE Datei übergeben und Resultat zurückgebe

Beitrag 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
a²+b²=mc²
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag 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
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag 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)
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag 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.
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag 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
Antworten