coocaで実行されている別のアプリを終了するにはどうすればよいですか。iTunesを実行していて、アプリにquitと入力すると、itunesが終了するとします。「iTunes」はほんの一例であり、ユーザーが望むものなら何でもかまいません。アプリケーションから任意のアプリを開くことができますが、実行中のアプリを閉じる方法を知りたいです。
ありがとう
ケビン
coocaで実行されている別のアプリを終了するにはどうすればよいですか。iTunesを実行していて、アプリにquitと入力すると、itunesが終了するとします。「iTunes」はほんの一例であり、ユーザーが望むものなら何でもかまいません。アプリケーションから任意のアプリを開くことができますが、実行中のアプリを閉じる方法を知りたいです。
ありがとう
ケビン
AppleScriptは、単一のQuitイベントを送信するための非常に高レベルの方法です。SIGTERMは、かなりブルートフォースで低レベルの方法です。
別のアプリケーションを終了する正しい方法は、そのプロセスシリアル番号(psn)を取得し、次の2行のコードを含むkAEQuitApplicationAppleイベントを送信することです。
result = AEBuildAppleEvent( kCoreEventClass, kAEQuitApplication, typeProcessSerialNumber, ¤tProcessPSN,
sizeof(ProcessSerialNumber), kAutoGenerateReturnID, kAnyTransactionID, &tAppleEvent, &tAEBuildError,"");
result = AESend( &tAppleEvent, &tReply, kAEAlwaysInteract+kAENoReply, kAENormalPriority, kNoTimeOut, nil, nil );
これはC、C ++、またはObjective-Cから実行でき、CoreServices.frameworkとリンクする必要があります。
Mac OS X 10.6、Snow Leopardで実行している場合は、新しいNSRunningApplication終了メソッドを使用できます。
CarbonやCocoaをベースにしたiTunesのような高レベルのアプリケーションの場合、Applescriptに応答します。「終了」は標準パッケージの一部です。あなたはただ送る必要があります:
tell application "iTunes" to quit
それを行う方法はたくさんあります。実装するのが最も簡単なのは、次のシステムコールを作成することosascript
です。
osascript -e 'tell application "iTunes" to quit'
そこから、この問題に非常に適したAppleEventsなどのより強力なツールに移動できます。Scripting Bridgeまで行くこともできますが、アプリを終了するのはやり過ぎでしょう。
これは、Applescriptに応答するプログラムでのみ機能しますが、ドックに表示されるすべてのプログラムである必要があります(これは、「アプリケーション」を意味すると思います)。デーモンのような低レベルのプロセスの場合、launchctl
またはのような他の手法が必要kill
ですが、必要に応じてそれらについて話し合うことができます。