我正在为iTunes开发一种插件。
许多用户已经要求,如果他们启动iTunes,他们想要启动插件,这当然是有意义的。但是,我不知道该怎么做。
我想到了一个帮助应用程序,这可能是唯一的方法。 唯一困扰我的是如何获得通知。 当然,我可以不断检查iTunes是否正在运行,但我不确定这是否是正确的方法。
我宁愿添加我的应用程序作为该过程的观察者。 这可能吗?
如果没有,活动监视器如何做?
感谢Daij-Djan!我得到了这样的工作:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(iTunesLaunched:)
name:NSWorkspaceDidLaunchApplicationNotification
object:nil];
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(iTunesTerminated:)
name:NSWorkspaceDidTerminateApplicationNotification
object:nil];
}
-(void) iTunesLaunched:(NSNotification *)notification {
NSRunningApplication *runApp = [[notification userInfo] valueForKey:@"NSWorkspaceApplicationKey"];
if ([runApp.bundleIdentifier isEqualToString:@"com.apple.iTunes"])
NSLog(@"start");
}
-(void) iTunesTerminated:(NSNotification *)notification {
NSRunningApplication *runApp = [[notification userInfo] valueForKey:@"NSWorkspaceApplicationKey"];
if ([runApp.bundleIdentifier isEqualToString:@"com.apple.iTunes"])
NSLog(@"terminate");
}
答案 0 :(得分:5)
注册NSWorkspace通知:
NSWorkspaceDidLaunchApplicationNotification
NSWorkspaceDidTerminateApplicationNotification
见https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html
还有可能KVO运行应用程序属性
btw cocoatech有一个很好的NTRunningAppManager类,只做那个