Мои заметки говорят, что есть способ сделать это, используя недокументированный класс, 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
Framework, чтобы использовать это.Так как это недокументированный класс, это сделает ваше приложение непригодным для Mac App Store.
Также взгляните на screenSaverTimeRemaining
- некоторые методы, препятствующие запуску заставки, могут просто постоянно сбрасывать это.