amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Programm aus einem anderen Programm starten [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2002-07-05, 13:10 h

Buzzy
Posts: 102
User
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

[ - Answer - Quote - Direct link - ]

2002-07-05, 13:26 h

thomas
Posts: 7718
User

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/


[ - Answer - Quote - Direct link - ]

2002-07-05, 14:56 h

Michael_Mann
Posts: 1012
User
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. ]

[ - Answer - Quote - Direct link - ]

2002-07-05, 16:21 h

Kronos
Posts: 1168
User
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

[ - Answer - Quote - Direct link - ]

2002-07-05, 19:41 h

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

Gruss

[ - Answer - Quote - Direct link - ]

2002-07-05, 20:24 h

Michael_Mann
Posts: 1012
User
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



[ - Answer - Quote - Direct link - ]

2002-07-06, 02:00 h

Kronos
Posts: 1168
User
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

[ - Answer - Quote - Direct link - ]

2002-07-16, 12:02 h

Solar
Posts: 3680
User
ANSI's Rache:

#include <stdlib.h>

system("Kommandozeile");

...

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Programm aus einem anderen Programm starten [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.