VB: Aufruf eines Programms synchron MIT Parametern

HuBaer

Ensign
Registriert
Aug. 2006
Beiträge
177
Folgendes Problem: Ich will in meinem Programm eine Batch-Datei mit Parametern aufrufen. Das Programm soll bis zur Beendigung des Aufrufs warten, d.h. der Befehl muss synchron sein. Da der Shell-Befehl asynchron läuft, habe ich ihn mit einer kleinen Funktion aus dem Internet (Link) so modifiziert, dass er synchron läuft. Leider musste ich feststellen, dass die Sache mit den Parametern nicht wirklich klappt. Im Internet habe ich gelesen, dass man mit dem Shell-Befehl keine Parameter übergeben kann!? Auf jeden Fall bin ich dann auf die ShellExecute-Funktion aufmerksam geworden, mit der man Parameter übergeben kann (Link). Das Dumme ist, diese Funktion läuft dann wieder nicht synchron.

Ich suche daher einen Befehl/Funktion, die synchron läuft UND ein Programm mit Parametern aufrufen kann.

Gruß
 
Du musst mit CreateProcess eine Pipe createn, die die ReturnCommandos von der cmd shell auffängt, und diese in einer Schleife, am besten im eigenen Thread, kontrollieren, ob du Return Code 0 bekommst.

Gruß
 
Geb dir hier mal ein Beispiel von einem meiner Programme:
---------------------------------------------------------------------------------------
cmdline = """" & App.Path & "\RoboCopy"" " & sVonQuelle _
& Proc.sPaket & " " _
& "\\" & Proc.sServer & sZiel & Proc.sPaket _
& " " & sParameter _
& " /LOG+:""" & sLogDatei & """"

Start.cb = Len(Start)

If UCase(DebugKZ) = "ON" And PakCpyLog <> "" Then
Logschreiben PakCpyLog, cmdline
End If

ret = CreateProcessA(0&, cmdline, sa, sa, 1&, _
NORMAL_PRIORITY_CLASS Or CREATE_NO_WINDOW, 0&, sCurDir, Start, Proc.PR_INFO)
If ret = 1 Then
StartRoboCopyPrc = True
Else
StartRoboCopyPrc = False
End If
---------------------------------------------------------------------------------------

Gruß
 
Danke erstmal für die Hilfe. Leider bin ich noch ein ziemlicher Anfänge in Sachen VB. Gibt es auch einfachere Umsetzungen oder könnte mir wer diese Befehle näher erklären?

Gruß
 
Okay danke, ich versuch das ganze mal Schritt für Schritt nachzuvollziehen. Ein Hilfe wäre noch wenn ich wüsste, wo dann genau der Dateiname und die Parameter stehen?!

Gruß

EDIT: Ich hab das Beispiel von http://www.activevb.de/tipps/vb6tipps/tipp0148.html jetzt geschnallt. Nun finde ich aber, dass die ganzen Deklarationen usw. mein eigentliches Programm ziemlich unübersichtlich machen. Kann man nicht das ganze irgendwo anders "hinpacken", sodass ich in meinem eigentlichen Programmcode wirklich dann nur

ShellWait Anwendung True

stehen hab?

EDIT2: Ich starte mit der ShellWait-Funktion eine Batchdatei. Diese weißt dann der Variable %Errorlevel% den Wert 100 zu und beendet sich. Kann ich diesen Errorlevel dann im VB-Programm irgendwie verarbeiten bzw. kann ich sonstwie abängig von dem "Ergebnis" der Batch einen Einfluss auf das VB-Programm nehmen?
 
Zuletzt bearbeitet:
Zurück
Oben