gpt4 book ai didi

objective-c - 测试屏幕保护程序是否正在运行或工作区是否已锁定

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

在 Mac OS X 上,我知道在 Cocoa 中我可以设置一个观察者来检测 future 的屏幕保护程序事件或工作区锁定事件,如下所示:

- (id)init {
if ((self = [super init])) {
NSDistributedNotificationCenter* distCenter =
[NSDistributedNotificationCenter defaultCenter];
[distCenter addObserver:self
selector:@selector(onScreenSaverStarted:)
name:@"com.apple.screensaver.didstart"
object:nil];
[distCenter addObserver:self
selector:@selector(onScreenSaverStopped:)
name:@"com.apple.screensaver.didstop"
object:nil];
[distCenter addObserver:self
selector:@selector(onScreenLocked:)
name:@"com.apple.screenIsLocked"
object:nil];
[distCenter addObserver:self
selector:@selector(onScreenUnlocked:)
name:@"com.apple.screenIsUnlocked"
object:nil];
}
return self;
}

但是在添加这些观察者之前,有什么方法可以测试屏幕保护程序是否正在运行,或者工作区是否被锁定?

最佳答案

您可以通过使用 - 检查 ScreenSaverEngine 进程是否正在运行来检查屏幕保护程序是否正在运行

pgrep ScreenSaverEngine

你可以尝试使用 -

while true
do
pgrep ScreenSaverEngine
sleep 1
done

然后打开屏幕保护程序。

<小时/>

用于检查锁屏 -
安装quartz -
pip 安装 pyobjc-framework-Quartz

非常简单的代码 -

import Quartz
d = Quartz.CGSessionCopyCurrentDictionary()
print('CGSSessionScreenIsLocked' in d.keys())

关于objective-c - 测试屏幕保护程序是否正在运行或工作区是否已锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27514778/

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