macos - OS X 在应用程序打开、退出和更改焦点时发出通知

标签 macos cocoa window

当其他应用程序打开或退出时,或者当不同的窗口(监听应用程序或其他应用程序)被带到最前面时,有什么方法可以让 cocoa 应用程序收到通知吗?

最佳答案

您可以将观察者添加到共享工作区通知中心:

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserverForName:NSWorkspaceDidActivateApplicationNotification object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *note) {
    NSRunningApplication *frontmostApplication = [[note userInfo] objectForKey:NSWorkspaceApplicationKey];
}];

// from NSWorkspace.h
APPKIT_EXTERN NSString * NSWorkspaceWillLaunchApplicationNotification;  //  see above
APPKIT_EXTERN NSString * NSWorkspaceDidLaunchApplicationNotification;   //  see above
APPKIT_EXTERN NSString * NSWorkspaceDidTerminateApplicationNotification;    //  see above
APPKIT_EXTERN NSString * const NSWorkspaceDidHideApplicationNotification NS_AVAILABLE_MAC(10_6);
APPKIT_EXTERN NSString * const NSWorkspaceDidUnhideApplicationNotification NS_AVAILABLE_MAC(10_6);
APPKIT_EXTERN NSString * const NSWorkspaceDidActivateApplicationNotification NS_AVAILABLE_MAC(10_6);
APPKIT_EXTERN NSString * const NSWorkspaceDidDeactivateApplicationNotification NS_AVAILABLE_MAC(10_6);

关于macos - OS X 在应用程序打开、退出和更改焦点时发出通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410798/

相关文章:

php - Mysql 密码已过期。无法连接

objective-c - 读取别名文件

javascript - 无法获取 window.open() 的innerHTML

objective-c - 以编程方式更改桌面图像

java - 当使用来自 Oracle 的 Java 7 时,File.list() 在 Mac OS X 上错误地检索具有非 ASCII 字符的文件名

macos - CFRunLoopRun() 与 [NSRunLoop 运行]

iphone - 变量失去其值(iPhone SDK)

objective-c - 单元测试 Cocoa 用户界面

Matlab - 8x8 窗口并查找平均值

c++ - 在 C++ 中为 Message Pump 定义自己的 WM 消息