2011-01-14 9 views
1

他の同時に実行されているアプリケーションで発生する特定の汎用イベントを(Cocoaでは)リッスンする方法はありますか?つまり、別のアプリケーションを開いたり、保存したり、閉じたり、終了したりするのを聞くことができますか? Macアプリケーションは、私が聞くことができる一連の一般的なイベントをブロードキャストしますか?他のCocoaアプリケーションのイベントを聴く

また、私のアプリケーションにフォーカスがない場合、cmd-o(オープン用)、cmd-s(保存用)、cmd-w(クローズ用)、cmd他のアプリケーションのイベントをリスンするバックエンドの方法として、-q(終了時)など?

答えて

1

配布オブジェクト(Neilvertの提案)よりも単純なものを使用する場合は、分散通知センターの分散通知を使用できます。ただし、アプリケーションをビルドしないかぎり、これらは転記されません。アプリケーションの起動または終了を監視するために、NSWorkspaceとその通知センターを使用できます。これらの通知は、ドックに表示されるすべてのアプリケーションに対して送信されます。

+0

私はNSWorkspaceを使って現在実行中のプログラムを見ることができることを知っています(オープニングまたは終了するのを聞きます)が、保存など他のイベントも聞くことができますか?私はこれらのプログラムにアクセスすることはできません、彼らは他の確立されたアプリケーションです - 例えば、ユーザーがPhotoshopまたはPreviewで保存するときに聞くことが可能ですか?私はとにかくこれらのアプリケーションを変更する必要はありません。一般的なイベントを待ち受けます。または、アプリケーションにフォーカスがないときにcmd-sキーイベントをリッスンすることは可能ですか? – redhotvengeance

+0

イベントを作成せず、cmd-sリスナーを信頼できません(多くの人がショートカットを使用しません)。 10.6では、ファイルシステムの変更をリスンするために登録することができます。 – ughoavgfhw

+0

ああ、面白いアプローチ、それは節約になると、少なくとも。私はそれを調べます。ありがとう! – redhotvengeance

1

分散オブジェクトを考慮する必要があります。参照リンクhereを参照してください。