Je souhaite être averti lorsque l'application en cours va changer. J'ai regardé NSWorkspace. Il n'enverra des notifications que lorsque votre propre application deviendra active ou perdra l'activité. Je veux être informé de chaque application. Comment puis-je faire cela dans Cocoa?Recevoir une notification lorsque l'application en cours change dans Cocoa
Répondre
Merci Jason. kEventAppFrontSwitched en carbone Event Manager est le mot magique
- (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]);
}
Et le gestionnaire
static OSStatus AppFrontSwitchedHandler(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData)
{
[(id)inUserData appFrontSwitched];
return 0;
}
Oui, j'ai fait un petit exemple pour quelqu'un qui a effectivement posté des notifications il y a quelques temps, mais je ne l'ai pas trouvé. Vous avez donné un bon résumé, vous devriez accepter cette réponse :) –
Remarque: Pour réussir à créer une application en utilisant ceci, vous devez ajouter les frameworks Carbon et Core Services à votre build et inclure
Vous réglez. Merci! – Enchilada
Si vous ciblez 10.6 ou plus tard, il y a une notification pour cela:
// NSWorkspaceDidActivateApplicationNotification
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(foremostAppActivated:) name:NSWorkspaceDidActivateApplicationNotification object:nil];
Confirmé travaillant en 2014 sur OS X 10.9 (sauf que j'ai dû enlever le deux-points dans la méthode @selector). Je vous remercie! – Unknown123
Les deux-points sont là parce que je m'attends à ce que votre sélecteur ressemble à ceci: '- (void) foremostAppActivated: (NSNotification *) notification' – mrwalker
- 1. Pour recevoir une notification après le téléchargement?
- 2. Comment puis-je recevoir une notification lorsque l'utilisateur crée un point de montage?
- 3. Recevoir des en-têtes HTTP via NSURLRequest/NSURLConnection dans Cocoa
- 4. cadre subviews lorsque oreiantion change
- 5. Silverlight: Comment recevoir une notification d'un changement dans un DependencyProperty hérité
- 6. Recevoir des notifications lorsque l'utilisateur tente d'envoyer un SMS
- 7. Cocoa - Notification sur le changement de valeur NSUserDefaults?
- 8. est-il une notification lorsque "glisser pour déverrouiller" s'est produite
- 9. Événement lorsque l'utilisateur change d'onglet du navigateur
- 10. Comment recevoir une notification sur le déploiement d'EJB (pour configurer un temporisateur)?
- 11. Masquer un UITabBar lorsque l'orientation change
- 12. Utilisation de Cocoa pour détecter quand une application en cours lit l'audio
- 13. Notification d'événement téléphonique dans .NET
- 14. RichFaces: Affichage d'une notification "popup" lorsque l'opération AJAX a réussi
- 15. MAPISendMail ne fonctionne pas lorsque Outlook est en cours d'exécution
- 16. teste ContextSwitchDeadlock lorsque l'unité en cours d'exécution (intégration)
- 17. Enregistrement d'une notification dans l'iPhone SDK 3.0
- 18. Notification de numérisation via WIA
- 19. Comment suspendre une animation en cours d'exécution?
- 20. Excel peut-il donner une notification si la valeur d'une cellule change de limite dans un certain temps?
- 21. IE textarea largeur change lorsque l'utilisateur tape du texte
- 22. Pourquoi le convertisseur n'est pas appelé lorsque la collection change?
- 23. Conserver la sélection de texte lorsque le focus change
- 24. Evénement côté client lorsque la fenêtre enfant change d'emplacement parent?
- 25. Je dois effectuer une tâche lorsque le planificateur Quartz est en cours d'arrêt
- 26. BindingList.ListChanged Événement non déclenché lorsque la propriété change
- 27. Notification dans les rails
- 28. Comment supprimer une ligne DataGridView en cours d'ajout lorsque l'utilisateur annule le processus d'ajout?
- 29. Accéder au contrôleur dans une application Cocoa
- 30. Utiliser une localisation spécifique dans l'application Cocoa
Il est impossible d'obtenir cette information en om Cacao. Vous devez utiliser Carbon Event Manager pour recevoir des notifications lorsqu'un processus autre que le vôtre devient actif. –