Я пытаюсь принудительно завершить работу моего Terminal.app с помощью Apple Script Editor.

tell application "Terminal"
    quit
end tell

tell application "System Events"
    key code 53
end tell

Это не похоже на работу. Как можно поступить и сделать это?

2 ответа2

0

Отправка команды quit и keystroke не означает принудительный выход. Я предполагаю, что решение, на котором вы остановились, оказалось работающим просто потому, что после того, как была введена команда quit , я предполагаю, что появилось диалоговое окно с вопросом, хотите ли вы принудительно выйти из терминала. Нажатие Enter - физически или программно - затем выберет предложенную вам опцию принудительного выхода.

Проблема с программной отправкой нажатия клавиши состоит в том, что, если фокус неожиданно переключается на другое окно в вашей системе, нажатие клавиши будет отправлено не в то окно.

Один из добросовестных методов принудительного выхода из приложения из AppleScript - получить его PID, а затем выполнить команду kill помощью сценария оболочки. На самом деле это всего лишь одна строка кода. Вот как бы это выглядело, когда используется для решения вашей ситуации (для удобства чтения отформатирован в две строки):

    tell application "System Events" to ¬
    do shell script "kill -9 " & unix id of process "Terminal"
0

Похоже, я нашел ответ на свой вопрос

tell application "Terminal"
    quit
    tell application "System Events"
        keystroke return
    end tell
end tell

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .