测试屏幕保护程序是否正在运行或工作空间是否已锁定 [英] Test if screensaver is running or workspace is locked

查看:150
本文介绍了测试屏幕保护程序是否正在运行或工作空间是否已锁定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

On Mac OS X, I know in Cocoa I can set up a observer for detecting future screen saver events or workspace lock events, like this:

- (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;
}

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

But before I add these observers, is there any way to test if a screensaver is running, or if the workspace is locked?

推荐答案

您可以使用-

pgrep ScreenSaverEngine

您可以使用-

while true
do
pgrep ScreenSaverEngine
sleep 1
done

然后打开屏幕保护程序.

and then turning on the screensaver.

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

For checking the lockscreen -
Install quartz -
pip install pyobjc-framework-Quartz

很多简单的代码-

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

这篇关于测试屏幕保护程序是否正在运行或工作空间是否已锁定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆