0 votes

Comment puis-je convertir un chemin d'éléments d'interface utilisateur en chaîne de caractères/texte?

Je suis en train d'utiliser le code suivant pour obtenir le chemin de l'élément d'interface utilisateur pour l'emplacement du pointeur de la souris.

use framework "Foundation"

property NSEvent : a reference to current application's NSEvent
property NSScreen : a reference to current application's NSScreen

-- # Obtenir la taille de l'écran
set display to NSDeviceSize ¬
    of deviceDescription() ¬
    of item 1 ¬
    of NSScreen's screens() as record

delay 3

-- # Obtenir l'emplacement de la souris (par rapport au bas de l'écran)
set mouseLocation to {x, y} of (NSEvent's mouseLocation as record)

-- # Calculer la coordonnée y de la souris pour qu'elle soit relative au haut de l'écran
set mouseLocation's item 2 to (display's height) - (mouseLocation's item 2)

tell application "System Events"
    click at the mouseLocation
end tell

Le résultat renvoyé sera quelque chose comme:

zone de texte 1 de la zone de défilement 1 du groupe séparateur 1 du groupe séparateur 1 de la fenêtre "Sans titre.scpt" du processus d'application "Éditeur de script" de l'application "Événements système"

Je souhaite pouvoir opérer sur ceci en tant que chaîne de texte pour les sorties de débogage de Keyboard Maestro, mais je ne sais pas comment convertir ce genre de chaîne/chemin d'éléments d'interface utilisateur en une chaîne de texte. S'il vous plaît aidez-moi!

0voto

red_menace Points 1014

Vous pouvez utiliser une ancienne astuce qui force une erreur pour obtenir une chaîne de message. Le principal problème est que essayer de faire quelque chose comme forcer la référence d'objet directement supprime les termes de script, alors vous vous retrouvez avec la syntaxe de chevron brute. Si ce n'est pas ce que vous voulez, vous pouvez laisser AppleScript générer son propre texte d'erreur de coercition, par exemple:

# Obtenir le texte de la référence d'objet
tell application "System Events"
   try
      élément UI (cliquez à l'emplacement de la souris) -- forcer une erreur de coercition
      --> "bouton 2 de la barre d'outils 1 de la fenêtre \"Sans titre 1.scpt\" du processus de l'application \"Script Editor\""

      -- aussi --
      # (cliquez à l'emplacement de la souris) en tant que texte
      --> "«class butT» 2 de «class tbar» 1 de la fenêtre \"Sans titre 1.scpt\" de «class pcap» \"Script Editor\" de l'application \"System Events\""

   on error errmess -- extraire la référence du message d'erreur (anglais)
      journal errmess
      définir ici à (décalage de "Impossible de faire " dans errmess) + 11 -- note guillemet typographique
      définir là à -(décalage de "\"" dans (renverser des caractères de errmess) en tant que texte) -- dernier guillemet du nom du processus
      retourner texte ici jusqu'à là de errmess
   end try
end tell

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X