2010-03-24 7 views
0

J'essaie d'activer ou de désactiver tout le contrôle dans une fenêtre lorsque le programme passe du mode interactif au mode non interactif. Comment puis-je demander à une fenêtre de me donner tout son contenu?Studio Applescript - comment obtenir chaque contrôle dans une fenêtre

every control of window "mainWindow" 

ne fonctionne pas, ni ne

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 les boutons et ainsi de suite.

grâce

La façon dont je le fais en ce moment 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) 

J'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, ce que je ne considère pas comme le meilleur moyen.

Répondre

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

Ce script vous donner comme résultat tout le contenu de la fenêtre d'Adium: boutons de fenêtre, barres d'outils, boutons de barres d'outils, etc. Enjoy =]

+0

"tout le contenu" Whoda le thunk? Merci pour ça. – stib

0

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 
+0

Merci. Malheureusement, je veux désactiver les boutons contextuels (et les boutons, les curseurs et les champs de texte, etc.) et non les éléments de menu qui s'y trouvent. – stib

0

Est le même script que "BoB1990" avec la possibilité de récupérer le information donnée par obtenir le contenu entier de la fenêtre dans une chaîne de laquelle 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 
+0

est le même script que "BoB1990" avec la possibilité de récupérer l'information donnée en récupérant le contenu entier de la fenêtre dans une chaîne dont vous pouvez observer ou modifier tous les éléments listés: – deek5

Questions connexes