Applescript для переключения отображения в режим оттенков серого - PullRequest
0 голосов
/ 17 сентября 2018

Попытка заставить AppleScript работать, который переключит режим отображения в оттенки серого.

На основании этого другой скрипт, которому было несколько лет.Apple изменила конфигурацию панели «Системные настройки» с тех пор, что сломал скрипт.

Не могу понять, как заставить его перейти в пункт меню «Дисплей» на панели специальных возможностей.

tell application "System Preferences"
activate
reveal (pane id "com.apple.preference.universalaccess")
end tell


tell application "System Events"
    tell process "System Preferences"
        tell window "Accessibility"
            tell table 1 of scroll area 1
                delay 1
                select (row 4)
            end tell
            click checkbox "Use grayscale"
        end tell
    end tell
end tell
tell application "System Preferences" to quit

Любая помощь очень ценится!

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Если вы собираетесь создавать сценарии пользовательского интерфейса, убедитесь, что определенные элементы пользовательского интерфейса существуют, прежде чем их использовать.Наиболее эффективным способом является повторный цикл.

И вместо выбора номера строки сценарий выбирает строку с именем Display.

Если сценарий будет использоваться в локализованной среде, используйтелокализованные строки для Accessibility, Display и Use grayscale

tell application "System Preferences"
    activate
    reveal pane id "com.apple.preference.universalaccess"
end tell

tell application "System Events"
    tell process "System Preferences"
        repeat until exists window "Accessibility"
            delay 0.1
        end repeat
        tell window "Accessibility"
            try
                select (first row of table 1 of scroll area 2 whose name of UI element 1 is "Display")
                click checkbox "Use grayscale"
            end try
        end tell
    end tell
end tell
quit application "System Preferences"
0 голосов
/ 17 сентября 2018

Я собираюсь присоединиться здесь с третьим вкладом, поскольку я по общему признанию не люблю оба сценария, опубликованные до сих пор, хотя я полностью согласен с советом @ 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"

0 голосов
/ 17 сентября 2018

Для macOS High Sierra, ответ был любезно размещен в комментариях к этой статье , так что все благодарности оригинальному автору.

tell application "System Preferences"
    activate
    set the current pane to pane id "com.apple.preference.universalaccess"
    delay 1 # needs time to open universal access
    tell application "System Events" to tell process "System Preferences" to tell window "Accessibility"
        tell scroll area 2 to tell table 1 to tell row 6 #open display preferences

            select

        end tell

        click checkbox "Use grayscale"
    end tell
end tell

tell application "System Preferences" to quit

Это работает для меня в macOS 10.130,5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...