gpt4 book ai didi

objective-c - 是否可以在 Mac 上使用 Cocoa 监控其他应用程序?

转载 作者:行者123 更新时间:2023-12-03 16:25:17 24 4
gpt4 key购买 nike

例如,获取屏幕上另一个应用程序正在变为事件状态的通知,或者退出事件状态。

最佳答案

当然。在您的应用程序委托(delegate)类中,您可以使用 NSWorkspace 在应用程序变为事件状态 ( NSWorkspaceDidActivateApplicationNotification ) 或退出事件状态 ( NSWorkspaceDidDeactivateApplicationNotification ) 时收到通知。请参阅 NSWorkspace 上的文档了解更多信息。

在你的 Controller 类中,你会做这样的事情:

- (id)init {
if ((self = [super init])) {
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(appDidActivate:)
name:NSWorkspaceDidActivateApplicationNotification
object:nil];
}
return self;
}

- (void)dealloc {
[[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self];
[super dealloc];
}

- (void)appDidActivate:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSLog(@"userInfo == %@", userInfo);

}

要点基本上是您需要注册才能接收通知,如-init中所示。您需要重复代码,为所需的每个附加通知名称添加另一个观察者(例如 NSWorkspaceDidDeactivateApplicationNotification)。

要记住的另一件重要的事情是在 -dealloc (或其他地方)中将自己作为观察者删除,以便 NSWorkspace 在之后不会尝试通知您的 Controller 对象它已被释放+释放(并且不再有效)。

在指定的 -appDidActivate: 方法中,使用有关相关应用的信息执行您需要的任何操作。

关于objective-c - 是否可以在 Mac 上使用 Cocoa 监控其他应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com