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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…