在 Mac OS X 上,我知道在 Cocoa 中我可以设置一个观察者来检测未来的屏幕保护程序事件或工作区锁定事件,如下所示:
- (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 install pyobjc-framework-Quartz
非常简单的代码 -
import Quartz
d = Quartz.CGSessionCopyCurrentDictionary()
print('CGSSessionScreenIsLocked' in d.keys())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)