Изменить разрешение экрана с помощью AppleScript
Я пытаюсь нажать на переключатели на панели "Дисплеи" системных настроек, а именно, чтобы изменить разрешение экрана. Это код, который я использую для определения переключателей:
tell application "System Preferences"
activate
reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
end tell
tell application "System Events"
tell application process "System Preferences"
set frontmost to true
get every radio button of window 0
--click button 1 of window 0 of application process "System Preferences" of application "System Events"
--click radio button "Scaled" of radio group of window "com.apple.preference.displays"
end tell
end tell
Вернулись переключатели - нет. Исходя из того, что я вижу, окно имеет нулевые переключатели. Это приводит к выводу, что переключатели являются частью подокна, а именно подокна "Дисплеи", а не основного окна. Как я могу перейти к этому "подокну" и щелкнуть радиокнопками?
1 ответ
Решение
Радио кнопки являются частью radio group
, Радиогруппа является частью tab group
,
Вот сценарий:
tell application "System Preferences"
activate
reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
end tell
tell application "System Events"
tell application process "System Preferences"
set frontmost to true
tell tab group 1 of window 1
click radio button 2 of radio group 1 -- "Scaled"
select row 2 of table 1 of scroll area 1 -- select the second row in the table to change the resolution of the monitor
end tell
end tell
end tell
Вместо этого вам понадобится Mac OS 10.15.
Установите 'q' на желаемую настройку кнопки дисплея (1-4)
set tabNum to q as number
tell application "System Preferences" to reveal pane "com.apple.preference.displays"
tell application "System Events" to tell process "System Preferences"
set activeWindow to window 1
repeat until exists activeWindow
end repeat
set tabGroup to tab group 1 of activeWindow
tell tabGroup to click radio button "Scaled"
set subGroup to group 1 of tabGroup
set radioGroup to radio group 1 of subGroup
tell radioGroup to click radio button tabNum
--log activeWindow
--delay 0.5
tell application "System Preferences"
quit
end tell
end tell