Skip navigation.
 
mlRe: Using Terminal within Cocoa App.
FROM : Bruce Johnson
DATE : Wed Jan 16 17:16:13 2008

check out the open source OS X terminal application iTerm (
http://iterm.sourceforge.net/)  It has a terminal framework that you can
embed into your cocoa app.  When it is properly set-up you can
programatically send terminal commands to the embedded iTerm just as if you
were typing it in yourself.

On Jan 16, 2008 6:37 AM, has <hengist.<email_removed>> wrote:

> Caroline wrote:
>
> > I want to run some App by using Terminal script.
>
>
> If you're wanting to run shell scripts in Terminal (as opposed to just
> executing them directly via NSTask), you need to send Terminal a 'do
> script' event. Example:
>
> OSStatus DoTerminalScript(char *utf8Script) {
>    /*
>      * Run a shell script in Terminal.app.
>      * (Terminal.app must be running first.)
>      */
>    char *bundleID = "com.apple.terminal";
>    AppleEvent evt, res;
>    AEDesc desc;
>    OSStatus err;
>
>    // Build event
>    err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript,
>                            typeApplicationBundleID,
>                            bundleID, strlen(bundleID),
>                            kAutoGenerateReturnID,
>                            kAnyTransactionID,
>                            &evt, NULL,
>                            "'----':utf8(@)", strlen(utf8Script),
> utf8Script);
>    if (err) return err;
>    // Send event and check for any Apple Event Manager errors
>    err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout);
>    AEDisposeDesc(&evt);
>    if (err) return err;
>    // Check for any application errors
>    err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &desc);
>    AEDisposeDesc(&res);
>    if (!err) {
>        AEGetDescData(&desc, &err, sizeof(err));
>        AEDisposeDesc(&desc);
>    } else if (err == errAEDescNotFound)
>        err = noErr;
>    return err;
> }
>
> To launch Terminal.app, use -[NSWorkspace launchApplication:],
> LSOpenApplication() or similar.
>
>
> If you need to do anything more complex, I'd recommend using a high-
> level bridge such as objc-appscript <
> http://appscript.sourceforge.net/objc-appscript.html
>  > or Leopard's Scripting Bridge.
>
> HTH
>
> has
> --
> http://appscript.sourceforge.net
> http://rb-appscript.rubyforge.org
>
> _______________________________________________
>
> Cocoa-dev mailing list (<email_removed>)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>
> This email sent to <email_removed>
>




--
----
Bruce Johnson
<email_removed>

Related mailsAuthorDate
mlUsing Terminal within Cocoa App. Caroline Jan 16, 09:25
mlRe: Using Terminal within Cocoa App. Andrew Farmer Jan 16, 10:20
mlRe: Using Terminal within Cocoa App. has Jan 16, 15:37
mlRe: Using Terminal within Cocoa App. Bruce Johnson Jan 16, 17:16