amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Programm aus einem anderen Programm starten [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

05.07.2002, 13:10 Uhr

Buzzy
Posts: 102
Nutzer
Hi!

Um aus einem Programm ein anderes zu starten, habe ich ich bis jetzt immer den
Befehl Execute(Programmname, NULL, NULL) verwendet. Jetzt ist mir aufgefallen,
dass Execute() erst dann einen Wert zurückgibt wenn man das neue Programm
beendet und deshalb das ursprüngliche Programm solange blockiert.

Wie stelle ich es an, dass die beiden unabhängig voneinander laufen und das eine
das andere nicht blockiert?(


MfG

Dennis

[ - Antworten - Zitieren - Direktlink - ]

05.07.2002, 13:26 Uhr

thomas
Posts: 7718
Nutzer

Wie wär's mit Execute("run programmname",NULL,NULL) ?

Lies dir auch mal die Autodocs zu Execute() durch. NULL,NULL darf man glaube ich nicht machen (weiß ich aber nicht mehr).

Ab OS2.0 solltest du lieber System() benutzen. Da kannst du die Funktion von RUN auch als Option angeben.

Gruß Thomas

--
Email: thomas-rapp@web.de

Home: home.t-online.de/home/thomas-rapp/


[ - Antworten - Zitieren - Direktlink - ]

05.07.2002, 14:56 Uhr

Michael_Mann
Posts: 1012
Nutzer
Falls es der Execute-Befehl von DOS (2.0+) ist:

BOOL success = Execute(APTR commandstring, BPTR input, BPTR output)

commandstring = CLI-Befehlszeile. Wenn der Befehl einen RUN-Befehl enthält, startet ein eigener Prozeß.
input sollte auf NULL gesetzt sein wenn nach der Programmausführung keine weiteren Instruktionen aus dem Kanal verarbeitet werden sollen. Output=0 Ausgabe im aktuellen Fenster.
Input + Output = BPTR auf FileHandles
success=NULL: Fehler bei der Ausführung des execute-Befehls.

Michael



[ Dieser Beitrag wurde von Michael_Mann am 05.07.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

05.07.2002, 16:21 Uhr

Kronos
Posts: 1168
Nutzer
Hi Buzzy
Hab grad mal in meinen alten "Intern" nachgeschaut, und das dürfte
die "sauberste" Methode sein:

segment = LoadSeg(name);
prozzes = GreateProc(name,pri,segment,stackgroesse);

Hat den Vorteil das du gleich Zugriff auf den Prozzes hast, und
das du nicht erst den Umweg über "c:run" gehst.

MfG
Kronos
--

Only the good die young all the evil seem to live forever

[ - Antworten - Zitieren - Direktlink - ]

05.07.2002, 19:41 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Falls du ein WB Programm starten möchtest und >=OS3.5 benutzt, kannst
du auch den OpenWorkbechObjectA Befehl der workbench.library benutzen.

Gruss

[ - Antworten - Zitieren - Direktlink - ]

05.07.2002, 20:24 Uhr

Michael_Mann
Posts: 1012
Nutzer
Ich wage es doch mal ;-):

Also wenn ein Programm über LoadSeg, CrateProc gestartet wird so sollte man abschließend aber auch ein UnLoadSeg aufrufen:
(BOOL) success=UnLoadSeg((BPTR)seglist)
success=NULL: Fehler oder seglist=0

Michael



[ - Antworten - Zitieren - Direktlink - ]

06.07.2002, 02:00 Uhr

Kronos
Posts: 1168
Nutzer
Zitat:
Original von Michael_Mann:
Ich wage es doch mal ;-):

Also wenn ein Programm über LoadSeg, CrateProc gestartet wird so sollte man abschließend aber auch ein UnLoadSeg aufrufen:
(BOOL) success=UnLoadSeg((BPTR)seglist)
success=NULL: Fehler oder seglist=0

Michael


Wenn das Programm auf normalen Weg beendet werden soll und kann, ist
UnLoadSeg() nicht nötig, da es sich dann selber aus dem System nimmt.

Wäre also nur für Plug-Ins oder ähnliches sinnvoll.

MfG
Kronos


--

Only the good die young all the evil seem to live forever

[ - Antworten - Zitieren - Direktlink - ]

16.07.2002, 12:02 Uhr

Solar
Posts: 3680
Nutzer
ANSI's Rache:

#include <stdlib.h>

system("Kommandozeile");

...

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Programm aus einem anderen Programm starten [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.