2012-03-15 48 views
4

我想阻止我的應用程序在用戶正在觀看電影,運行幻燈片放映或執行機器處於活動狀態的任何其他活動時執行某些操作使用但鼠標和鍵盤閒置。如何檢測應用程序(如Quicktime)是否阻止屏幕保護程序運行

我知道每30秒鐘撥打UpdateSystemActivity()可以防止屏幕保護程序被觸發,但我對是否有任何方法可以檢測到屏幕保護程序無法運行感興趣。

它必須是App Store的安全

回答

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 - 一些防止屏幕保護程序啓動的方法可能會不斷重置這一點。

+0

感謝您的回答,但我一直在尋找應用商店的安全解決方案。我更新了這個問題。如果沒有其他事情出現,我會接受你的答案。 – Tibidabo 2012-03-20 00:31:04

相關問題