2

NSWorkspaceDidActivateApplicationNotificationとNSWorkspaceDidLaunchApplicationNotificationの両方の通知を使用して、ユーザーが操作しているアプリを確認しています。

問題は、アプリケーションを開いたばかりでまだ起動している場合、最初にアクティブ化通知を受け取り、その後すぐに起動通知を受け取ることです。

activateメソッド内で、アプリがまだ起動中であり、まだ使用する準備ができていないことを知る方法はありますか?(まだドックで跳ねています)

Appleによるichatサンプルプロジェクトは上記のアプローチを使用せず、代わりに起動通知のみをリッスンしていることがわかります。次に、kAXApplicationActivatedNotificationを使用して、アプリにAXObserverを追加します。これは好ましい方法ですか?(また、NSRunningApplicationsを使用して、既にロードされているすべてのアプリにオブザーバーを追加します)。

メモリをあまり消費しないと思うので、単純なNSNotificationsだけを使い続けたいと思いました。(ロードされたすべてのアプリについてオブザーバーを維持する必要はありません)。

4

1 に答える 1

4

NSWorkspaceDidActivateApplicationNotificationのuserinfoで渡されたNSRunningApplicationオブジェクトを確認してください

NSRunningApplication *app = [note.userInfo objectForKey:NSWorkspaceApplicationKey]; 
if(app.isFinishedLaunching) 
    NSLog(@"up");
于 2013-03-10T14:57:47.813 に答える