別のアプリケーションが起動された結果としてアプリケーションを起動できるプログラムメカニズムは何ですか?
たとえば、iTunesを起動すると、Last.fmデスクトップも起動します。
それとも、ある種の「バッチファイル」を置き換えるだけの問題ですか?
注: OSX初心者。
別のアプリケーションが起動された結果としてアプリケーションを起動できるプログラムメカニズムは何ですか?
たとえば、iTunesを起動すると、Last.fmデスクトップも起動します。
それとも、ある種の「バッチファイル」を置き換えるだけの問題ですか?
注: OSX初心者。
依存アプリを指定する標準的な方法はありません。だから、どういうわけかシステムを監視する必要があります。積極的にポーリングする必要はありません。あなたはあなたに伝えるためにいくつかのシステムメカニズムを使用する必要があります。
GUIアプリの起動を監視するには、バックグラウンドアプリを作成し、NSWorkspaceの通知センターを取得する必要があります。
NSNotificationCenter* nc=[[NSWorkspace sharedWorkspace] notificationCenter];
NSWorkspaceDidLaunchApplicationNotificationを監視します。を参照してくださいApple doc
。
非GUIアプリの起動を監視するには、を使用する必要がありますkqueue
。(これはBSDの機能です。)manページを参照してください。通常、監視または処理launchd
する必要があります。ルート用とログインユーザーごとに1つずつ、複数のプロセスがあることに注意してください。fork
execve
launchd
いずれの場合も、作成したバックグラウンドアプリを自動的に起動する必要があります。それを行うには多くの方法があります。
launchd
変更するファイルまたはディレクトリを監視するには、エージェントを使用できます。マニュアルページを参照してください。
ちなみに、公式Last.fm
アプリは、最初の起動時に、AudioScrobbler.bundle
内部にインストールされ~/Library/iTunes/iTunes Plug-ins
ます。iTunesは起動時にすべてのプラグインを読み取り、プラグインはLast.fmアプリを起動します。プラグインはビジュアライザー用であるため、これはかなりハック的で容認されていないインターフェースの使用法です。Appleのドキュメントを参照してください。