Студия Applescript - как получить каждый элемент управления в окне
Я пытаюсь включить или отключить все элементы управления в окне, когда программа переходит из интерактивного в неинтерактивный режим. Как я могу попросить окно дать мне все его содержимое?
every control of window "mainWindow"
не работает и не работает
contents of window "mainWindow"
На самом деле, я не смог найти какой-либо хорошей документации для взаимодействия с пунктами меню от разработчика интерфейса. Такие вещи, как, как установить содержимое всплывающих окон, кнопок и так далее.
Спасибо
То, как я делаю это сейчас:
property onlineControls: {"maxLength", "speed", "accelerationSlider", "accelerationField", "showInfo"} --and so on, listing all the controls by name
on enableControls(theList, enableState)
tell window "mainWindow"
repeat with theControl in theList
set the enabled of control theControl to enableState
end repeat
end tell
enableControls(onlineControls, true)
Я сделал несколько списков элементов управления, которые включаются или выключаются в зависимости от состояния, в котором находится программа. Но он должен быть жестко запрограммирован, что я не считаю лучшим способом.
3 ответа
tell application "System Events"
tell process "Adium"
get entire contents of window 1
end tell
end tell
Этот скрипт даст вам в результате все содержимое переднего окна Adium: кнопки окна, панели инструментов окна, кнопки панелей инструментов и т. Д. Enjoy =]
Я не смог найти способ получить все элементы управления в окне, но вот пример взаимодействия с меню всплывающей кнопки:
tell menu of popup button "somePopupButton" of window "mainWindow"
delete every menu item
repeat with i in someItems
make new menu item at end of menu items ¬
with properties {title:i, enabled:true}
end repeat
end tell
Это тот же сценарий, что и "BoB1990" с возможностью возврата информации, полученной путем получения всего содержимого окна в виде строки, в которой вы можете наблюдать или изменять все перечисленные элементы:
tell application "System Events" to tell process "Adium"
set this_info to {}
try
display alert ((get entire contents of window (x as integer)))
on error errMsg set theText to errMsg
set this_info to do shell script " echo " & theText & " | sed 's#System Events got an error: Can’t make ##g;s# into type string.##g'"
end try
set info to {}
set info to do shell script " echo " & this_info
display alert (info)
end tell