Objective c 如何检查osx上登录窗口/屏幕的状态
我已经为显示登录窗口/屏幕编写了以下代码Objective c 如何检查osx上登录窗口/屏幕的状态,objective-c,macos,Objective C,Macos,我已经为显示登录窗口/屏幕编写了以下代码 system("/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend"); 这很好用。是否可以检测此屏幕是否消失(即,当用户再次登录时,它将消失)?您可以像这样使用NSDistributedNotificationCenter: - (void)applicationDidFinishLaunching:(NSNotifica
system("/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend");
这很好用。是否可以检测此屏幕是否消失(即,当用户再次登录时,它将消失)?您可以像这样使用
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");
}];
}
编辑
我发现,通过订阅所有分布式通知,找到此时此刻发生的通知,并逐步将它们减少到剩下的两个
我百分之百肯定它能正常工作。我找不到关于此的任何文档,因此您可能需要测试并搜索边缘案例。您可以使用
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");
}];
}
编辑
我发现,通过订阅所有分布式通知,找到此时此刻发生的通知,并逐步将它们减少到剩下的两个
我百分之百肯定它能正常工作。我找不到关于此的任何文档,因此您可能需要测试并搜索边缘案例。您可以使用
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");
}];
}
编辑
我发现,通过订阅所有分布式通知,找到此时此刻发生的通知,并逐步将它们减少到剩下的两个
我百分之百肯定它能正常工作。我找不到关于此的任何文档,因此您可能需要测试并搜索边缘案例。您可以使用
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");
}];
}
编辑
我发现,通过订阅所有分布式通知,找到此时此刻发生的通知,并逐步将它们减少到剩下的两个
我百分之百肯定它能正常工作。我找不到这方面的任何文档,因此您可能需要测试并搜索边缘案例。@FaisalIkwal:欢迎!很好,我能帮忙。请阅读我的编辑;这并没有正式的文档记录,所以我们不知道边缘情况。但是谷歌除了快速的用户切换之外什么都没有,所以我敢打赌它会的work@FaisalIkwal:欢迎!很好,我能帮忙。请阅读我的编辑;这并没有正式的文档记录,所以我们不知道边缘情况。但是谷歌除了快速的用户切换之外什么都没有,所以我敢打赌它会的work@FaisalIkwal:欢迎!很好,我能帮忙。请阅读我的编辑;这并没有正式的文档记录,所以我们不知道边缘情况。但是谷歌除了快速的用户切换之外什么都没有,所以我敢打赌它会的work@FaisalIkwal:欢迎!很好,我能帮忙。请阅读我的编辑;这并没有正式的文档记录,所以我们不知道边缘情况。但是谷歌搜索除了快速用户切换之外什么都没有,所以我敢打赌它会起作用