我希望在當前應用程序發生更改時收到通知。我看了一下NSWorkspace。它只會在您的應用程序激活或失去活動時發送通知。 我想了解每個應用程序。我如何在可可中做到這一點?在Cocoa中當前應用程序發生更改時收到通知
9
A
回答
12
謝謝賈森。 kEventAppFrontSwitched在碳事件管理器是一個神奇的詞
- (void) setupAppFrontSwitchedHandler
{
EventTypeSpec spec = { kEventClassApplication, kEventAppFrontSwitched };
OSStatus err = InstallApplicationEventHandler(NewEventHandlerUPP(AppFrontSwitchedHandler), 1, &spec, (void*)self, NULL);
if (err)
NSLog(@"Could not install event handler");
}
- (void) appFrontSwitched {
NSLog(@"%@", [[NSWorkspace sharedWorkspace] activeApplication]);
}
而且處理
static OSStatus AppFrontSwitchedHandler(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData)
{
[(id)inUserData appFrontSwitched];
return 0;
}
+0
是的,我做了一個實際發佈通知的人的小例子,但我找不到它。你給出了一個很好的總結,你應該接受這個答案:) – 2009-04-18 07:16:15
+0
備註:要使用它成功構建應用程序,必須將Carbon和Core Services框架添加到構建中,幷包含
21
如果你的目標10.6或更高版本有此通知:
// NSWorkspaceDidActivateApplicationNotification
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(foremostAppActivated:) name:NSWorkspaceDidActivateApplicationNotification object:nil];
相關問題
- 1. 當應用程序在前臺時未收到推送通知
- 2. 收到通知時更新當前UI
- 3. FCM推送通知沒有收到當應用程序在前臺,但收到當應用程序在後臺
- 4. 在Cocoa/Obj-C應用程序中的網絡連接發生變化時收到通知
- 5. 沒有收到通知,當應用程序在前臺的通知
- 6. 當通知到達時更改應用程序圖標徽章
- 7. 在metro應用程序中更改權限時會收到通知
- 8. 當應用程序在前臺運行時收到iOS推送通知
- 9. 當應用程序遇到無限循環時收到通知?
- 10. 在Web應用程序上收到SMS時收到通知
- 11. 當應用程序關閉時收到通知
- 12. 當收到多個推送通知時,應用程序凍結
- 13. 當應用程序死亡時收到的iOS無聲通知
- 14. 當收到GCM通知時啓動應用程序
- 15. 僅當應用程序處於前臺時纔會收到Android通知
- 16. 在contactslist更改時收到通知
- 17. 當用戶在Silverlight應用程序中退出瀏覽器時收到通知
- 18. 在前臺應用程序未收到GCM通知
- 19. Worklight:應用程序無法在前臺收到推送通知
- 20. C#在Windows 7中刪除應用程序時收到通知
- 21. 當有新消息到達Node.js應用程序時,通過Gmail收到通知
- 22. 當數據庫中的數據更改時收到通知
- 23. 當網站發生更改時,通知在網站上閃爍?
- 24. 當oracle數據庫發生更改時發出通知
- 25. 當使用IBM Mobilefirst收到推送通知時,如何知道應用程序是在後臺還是前臺
- 26. DTE.ActiveDocument更改時收到通知
- 27. 當在SQL Server表中進行更改時通知C++應用程序
- 28. 當應用程序進入前臺時檢測遠程通知
- 29. 通知更改應用程序
- 30. Mac OS X - 當最前面的窗口發生變化時收到通知
這是不可能得到這個信息fr可可。您必須使用碳事件管理器來獲取有關您自己以外的進程何時激活的通知。 – 2009-04-18 06:14:11