0

別のアプリケーションが起動された結果としてアプリケーションを起動できるプログラムメカニズムは何ですか?

たとえば、iTunesを起動すると、Last.fmデスクトップも起動します。

それとも、ある種の「バッチファイル」を置き換えるだけの問題ですか?

注: OSX初心者。

4

1 に答える 1

2

依存アプリを指定する標準的な方法はありません。だから、どういうわけかシステムを監視する必要があります。積極的にポーリングする必要はありません。あなたはあなたに伝えるためにいくつかのシステムメカニズムを使用する必要があります。

GUIアプリの起動を監視するには、バックグラウンドアプリを作成し、NSWorkspaceの通知センターを取得する必要があります。

NSNotificationCenter* nc=[[NSWorkspace sharedWorkspace] notificationCenter];

NSWorkspaceDidLaunchApplicationNotificationを監視します。を参照してくださいApple doc

非GUIアプリの起動を監視するには、を使用する必要がありますkqueue。(これはBSDの機能です。)manページを参照してください。通常、監視または処理launchdする必要があります。ルート用とログインユーザーごとに1つずつ、複数のプロセスがあることに注意してください。forkexecvelaunchd

いずれの場合も、作成したバックグラウンドアプリを自動的に起動する必要があります。それを行うには多くの方法があります。

launchd変更するファイルまたはディレクトリを監視するには、エージェントを使用できます。マニュアルページを参照してください。

ちなみに、公式Last.fmアプリは、最初の起動時に、AudioScrobbler.bundle内部にインストールされ~/Library/iTunes/iTunes Plug-insます。iTunesは起動時にすべてのプラグインを読み取り、プラグインはLast.fmアプリを起動します。プラグインはビジュアライザー用であるため、これはかなりハック的で容認されていないインターフェースの使用法です。Appleのドキュメントを参照してください。

于 2010-05-11T18:34:52.730 に答える