AppleScript, чтобы выйти из системы Mac пользователя после закрытия приложения?

Я настроил локальную учетную запись пользователя в iMac (Lion) для немедленного запуска Firefox на определенной странице после входа в систему - страница содержит опрос, который должен выполнить пользователь. Это отлично работает.

Что я хочу сделать дальше, но не могу понять, как автоматически отключить пользователя после завершения опроса и выхода из Firefox.

Я не хочу, чтобы им приходилось щелкать значок Apple вверху, а затем выходить из системы - когда они завершат опрос и выйдут из Firefox, я бы хотел, чтобы выполнялся скрипт, который выводит их из системы и возвращает Mac обратно на экран входа в систему. для следующего пользователя.

Можно ли связать сценарий и выполнить его при выходе из приложения?

2 ответа

Клавиатура Maestro может быть настроена на выполнение сценариев при закрытии приложения.

Сохранить список свойств как это ~/Library/LaunchAgents/com.superuser.457047.plist (или любой другой, на который вы меняете ярлык) и загружаете его launchctl load ~/Library/LaunchAgents/com.superuser.457047.plist или выйдя и вернувшись.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.superuser.457047</string>
    <key>ProgramArguments</key>
    <array>     
        <string>osascript</string>
        <string>-e</string>
        <string>tell application "System Events" to if (not (exists process "firefox")) or number of windows of process "firefox" is 0 then tell process "Finder" to click last menu item of menu 1 of menu bar 1</string>
    </array>
    <key>StartInterval</key>
    <integer>5</integer> <!-- run every 5 seconds -->
</dict>
</plist>

Вероятно, в некоторых случаях нажатие на последний пункт меню не сработает. keystroke "q" using {option down, shift down, command down} не будет работать, если пользователь держит контроль

tell application "System Events" to log out покажет диалоговое окно подтверждения.

/System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend не показывает диалоговое окно подтверждения, но держит пользователя вошедшим в систему и показывает экран быстрого переключения пользователя.

Другие вопросы по тегам