2012-03-15 10 views
4

ユーザーがムービーを見ているとき、スライドショーを実行しているとき、またはマシンがアクティブになっているときにアプリが特定のことをしないようにしたいマウスとキーボードはアイドル状態です。アプリケーション(Quicktimeなど)がスクリーンセーバーの実行を妨げていることを検出する方法

私はUpdateSystemActivity()を呼び出して30秒ごとにスクリーンセーバーが発射されるのを防ぎますが、スクリーンセーバーが実行されているかどうかを検出できる方法があるかどうかは興味があります。

それは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 

そして、ここではそれを使用する方法は次のとおりです。あなたがこれを使用するScreenSaverフレームワークにリンクする必要があります

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

注意。これは文書化されていないクラスなので、あなたのアプリケーションはMac App Storeの資格がありません。

また、screenSaverTimeRemainingをご覧ください。スクリーンセーバーの起動を妨げるいくつかの方法が、これを継続的にリセットすることがあります。

+0

ありがとうございますが、私はアプリストアの安全なソリューションを探していました。私は質問を更新しました。他に何も来なければ、私はあなたの答えを受け入れます。 – Tibidabo

関連する問題