Question

Je suis en train d'activer ou de désactiver tout le contrôle dans une fenêtre que les changements de programme interactif en mode de non-interactif. Comment puis-je demander une fenêtre pour me donner tout son contenu?

every control of window "mainWindow"

ne fonctionne pas, ni

contents of window "mainWindow"

En fait, je ne l'ai pas été en mesure de trouver une bonne documentation pour interagir avec les éléments de menu du constructeur d'interface du tout. Des choses comme la façon de définir le contenu des popups et des boutons et ainsi de suite.

Merci

La façon dont je le fais à l'heure actuelle est:

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)

Je l'ai fait plusieurs listes de contrôles se tht activés ou désactivés en fonction de l'état du programme est. Mais il doit être codé en dur, que je ne vois pas comme étant la meilleure façon.

Était-ce utile?

La solution

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

Ce script vous donnera comme résultat tout le contenu de la fenêtre avant de Adium: butons de fenêtre, des barres d'outils de la fenêtre, les boutons de barres d'outils, etc. Profitez =]

Autres conseils

Je n'ai pas été en mesure de trouver un moyen d'obtenir toutes les commandes dans une fenêtre, mais voici un exemple d'interagir avec le menu d'un bouton contextuel:

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

est le même script que « BoB1990 » avec la possibilité de récupérer les informations données par obtenir tout le contenu de la fenêtre dans une chaîne dont vous pouvez observer ou modifier tous les éléments énumérés:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top