Блокировка экрана на «Маке» из Си
CGSCreateLoginSession(NULL);
// теперь выдаёт
// Assertion failed: (sid != NULL), function CGSCreateLoginSession, file Services/Connection/CGSSession.c, line 418.Возможно
В общем, покапался я в заголовочных файлах, подбором и интуицией родил код, который блокирует экран
// получаем словарик с атрибутами текущей сессии
CFDictionaryRef dict = CGSCopyCurrentSessionDictionary();
// выбираем из него идентификатор текущей сессии, получаем его в виде int
CFNumberRef number = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("kCGSSessionIDKey"));
CGSSessionID currentSession;
CFNumberGetValue(number, kCFNumberIntType, ¤tSession);
// блокируем текущую сессию
CGSCreateLoginSession(¤tSession);Обновлённая версия лежит там же — на «Гитхабе».
Комментарии 3
gcc -o lightlock lightlock.c -framework IOKit -framework CoreFoundation -framework ApplicationServices