6
votes

Comment faire défiler vers le haut d'une fenêtre à l'aide de AppleScript?

Je veux que AppleScript fait défiler une fenêtre tout en place.

J'ai essayé la clé de page, la clé d'accueil et j'ai essayé de chercher un moyen de faire défiler les capacités de défilement intégrées de la fenêtre, mais je n'ai pas encore été incapable de déplacer le défilement défilé. position du tout.


0 commentaires

3 Réponses :


10
votes

Fondamentalement, utilisez un Informations sur l'application "Événements système" Code> pour envoyer des clés et des codes de clé. En théorie, vous pouvez utiliser ce qui suit: xxx pré>

mais pour moi cela ne fonctionne pas. La bonne nouvelle est que vous pouvez utiliser les codes de clé à la place. Je suggère d'utiliser l'excellent libre Codes de clé complète Application pour les lire, bien qu'il soit un peu délicat Pour le laisser lire deux touches enfoncées simultanément. p>

Les codes de clé pour les touches de la flèche FN kbd> + sont comme suit: p> Page Up: fn kbd> + clé up kbd>: code de clé 116 code> p>

page bas: fn KBD> + Touche Down kbd>: code de clé 121 code> p>

Accueil: fn kbd> + touche gauche kbd> : code de clé 115 code> p>

fin: fn kbd> + clé de droite kbd>: code clé 119 code>

Ainsi, par exemple si vous avez eu une page longue dans Safari, et que vous souhaitez faire défiler à sa fin, utilisez P>

tell application "System Events"
tell application "Safari" to activate
    — to see the animation, we wait a moment:
    delay 0.5  

    key code 119

end tell


2 commentaires

Fantastique. Merci. J'ai essayé beaucoup de choses, dont beaucoup étaient similaires à votre solution, mais ils n'étaient pas tout à fait corrects. Cela fonctionne comme un charme.


Malheureusement, l'utilitaire de clavier référencé est obsolète (écrit pour la plate-forme PowerPC). Code de clé ( iTunes.Apple. COM / US / APP / CODES DE TOLE / ID414568915? MT = 12 ) est une alternative qui est toujours maintenue (et est également gratuite).



2
votes

L'alternative à l'envoi de KeysTrokes consiste à utiliser script de l'interface graphique forte> .

CAVEAT STRUT>: tandis que les scripts d'interface graphique sont plus robustes forts> que d'envoyer des frappes de frappe pour une version donnée em> d'une application, des modifications de la disposition de l'application dans Les versions futures peuvent casser votre code strong>. P>

Aussi: p>

  • Les scripts de l'interface graphique de l'interface graphique nécessitent que Accès aux appareils d'assistance forts> être activé; Activation nécessite des privilèges d'administration: P>

    • jusqu'à 10.8, cela pourrait être fait programmatiquement em>, large em> par exécution indiquer l'application "Événements système" pour définir des éléments UI activés à True Code> (privilèges d'administration requis) LI>
    • Malheureusement, sur 10.9+, cela ne fonctionne plus, et les applications doivent être autorisées manuellement, individuellement em> - le système vous invitera à la première exécution (nécessite des privilèges administrateurs) li>
    • Toutefois, dans les deux scénarios Inversez l'application "Événements système" pour obtenir des éléments UI activés code> Signaler em> si l'accès est activé ou non. Li> ul> li>
    • Déterminer les bonnes cibles d'élément d'interface utilisateur peut être non triviale et fastidieuse forte>; Utilisation de l'inspecteur Inspecteur d'accessibilité code> fourniture avec xcode code> aide. Les noms de classe rapportés par cet utilitaire correspondent aux classes code> UI code> contenues dans le dictionnaire code> système système code>; E. g., Axsplittgroup code> correspond à groupe de séparateur code>. p> li> ul>

      Les parchemins suivants Safari 6.0.3 Code> S Fenêtre avant en haut (Accès aux périphériques d'assistance doit être activé): P>

      tell application "System Events"
      
          # Use Accessibility Inspector to find the desired target.
          tell front window of process "Safari"
              tell scroll bar 1 of scroll area 1 of group 1 of group 1 of group 2
                  set value of attribute "AXValue" to 0  # Scroll to top.
              end tell
          end tell
      
      end tell
      


0 commentaires

4
votes

Avec les navigateurs Vous pouvez également utiliser JavaScript:

tell application "Safari" to tell document 1
    do JavaScript "window.scroll(0,0)"
end tell

tell application "Google Chrome" to tell active tab of window 1
    execute javascript "window.scroll(0,0)"
end tell


1 commentaires

Bien que cela ne fonctionne que pour les deux applications de navigateur indiqués, il présente deux avantages: il est plus robuste que l'approche d'envoi de frappe de frappe, et elle n'exige pas l'autorisation d'accès assistif, contrairement à l'approche de script de l'interface graphique.