【问题标题】:LaunchAgent - Is there something like RunAtScreenSaver?LaunchAgent - 有类似 RunAtScreenSaver 的东西吗?
【发布时间】:2010-11-29 10:02:27
【问题描述】:

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

有没有可能这样做?

提前致谢!

乔什

【问题讨论】:

    标签: objective-c cocoa screensaver launchd launchdagent


    【解决方案1】:

    我是新用户,所以我不能评论或投票支持 portenkirchner 的建议。 Matt Swann 已将他的ScriptSaver 移至。

    这正是我想要的,当我解锁屏幕保护程序时运行一个 AppleScript 程序。

    【讨论】:

      【解决方案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];
      

      【讨论】:

      • 这些是围绕屏幕保护程序发送的,还是仅显示硬件睡眠?
      • 坦率地说,我从不使用屏幕保护程序。坦率地说,自从我们停止使用 CRT 后,我不明白为什么还有人会这样做!任何不是 100% 白色的屏幕保护程序只能损坏屏幕或什么也不做。所以我不知道也不关心我的用例:)
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        让另一个进程在后台运行并侦听名为com.apple.screenIsLockedcom.apple.screenIsUnlocked 的分布式通知。 (这适用于 Snow Leopard。Leopard 使用了不同的通知名称。使用 Notification Watcher 并通过实验找出它们是什么。)当其中一个通知出现时,启动或很好地退出*您的真实应用,视情况而定。

        *您需要为此使用 Apple 事件。

        【讨论】:

        • 雪豹不再提供这些通知。请参阅下面的答案。
        猜你喜欢
        • 2017-07-15
        • 2014-09-22
        • 2020-03-26
        • 2011-10-18
        • 2023-03-09
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多