Моих заметки говорят, что есть способ сделать это, используя недокументированный класс, 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
- некоторые способы предотвращения заставки от запуска могут просто непрерывно перезагружать это.
Спасибо за ваш ответ, но я искал безопасное решение для магазина приложений. Я обновил вопрос. Если ничего не придет, я приму свой ответ. – Tibidabo