Safariが起動されるたびに、Macアプリに何かをさせようとしています。Safari の起動を検出する明白な方法は、実行中のプロセスをポーリングすることです。これを行うより良い方法はありますか?
コールバックを登録するために使用できる API があるかもしれない、または監視できる通知センター イベントがあるかもしれないと考えていました。
Safariが起動されるたびに、Macアプリに何かをさせようとしています。Safari の起動を検出する明白な方法は、実行中のプロセスをポーリングすることです。これを行うより良い方法はありますか?
コールバックを登録するために使用できる API があるかもしれない、または監視できる通知センター イベントがあるかもしれないと考えていました。
NSWorkspace
のオブザーバーとして、の通知センターに自分を追加できますNSWorkspaceDidLaunchApplicationNotification
。通知を受け取ったら、そのインスタンスがNSRunningApplication
提供するもの(キーの通知のuserInfo内のオブジェクトNSWorkspaceApplicationKey
)を調べて、起動されたのがSafariであるかどうかを判断します。
NSDistributedNotificationCenterクラスとNSWorkspaceクラスを確認してください。
次の投稿が役立つかもしれません:Mac OS Xでアプリケーション起動イベントをリッスンする方法は?