gpt4 book ai didi

macos - 如何检测应用程序(例如 Quicktime)正在阻止屏幕保护程序运行

转载 作者:行者123 更新时间:2023-12-03 16:15:26 25 4
gpt4 key购买 nike

当用户正在观看电影、运行幻灯片或执行机器正在使用但鼠标和键盘处于空闲状态的任何其他事件时,我希望阻止我的应用执行某些操作。

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

它必须是 App Store 安全的

最佳答案

我的笔记说有一种方法可以使用未记录的类 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 - 某些阻止屏幕保护程序启动的方法可能会不断重置此屏幕保护程序。

关于macos - 如何检测应用程序(例如 Quicktime)正在阻止屏幕保护程序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com