从命令行锁定屏幕与OS X上的Keychain Access一样

 QuincySwim 发布于 2023-02-13 15:14

我注意到/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend和Keychain Access的锁定屏幕(打开它的首选项,检查'在菜单栏中显示钥匙串状态'然后从状态栏图标点击锁定屏幕.)具有不同的功能.有没有办法从命令行通过Terminal.app或Cocoa API运行Keychain Access的锁屏?

Mac OS 10.9.谢谢!

1 个回答
  • 我刚刚找到了解决方案:https://apple.stackexchange.com/a/123738/72534

    #import <objc/runtime.h>
    #import <Foundation/Foundation.h>
    
    int main () {
        NSBundle *bundle = [NSBundle bundleWithPath:@"/Applications/Utilities/Keychain Access.app/Contents/Resources/Keychain.menu"];
    
        Class principalClass = [bundle principalClass];
    
        id instance = [[principalClass alloc] init];
    
        [instance performSelector:@selector(_lockScreenMenuHit:) withObject:nil];
    
        return 0;
    }
    

    另存为lockscreen.m并编译:

    clang -framework Foundation -o lockscreen lockscreen.m
    

    完美地工作,因为它只调用与状态栏图标相同的例程.

    2023-02-13 15:17 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有