Deseo recibir una notificación cuando cambie la aplicación actual. Miré NSWorkspace. Enviará notificaciones solo cuando su propia aplicación se active o pierda la actividad. Deseo recibir información sobre cada aplicación. ¿Cómo puedo hacer esto en Cocoa?Recibir notificaciones cuando la aplicación actual cambie en Cocoa
Respuesta
Gracias Jason. kEventAppFrontSwitched en Carbon Event Manager es la palabra mágica
- (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]);
}
y el manejador
static OSStatus AppFrontSwitchedHandler(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData)
{
[(id)inUserData appFrontSwitched];
return 0;
}
Sí, hice un pequeño ejemplo para alguien que realmente publicó notificaciones hace un tiempo, pero no pude encontrarlo. Usted dio un buen resumen, debe aceptar esta respuesta :) –
Observación: Para construir con éxito una aplicación que utiliza esto, debe agregar los Frameworks de Carbon and Core Services a su compilación e incluir
Usted regla. ¡Gracias! – Enchilada
Si usted está apuntando 10.6 o posterior hay una notificación de este:
// NSWorkspaceDidActivateApplicationNotification
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(foremostAppActivated:) name:NSWorkspaceDidActivateApplicationNotification object:nil];
documentos de Apple : http://developer.apple.com/library/mac/DOCUMENTATION/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html#//apple_ref/doc/uid/20000391-SW97
Se confirmó que funcionaba en 2014 en OS X 10.9 (excepto que tuve que eliminar los dos puntos en el método @selector). ¡Gracias! – Unknown123
El colon está allí porque espero que su selector se vea así: '- (void) foremostAppActivated: (NSNotification *) notification' – mrwalker
- 1. Recibir notificaciones con la aplicación en el modo de fondo
- 2. ¿Cómo puedo recibir notificaciones sobre un cambio de horario del sistema en mi aplicación Cocoa?
- 3. Recibir notificaciones cuando se reproduce un sonido en OpenAL
- 4. ¿Cómo recibir notificaciones cuando una ventana se enfoca en WPF?
- 5. Recibir una notificación cuando se selecciona la pestaña actual nuevamente
- 6. En Cocoa, ¿necesito eliminar un Objeto de recibir notificaciones KVO al desasignarlo?
- 7. ¿Cómo recibir notificaciones cuando finaliza una construcción exitosa?
- 8. ¿Cómo puedo recibir notificaciones cuando se visualice UIView?
- 9. iOS: cómo registrarse para recibir notificaciones push?
- 10. Cocoa: cambie el cursor cuando haya terminado un NSButton
- 11. Recibir notificaciones push en PhoneGap para iOS
- 12. ¿Cómo recibir notificaciones cuando la ventana se cierra en la extensión de Firefox?
- 13. Cómo obtengo la fecha actual en Cocoa
- 14. Obtenga una notificación cuando DTE.ActiveDocument cambie
- 15. ¿Cómo recibir notificaciones cuando cambia la altura de la barra de estado?
- 16. Obten la canción actual usando Cocoa
- 17. Cómo recibir UIAccessibilityNotifications en la aplicación de iPhone
- 18. iOS: compruebe la compatibilidad con notificaciones push en la aplicación
- 19. ¿Cómo recibir notificaciones de una vista emergente en UINavigationController?
- 20. Ocultar una UITabBar cuando la orientación cambie
- 21. Recibir notificaciones cuando se haya cargado la página DOM (pero antes window.onload)
- 22. Recibir notificaciones cuando el usuario presiona "Buscar" en el teclado en UISearchDisplayController
- 23. ¿Cómo incluir OpenCV en la aplicación Cocoa?
- 24. Recepción de notificaciones de GCM de Android cuando la aplicación está en estado detenido
- 25. C# .NET Tareas: Cómo recibir notificaciones cuando se han completado varias tareas
- 26. Notificaciones push de Apple: al registrarse para recibir notificaciones, no se reciben devoluciones de llamadas
- 27. Objetivo C: recibir notificaciones sobre el estado inactivo de un usuario
- 28. ¿Cómo recibir EMails en la aplicación C#?
- 29. Recibir SMS en la aplicación de Android
- 30. Cómo recibir una notificación cuando se notifica una notificación
Es imposible obtener esta información fr om Cocoa. Debe utilizar Carbon Event Manager para recibir notificaciones cuando se active un proceso que no sea el suyo. –