如何在用户代理进程终止时运行代码?
我想要的是
我想要一个帮助应用程序用户代理(Info.plist中的LSUIElement为True)将自己添加到终止时的登录项。
问题
在帮助应用程序进程终止之前,我无法运行任何代码。
我的“添加到登录项”代码运行正常。
背景
我有一个随时运行的帮助应用用户代理进程
首次启动时,它会将自己添加到登录项目中
如果移动了应用程序,则在下次登录时,无法找到帮助程序应用程序进程,因此无法启动
我试过的
我想知道我是否应该继承NSApplication并覆盖terminate:或停止:并将我的代码放在那里,但这似乎有点过分。当然有更好的方法吗?
我在NSApp代表中尝试了所有这些不同的东西:
-(void)applicationWillTerminate:(NSApplication *)sender {
[self addHelperAppToLoginItems]
}
-(void)applicationDidTerminate:(NSApplication *)sender {
[self addHelperAppToLoginItems]
}
-(NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
[self addHelperAppToLoginItems]
}
-(void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(addHelperAppToLoginItems)
name:NSWorkspaceDidTerminateApplicationNotification
object:nil];
}
-(void)addHelperAppToLoginItems {
// This code never gets called!
}
为什么NSApplication委托方法不适用于用户代理进程?
如何在终止时检查登录项目的过程?
我会非常感谢任何帮助。谢谢!
更新1 6/2/11
在进一步挖掘之后,问题更多的是流程永远不会真正退出,它们被操作系统杀死更为常见。
这意味着当您选择在“活动监视器”中“退出”某个进程或关闭计算机时,不会调用终止委托方法。
运行以下Applescript时,会调用委托方法:
tell application "System Events"
tell application "LapsusHelperApp"
quit
end tell
end tell
没有找到相关结果
已邀请:
1 个回复
蹄寄噬非芹
消息。 此外,Xcode中的Terminate按钮(至少在3.x中)始终以突然终止的方式工作,因此在从Xcode终止您的应用程序时,您永远不会收到
消息。 顺便说说:
是一条通知消息,因此其参数是NSNotification对象,而不是NSApplication对象。 没有
。片刻的反思将揭示原因。 ☺