Ausführen von anderen Programmen

Hallo,

Ich muß aus meinem Programm ein anderes Programm (i80.exe, altes Dos Programm) ausführen und dort 3 Anweisung nacheinander ausführen.

Von Hand sieht das so aus:

starten von i80
c:\i80
Im i80:
do 1. Anw.
do 2. Anw.
do 3. Anw.
end

Weiß jemand, wie ich das hinbekomme.
Besonders die drei Anwendungen??

Vielen Dank im voraus,
bis dann,
Jan

Ich muß aus meinem Programm ein anderes Programm (i80.exe,
altes Dos Programm) ausführen und dort 3 Anweisung
nacheinander ausführen.

was heisst hier 3 Anweisungen ausführen?
Den text in die Standart-Eingabe eingeben lassen?

wenn ja, schreib den Text in eine Datei, zum Beispiel i80.txt
und starte die i80 so:
"i80.exe

Hi Steffen,

was heisst hier 3 Anweisungen ausführen?
Den text in die Standart-Eingabe eingeben lassen?

Das Programm erwartet Befehle, die der User eingeben soll(te, jetzt soll’s das Programm machen).

wenn ja, schreib den Text in eine Datei, zum Beispiel i80.txt
und starte die i80 so:
"i80.exe

wenn ja, schreib den Text in eine Datei, zum Beispiel i80.txt
und starte die i80 so:
"i80.exe

So nicht!
Hi, Steffen

auch nicht, wenn du das so in die Eingabeaufforderung
eingibst?
(Ohne Hochkommas)

Beim Programmstart sollte das "execl(„i80.exe“, …); werden nicht bearbeitet.

Das darf aber nicht sein, wg. evtl. Fehlern.

Falls du noch weiterweisst, wäre das Top,
auf jeden Fall Danke,

bis dann,
Jan

Beim Programmstart sollte das "execl(„i80.exe“, …); werden

nicht bearbeitet.
Das darf aber nicht sein, wg. evtl. Fehlern.

dann hast du das falsche exe erwischt. Ist dein Programm ein Windows-Konsolenprogramm? Wenn ja, versuch mal die Funktion ShellExecute

Steffen

1 Like

Hi,

Aber mittels execl klappt es ein bischen.
Damit kann ich das Prog starten, und die erste Anweisung
ausführen.
Leider aber die zweite nicht mehr!?!

wie führst du denn jetzt die erste Anweisung aus? übergibst du
die Anweisung als Parameter?

Ja

Ist das Programm i80.exe von dir programmiert?

Nein

Ich kann auch die exec-Funktionen gar nicht benutzen.
Bisher ist es mir immer gelungen, zu überlesen, daß nach ausführung von exec nicht zum Programm zurückgekehrt wird.
Das ist aber unbedingt nötig!

dann hast du das falsche exe erwischt. Ist dein Programm ein
Windows-Konsolenprogramm? Wenn ja, versuch mal die Funktion
ShellExecute

Da ist meine Hilfe (oder ich) nicht so kompetent.
Weißt du, wie da ein Aufruf (i80.exe, parameter1, parameter2, parameter3) aussieht. Möglicherweise brauche ich gar nicht die parameteraufrufe, wenn ich eine .bat Datei starte. Also nur Shellexectue („i80.bat“) ?!

bis dann,
Jan

wie führst du denn jetzt die erste Anweisung aus? übergibst du
die Anweisung als Parameter?

Ja

kannst du nicht das Programm mehrmals hintereinander mit immer nur einem Parameter starten?

Ich kann auch die exec-Funktionen gar nicht benutzen.
Bisher ist es mir immer gelungen, zu überlesen, daß nach
ausführung von exec nicht zum Programm zurückgekehrt wird.
Das ist aber unbedingt nötig!

Hmm, ich glaub, ich hab da auch schonmal was zu gelesen.

dann hast du das falsche exe erwischt. Ist dein Programm ein
Windows-Konsolenprogramm? Wenn ja, versuch mal die Funktion
ShellExecute

Da ist meine Hilfe (oder ich) nicht so kompetent.

Hmm, wenn du ein Windows-Programm machst, Kannst du auch ein SHellexecute machen

guck ma auf
http://msdn.microsoft.com/library/psdk/shellcc/shell…

Der Aufruf würde dann so aussehen:
ShellExecute(NULL,„open“,„i80.exe“,„param1 param2“,".",SW_SHOWNORMAL);

hier bin ich mir sicher, dass dein Programm nicht beendet wird.
Wenn du ein exec verwendest, welses aus DOS-Zeiten noch stammt, ist klar dass sich der Aufrufer beendet - im DOS kann ja immer nur ein Programm aktiv sein.

Weißt du, wie da ein Aufruf (i80.exe, parameter1, parameter2,
parameter3) aussieht. Möglicherweise brauche ich gar nicht die
parameteraufrufe, wenn ich eine .bat Datei starte. Also nur
Shellexectue („i80.bat“) ?!

eine Bat wäre auch eine Möglichkeit. Aber mehrere Parameter sollten sich in einem String ausführen lassen, solange dein I80 das unterstüzt.

Steffen

1 Like

Läuft (mehrheitlich)

kannst du nicht das Programm mehrmals hintereinander mit immer
nur einem Parameter starten?

Leider nicht, die sind voneinander abhängig

hier bin ich mir sicher, dass dein Programm nicht beendet
wird.

Stimmt genau

Wenn du ein exec verwendest, welses aus DOS-Zeiten noch
stammt, ist klar dass sich der Aufrufer beendet - im DOS kann
ja immer nur ein Programm aktiv sein.

Aha!

eine Bat wäre auch eine Möglichkeit.

Mir scheint, die einzige einfache.

Aber mehrere Parameter

sollten sich in einem String ausführen lassen, solange dein
I80 das unterstüzt.

Angeblich tut es das (jedenfalls ein bischen), aber keiner weiß wie!

Shellexecute scheint jednefalls zu funktionnieren.

Danke,
Jan

Ich hatte mit ähnlichen Problemen zu tun.
Ein Hilfe waren WinExec, womit unter Windows beliebige Programme zu starten sind mit entsprechenden Parametern, oder weiter der Befehl „system“, womit aus Programmen heraus beliebige Systembefehle aufgerufen werden können, die sonst in eine Kommandozeile gegeben werden.
Gruß Gerald

Rückgabe v. ShellExecute
Hallo,

Laut meiner Hilfe gibt Shellexecute bei Fehlern eine Wert kleiner oder gleich 32 zurück.

Jetzt wollte ich den mit
If(ShellExecute(…)

Jetzt wollte ich den mit
If(ShellExecute(…)

Spawn
Hi,

ShellExecute hat es erstmal getan, das andere Programm läuft.

Ich habe dann den Befehl spawnl gefunden, und den mal probiert. Der sieht ganz gut aus!

bis dann,
Jan