Je ne sais pas si vous vous en rendez compte, mais les clés de voûte envoyé par Événements du système va vers l'actif fenêtre la plus à l'avant de la application frontale et en tant que telle, la cible doit rester le plus avant et vous ne pouvez pas utiliser l'ordinateur pour autre chose pendant que le processus se déroule.
El exemple AppleScript code montré ci-dessous, a été testé sous MacOS Catalina comme un AppleScript demande d'ouverture permanente avec Langue et région paramètres dans Préférences du système réglé sur Anglais (US) - Primaire et a fonctionné pour moi sans problème 1 .
- 1 Assume la mise en place nécessaire et appropriée dans <strong>Préférences du système </strong>> <strong>Sécurité et confidentialité </strong>> <strong>Vie privée </strong>ont été fixés/réglés selon les besoins.
En scriptÉditeur copier et coller le exemple AppleScript code dans un nouveau document et changez "TextEdit"
y "Untitled"
aux valeurs appropriées pour la cible application y fenêtre vous voulez le les clés de voûte pour aller à. Les valeurs existantes étaient destinées à des fins de test.
Lors de la sauvegarde, sur le Sauvez comme : feuille le changement Format de fichier : a [Application] et sous Options : vérifier le [] Rester ouvert après le gestionnaire d'exécution case à cocher .
Exemple AppleScript code :
property appName : "TextEdit"
property winName : "Untitled"
global theCounter
on run
set theCounter to 0
delay 60
end run
on idle
my isItTimetoSendKeystroke()
return 60
end idle
on isItTimetoSendKeystroke()
set theCounter to theCounter + 1
if (theCounter mod 2) = 0 then
my sendKeystroke("a")
my sendKeystroke("a")
end if
if (theCounter mod 30) = 0 then
my sendKeystroke("b")
end if
if (theCounter mod 60) = 0 then
my sendKeystroke("C")
end if
end isItTimetoSendKeystroke
to sendKeystroke(thisKey)
tell application "System Events"
tell application process appName
set frontmost to true
perform action "AXRaise" of window winName
keystroke thisKey
end tell
end tell
end sendKeystroke
on quit
continue quit
end quit
Notes :
Si vous vous contentez d'automatiser la saisie de texte dans une zone de texte ou un document, vous pouvez supprimer l'un des éléments suivants my sendKeystroke("a")
et changer l'autre en my sendKeystroke("aa")
sinon, si l'on simule une clé pour, disons, un jeu, vous voudrez probablement l'utiliser tel qu'il est actuellement codé.
Scripting de l'interface utilisateur peuvent être maladroites et sujettes à l'échec.
Quelques applications ne répondra pas à keystroke
et ou key code
commandes de Événements du système car elles sont conçues pour ne pas répondre à ce type de problème. événement de cette manière. Jeux sont le type typique de application qui peuvent ne pas répondre.
Personnellement, je n'aime pas ce type de Scripting de l'interface utilisateur et j'ai posté ce document comme une preuve de concept. D'après mon expérience, certains AppleScript les applications ouvertes en permanence peut, avec le temps, consommer plus de mémoire et finir par planter. Ils peuvent également faire tourner les ventilateurs et les maintenir à des vitesses élevées. Cela a probablement plus à voir avec certaines des technologies de l'information et de la communication. code Cependant, en règle générale, j'essaie d'accomplir la tâche d'une manière différente qui ne soit pas gourmande en ressources, si possible.
Crédit à Tetsujin pour son commentaire à l'OP, qui était la base de cette réponse.
Note : Le <em>exemple </em><strong>AppleScript </strong><em>code </em>est juste cela et sans aucune inclusion <em>gestion des erreurs </em>ne contient pas d'autres <em>gestion des erreurs </em>comme il se doit. C'est à l'utilisateur qu'il incombe d'ajouter toute <em>traitement des erreurs </em>selon ce qui est approprié, nécessaire ou souhaité. Jetez un coup d'œil à la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>essayez </strong></a><em>déclaration </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>erreur </strong></a><em>déclaration </em>dans le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guide du langage AppleScript </strong></a>. Voir aussi, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Travailler avec des erreurs </strong></a>. En outre, l'utilisation de la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retarder </strong></a><em>commande </em>peut être nécessaire entre les événements, le cas échéant, par ex. <code>delay 0.5</code> avec le <em>valeur </em>de la <em>retarder </em>définis de manière appropriée.