Предотвращение выхода пользователя из системы или завершения работы

Я разрабатываю приложение для Mac OS, и одно из требований заключается в том, чтобы это приложение блокировало пользователя от выхода из системы или выключения компьютера, если пользователь не завершил некоторые задачи в приложении. Можно ли добиться этого с помощью Cocoa или Carbon? Если да, то как я могу реализовать такую ​​​​функциональность?

Спасибо


person Raphael    schedule 12.03.2012    source источник


Ответы (2)


Этого можно добиться в режиме киоска (документация). . Обратите внимание, что часто есть обходные пути.

person Dietrich Epp    schedule 12.03.2012
comment
Это сделало это. Большое Вам спасибо. - person Raphael; 13.03.2012

Когда пользователь пытается выйти из системы или завершить работу, система попросит закрыть все приложения. Если какие-либо приложения отказываются выходить, действие будет отменено. Поскольку вы хотите отменить эти действия, вы, вероятно, также захотите предотвратить нормальное завершение работы приложения. В рамках последовательности завершения приложение запрашивает разрешение у своего делегата. Таким образом, чтобы отменить выход из системы и завершение работы, а также предотвратить выход пользователя из вашего приложения в обычном режиме, вы можете использовать делегат приложения для отказа в действии.

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
    if([self shouldPreventTermination])
        return NSTerminateCancel;
    return NSTerminateNow;
}
person ughoavgfhw    schedule 12.03.2012
comment
В то время как первый ответ показал, как предотвратить выход пользователя из системы, скрыв меню, ваш дополнил это, показав, как предотвратить выход пользователя из приложения. Спасибо. - person Raphael; 13.03.2012