あなたはTerminal.appに "DOスクリプト" イベントを送信する(現在は廃止)AppleEventの炭素APIを使用することができます。
OSStatus doTerminalScript (NSString* script) {
AppleEvent evt;
OSStatus err;
// Build event
err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript,
typeApplicationBundleID, "com.apple.terminal", 18L,
kAutoGenerateReturnID, kAnyTransactionID, &evt, NULL,
"'----':utf8(@)", strlen([script UTF8String]), [script UTF8String]);
if (err) return err;
AppleEvent res;
// Send event
err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout);
AEDisposeDesc(&evt);
if (err) return err;
// Check for any errors from Terminal.app
AEDesc desc;
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;
}
、フォームhereを撮影します。 実行していない場合、Terminal.appは-[NSWorkspace launchApplication:]
で起動する必要があることに注意してください。 希望の場合は、- [NSApplication activateWithOptions:]
で前景に置くことができます。これは、より現代的なScripting Bridge APIに簡単に移植することができます。
完璧、ありがとう! –
この使用のために多分恐らく、Scripting Bridge(http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ScriptingBridgeConcepts/Introduction/Introduction.html)は、以下を介して外部アプリと通信するための良い解決策です。 AppleScriptをObjective-Cアプリから起動します。 –
フォルダには二重引用符やスペースを入れてください。 – cobbal