Applescript studio: come posso ottenere tutti i controlli in una finestra
-
22-09-2019 - |
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.
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