2009-04-18 20 views
9

'da değişiklik olduğunda bildirim alın Güncel uygulama değiştiğinde bilgilendirilmek istiyorum. NSWorkspace'e baktım. Bildirimleri yalnızca kendi uygulamanız aktif hale geldiğinde veya aktiviteyi kaybettiğinde gönderir. Her uygulama hakkında bilgilendirilmek istiyorum. Bunu kakaoda nasıl yapabilirim?Geçerli uygulama Kakao

+2

Bu bilgiyi almanız imkansızdır. om Cocoa. Kendi başınıza bir süreç aktif hale geldiğinde bildirimler almak için Karbon Etkinlik Yöneticisi'ni kullanmanız gerekir. –

cevap

12

Teşekkür ederim Jason.

// NSWorkspaceDidActivateApplicationNotification 
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(foremostAppActivated:) name:NSWorkspaceDidActivateApplicationNotification object:nil]; 

Elma dokümanlar: Eğer 10.6 hedeflediğiniz veya daha sonra bunun için bir bildirim varsa Karbon Olay Yöneticisi kEventAppFrontSwitched sihirli kelime

- (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]); 
} 

Ve işleyici

static OSStatus AppFrontSwitchedHandler(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData) 
{ 
    [(id)inUserData appFrontSwitched]; 
    return 0; 
} 
+0

Evet, bir süredir bildirimleri yayınlayan birine küçük bir örnek verdim, ancak bulamadım. Güzel bir özet verdiniz, bu cevabı kabul etmelisiniz :) –

+0

Açıklama: Bunu kullanarak bir uygulamayı başarıyla oluşturmak için, Karbon ve Çekirdek Hizmet Çerçevelerini yapınıza eklemeniz ve ve işleyiciyi içeren uygulama dosyasında. http://stackoverflow.com/questions/801976/mixing-c-functions-in-an-objective-c-class/ adresindeki Objective-C – Christoph

+0

ile nasıl karıştırılacağına bakın. Teşekkürler! – Enchilada

21
+0

2014'te OS X 10.9'da çalışan teyit edildi (hariç, kolonun @selector yönteminde kaldırılması gerekti). Teşekkür ederim! – Unknown123

+0

Kolon var çünkü seçicinizin şu şekilde görünmesini bekliyorum: '- (void) foremostAppActivated: (NSNotification *) notification' – mrwalker