Студия 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
Другие вопросы по тегам