Студия Applescript - как получить каждый элемент управления в окне - PullRequest
0 голосов
/ 24 марта 2010

Я пытаюсь включить или отключить все элементы управления в окне, когда программа переходит из интерактивного в неинтерактивный режим. Как я могу попросить окно дать мне все его содержимое?

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 ]

2 голосов
/ 11 мая 2010
tell application "System Events"
    tell process "Adium"
        get entire contents of window 1
    end tell
end tell

Этот скрипт даст вам в итоге все содержимое переднего окна Adium: кнопки окна, панели инструментов окна, кнопки панелей инструментов и т. Д. Наслаждайтесь =]

0 голосов
/ 07 ноября 2016

Это тот же сценарий, что и «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
0 голосов
/ 25 марта 2010

Мне не удалось найти способ получить все элементы управления в окне, но вот пример взаимодействия с меню всплывающей кнопки:

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
...