Я собираюсь присоединиться здесь с третьим вкладом, поскольку я по общему признанию не люблю оба сценария, опубликованные до сих пор, хотя я полностью согласен с советом @ vadian о проверке на существование.
Моя первая проблема: нет необходимости activate
Системные настройки . Работает в фоновом режиме и совершенно незаметно.
Во-вторых, совсем не нужно разбираться в том, какую строку нужно выбрать, и как ее идентифицировать: Системные настройки , наряду с panes
, имеет ряд anchors
, один из которых ведет вас прямо к разделу «Дисплей».
Часть сценариев пользовательского интерфейса only , которая является прискорбной необходимостью в данном случае, заключается в получении доступа к флажку и его нажатии.
Результат скрипта, приведенный ниже, должен показаться вам более приятным из-за того, что непонятная Системные настройки * Роль 1019 * выглядит как во время выполнения, когда она, по-видимому, не может появиться.
use prefs : application "System Preferences"
use sys : application "System Events"
property process : a reference to application process "System Preferences"
property window : a reference to window 1 of my process
property pane : a reference to pane id "com.apple.preference.universalaccess"
property anchor : a reference to anchor "Seeing_Display" of my pane
property checkbox : a reference to checkbox "Use grayscale" of my window
contents of my anchor = (reveal my anchor)
if the result = false then return
with timeout of 60 seconds
repeat until my checkbox exists
delay 0.5
end repeat
end timeout
click my checkbox
quit prefs
Информация о системе: Версия AppleScript : "2,7", версия системы : "10.13.6"