如何检测应用程序(如Quicktime)是否阻止屏幕保护程序运行

时间:2012-03-15 22:55:45

标签: macos cocoa

我想阻止我的应用在用户观看电影,运行幻灯片或执行机器处于活动状态但鼠标和键盘闲置的任何其他活动时执行某些操作。

我知道每隔30秒调用UpdateSystemActivity()就会阻止屏幕保护程序触发,但我对是否有任何方法可以检测到屏幕保护程序是否被阻止无法运行感兴趣。

必须是App Store安全

1 个答案:

答案 0 :(得分:1)

我的笔记说,有一种方法可以使用未记录的类ScreenSaverController来完成此操作。这是标题:

@interface ScreenSaverController : NSObject
{
    void *_reserved;
}

+ (id)controller;
+ (id)enginePath;
- (id)init;
- (void)dealloc;
- (BOOL)screenSaverIsRunning;
- (BOOL)screenSaverCanRun;
- (void)setScreenSaverCanRun:(BOOL)arg1;
- (void)screenSaverStartNow;
- (void)screenSaverStopNow;
- (void)restartForUser:(id)arg1;
- (double)screenSaverTimeRemaining;
- (BOOL)screenSaverIsRunningInBackground;
- (void)screenSaverDidFadeInBackground:(BOOL)arg1
        psnHi:(unsigned int)arg2
        psnLow:(unsigned int)arg3;

@end

以下是如何使用它:

ScreenSaverController *ssc = [ScreenSaverController controller];
if ([ssc screenSaverCanRun]) { ... }
[ssc release];

请注意,您需要链接ScreenSaver框架才能使用此功能。由于这是一个未记录的类,因此这样做会使您的应用程序不符合Mac App Store的条件。

另请查看screenSaverTimeRemaining - 阻止屏幕保护程序启动的一些方法可能会不断重置此内容。

相关问题