LaunchAgent - 有类似RunAtScreenSaver的东西吗?

时间:2009-09-18 08:33:34

标签: objective-c cocoa screensaver launchd launchdagent

我正在寻找一种方法来执行我的应用程序(这是一个后台任务),有时机器处于“空闲”状态。一个好的事件就是屏幕保护程序启动时。我已经阅读了auf launchd手册,并且已经使用LaunchAgent以一定的时间间隔启动了我的应用程序,但是当屏幕保护程序处于活动状态时,我发现没有任何东西可以帮助我启动我的应用程序。

有可能这样做吗?

提前致谢!

约什

4 个答案:

答案 0 :(得分:2)

让另一个在后台运行的进程侦听名为com.apple.screenIsLockedcom.apple.screenIsUnlocked的分布式通知。 (这适用于Snow Leopard.Leopard使用了不同的通知名称。使用Notification Watcher和实验来查明它们是什么。)当其中一个通知进入时,启动或很好地退出*您的真实应用程序。 / p>

*您将要使用Apple事件。

答案 1 :(得分:2)

对于Snow Leopard,screenIsLocked和screenIsUnlocked通知不再可用。我成功使用的是这些:

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(locked:) name:NSWorkspaceScreensDidSleepNotification object:nil];

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(unlocked:) name:NSWorkspaceScreensDidWakeNotification object:nil];

答案 2 :(得分:1)

我是新用户,因此我无法对portenkirchner的建议发表评论或投票。 Matt Swann移动了ScriptSaver

它完全符合我的要求,在解锁屏幕保护程序时运行AppleScript程序。

答案 3 :(得分:0)

您可以使用Matt Swann的ScriptSaver。这是一个Mac OS X屏幕保护程序,可以在激活和停用AppleScripts时运行它。

http://swannman.wordpress.com/projects/scriptsaver/