Domanda

Sto cercando di abilitare o disabilitare tutto il controllo in una finestra mentre il programma passa dalla modalità interattiva a quella non interattiva.Come posso chiedere ad una finestra di darmi tutto il suo contenuto?

every control of window "mainWindow"

non funziona, né funziona

contents of window "mainWindow"

In realtà, non sono riuscito a trovare alcuna documentazione valida per interagire con le voci di menu del generatore di interfacce.Cose come come impostare il contenuto dei popup, dei pulsanti e così via.

Grazie

Il modo in cui lo faccio al momento è:

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)

Ho creato diversi elenchi di controlli che vengono attivati ​​o disattivati ​​a seconda dello stato in cui si trova il programma.Ma deve essere codificato, il che non ritengo sia il modo migliore.

È stato utile?

Soluzione

tell application "System Events"
    tell process "Adium"
        get entire contents of window 1
    end tell
end tell

Questo script ti darà come risultato tutto il contenuto della finestra frontale di Adium:pulsanti della finestra, barre degli strumenti della finestra, pulsanti delle barre degli strumenti, ecc.Divertitevi =]

Altri suggerimenti

Non sono riuscito a trovare un modo per ottenere tutti i controlli in una finestra, ma ecco un esempio di interazione con il menu di un pulsante popup:

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

È lo stesso script di "BoB1990" con la possibilità di recuperare le informazioni fornite ottenendo l'intero contenuto della finestra in una stringa di cui è possibile osservare o modificare tutti gli elementi elencati:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top