Lock screen by API in macOS

后端 未结 8 1879
梦如初夏
梦如初夏 2020-12-12 16:49

Is there an API, that can lock the screen as the menu bar entry you can add from Keychain preferences?

This Keychain function is (was) lock

8条回答
  •  鱼传尺愫
    2020-12-12 17:23

    It's not officially documented and uses private API, but the following works on MacOS 10.10 (and maybe also on earlier systems):

    // lockscreen.c
    extern int SACLockScreenImmediate ( void );
    
    int main ( ) {
        return SACLockScreenImmediate();
    }
    

    Build with:

    clang -F /System/Library/PrivateFrameworks -framework login -o lockscreen lockscreen.c 
    

    Now calling ./lockscreen will lock the screen immediately, regardless what the user has configured in their security preferences (whether to lock on screensaver/system sleep) and without logging the user out. This is the function the system uses internally for locking the screen.

    I strongly discourage using it, it may break your app and I'm not even sure I am calling it correctly (maybe it needs arguments, maybe it has a return value), so it may even break your whole system (temporarily - reboot will fix everything), who knows. I just wanted to post that somewhere for documentation.

    If someone with better hacker skills than me can analyze this call some more, this would be nice and useful.

提交回复
热议问题