Article View: de.comp.sys.next
Article #364Terminal.app / IPC
From: Carsten Lutz
Date: Tue, 13 Oct 1992 18:46
Date: Tue, 13 Oct 1992 18:46
58 lines
2755 bytes
2755 bytes
Moin !
Da meine Fragen ja sehr beliebt zu sein scheinen ( wenn man aus der Zahl der
Followups darauf schliessen darf ;-) hier eine weitere:
Ich moechte unter OS 3.0 in einer meiner Apps erreichen, dass ( ohne Hilfe
durch den User ) Terminal.app dazu gebracht wird, ein neues Shell-Window
zu oeffnen und ein Kommando darin auszufuehren. In 2.1 war das nur durch
einen wirklich sehr ueblen Hack moeglich.
Unter 3.0 habe ich zwar eine saubere Loesung gefunden, aber sie gefaellt
mir nicht:
Ich habe im Terminal.App einen Terminal-Service angemeldet, der ein neues
Fenster oeffnet und dann mein Kommando ausfuehrt. Mit folgendem kurzen
Code-Segment kann ich dann das Kommando mit gewuenschten Args starten:
id pasteboard;
pasteboard=[Pasteboard newName:NXGeneralPboard];
[pasteboard declareTypes:&NXAsciiPboardType num:1 owner:self];
[pasteboard writeType:NXAsciiPboard data:commandarg
length:strlen(commandarg)];
if(!NXPerformService(TALKSERVICE, pasteboard))
NXRunAlertPanel("IPC Failure", "Couldn't connect to Terminal-"
"Application.","OK",0L,0L);
Das funktioniert und ist ein sauberer Weg, aber es hat den Nachteil, dass der
User erst Terminal.app konfigurieren muss und ausserdem in den services-menu
einen Eintrag fuer meinen TALKSERVICE hat, der ja manuell nie gerufen werden
soll.
Das dazu, was ich habe. Nun dazu, was ich moechte. ;-) Meine Wunsch-
loesung waere es, Distributed Objects zu benutzen. Wozu gibbet die schliess-
lich in 3.0. Also zu einem root-Object ( das jetz nicht im Sinne von OOP
sondern der dist. Objects ) des Terminal.app eine Verbindung erzeugen und
dann einfach eine Message rueberschicken, in der das Kommando samt
Argumenten steht, so ungefaehr wie folgendes:
id server;
server = [NXConnection connectToName:"terminalServer"];
[server startCommand:cmd withArgs:args inNewWindow:YES];
( Das ist alles fiktiv ).
Gibt es so eine Moeglichkeit ? Bietet Terminal.app irgendwelche Distributed
Objects an ? Wie kann man das eigentlich generell fuer eine App rausfinden ?
Wenn ja, welche Objects sind das und welche Methods implementieren sie ?
viel fragend,
Carsten
--
* Carsten Lutz, Rellingen, FRG / clu@malihh.hanse.de ( NeXTmail accepted ) *
* Voice : +49 4101 512493 Fax: +49 4101 27757 Traily : +49 4101 22306 *
* "Geh mir ein bischen aus der Sonne" - Diogenes *
Technical Details
Message-ID:
<Bw2pGr.44p@malihh.hanse.de>Path:
arc1-ca.pugleaf.net!sparky!uunet!math.fu-berlin.de!news.netmbx.de!news.Hamburg.Germany.EU.net!malihh!cluShow Full Headers
Complete Article Headers
Newsgroups: de.comp.sys.next Path: arc1-ca.pugleaf.net!sparky!uunet!math.fu-berlin.de!news.netmbx.de!news.Hamburg.Germany.EU.net!malihh!clu From: clu@malihh.hanse.de (Carsten Lutz) Subject: Terminal.app / IPC Message-ID: <Bw2pGr.44p@malihh.hanse.de> Organization: malihh, Hamburg, Germany Date: Tue, 13 Oct 1992 18:46:02 GMT Lines: 58