5

coocaで実行されている別のアプリを終了するにはどうすればよいですか。iTunesを実行していて、アプリにquitと入力すると、itunesが終了するとします。「iTunes」はほんの一例であり、ユーザーが望むものなら何でもかまいません。アプリケーションから任意のアプリを開くことができますが、実行中のアプリを閉じる方法を知りたいです。

ありがとう

ケビン

4

3 に答える 3

11

AppleScriptは、単一のQuitイベントを送信するための非常に高レベルの方法です。SIGTERMは、かなりブルートフォースで低レベルの方法です。

別のアプリケーションを終了する正しい方法は、そのプロセスシリアル番号(psn)を取得し、次の2行のコードを含むkAEQuitApplicationAppleイベントを送信することです。

result = AEBuildAppleEvent( kCoreEventClass, kAEQuitApplication, typeProcessSerialNumber, &currentProcessPSN,
sizeof(ProcessSerialNumber), kAutoGenerateReturnID, kAnyTransactionID, &tAppleEvent, &tAEBuildError,"");
result = AESend( &tAppleEvent, &tReply, kAEAlwaysInteract+kAENoReply, kAENormalPriority, kNoTimeOut, nil, nil );        

これはC、C ++、またはObjective-Cから実行でき、CoreServices.frameworkとリンクする必要があります。

于 2009-09-24T03:39:56.083 に答える
10

Mac OS X 10.6、Snow Leopardで実行している場合は、新しいNSRunningApplication終了メソッドを使用できます。

于 2009-09-24T05:11:10.107 に答える
1

CarbonやCocoaをベースにしたiTunesのような高レベルのアプリケーションの場合、Applescriptに応答します。「終了」は標準パッケージの一部です。あなたはただ送る必要があります:

tell application "iTunes" to quit

それを行う方法はたくさんあります。実装するのが最も簡単なのは、次のシステムコールを作成することosascriptです。

osascript -e 'tell application "iTunes" to quit'

そこから、この問題に非常に適したAppleEventsなどのより強力なツールに移動できます。Scripting Bridgeまで行くこともできますが、アプリを終了するのはやり過ぎでしょう。

これは、Applescriptに応答するプログラムでのみ機能しますが、ドックに表示されるすべてのプログラムである必要があります(これは、「アプリケーション」を意味すると思います)。デーモンのような低レベルのプロセスの場合、launchctlまたはのような他の手法が必要killですが、必要に応じてそれらについて話し合うことができます。

于 2009-09-24T02:56:11.860 に答える