如何检查osx上登录窗口/屏幕的状态

时间:2014-11-10 05:52:59

标签: objective-c macos

我已经编写了以下代码来显示登录窗口/屏幕。

system("/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend");

这很好用。是否有可能检测到该屏幕是否消失(即当用户再次登录时它会消失)?

1 个答案:

答案 0 :(得分:3)

您可以像这样使用NSDistributedNotificationCenter

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [[NSDistributedNotificationCenter defaultCenter] addObserverForName:@"com.apple.sessionDidMoveOffConsole" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSLog(@"user inactive");
    }];

    [[NSDistributedNotificationCenter defaultCenter] addObserverForName:@"com.apple.sessionDidMoveOnConsole" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSLog(@"user active");
    }];
}

修改

我发现通过订阅所有分发的通知并找到在这个合适的时刻发生的通知,并逐步将它们减少到剩下的两个通知。

我注意到100%确定它可以毫无问题地工作。我无法找到任何相关文档,因此您可能需要测试测试并搜索边缘情况。