Liste de toutes les fenêtres de toutes les applications
Je suis en train d'écrire un script applescript qui se redimensionne toutes les fenêtres ouvertes. Afin de s'assurer que je suis arriver à toutes les fenêtres, je suis en train de faire mon script dire le nom de l'application ainsi que le nombre de fenêtres ouvertes de la demande.
Fait intéressant, alors que j'entends le nom de toutes mes applications ouvertes, mon script dit qu'ils ont tous 0 les fenêtres ouvertes. Comment puis-je résoudre ce problème?
Voici mon code:
tell application "System Events"
repeat with theProcess in (every process)
if background only of theProcess is false then
if name of theProcess is not "Finder" then
if name of theProcess is "Google Chrome" then
say "Chrome woo hoo"
say (count windows as string)
else
say name of theProcess as string
say (count windows as string)
tell theProcess
repeat with theWindow in windows
say "found a window of"
say (name of theProcess) as string
tell theWindow
click button 2
end tell
end repeat
end tell
end if
end if
end if
end repeat
end tell
Je suis sur Mac OS X 10.7.5, à l'aide d'automator 2.2.4 écrire/exécuter cette applescript
Sauf si l'application vous interrogez explicite du soutien pour répondre à chacun de windows (ce qui est le cas dans la plupart des navigateur des applications comme Firefox et Safari, mais n'est probablement pas le cas dans la plupart des autres applications), je suppose que vous devez avoir un certain aspect de la "Accessibilité" dans les préférences en marche afin d'obtenir une poignée à toutes les fenêtres dans d'autres applications.
seriez-vous en mesure de m'indiquer la valeur exacte que je dois changer et dans lequel prefpane?
seriez-vous en mesure de m'indiquer la valeur exacte que je dois changer et dans lequel prefpane?
OriginalL'auteur inspectorG4dget | 2013-01-27
Vous devez vous connecter pour publier un commentaire.
Vous devez indiquer le processus à compter de windows. Après tout, c'est le processus qui sait sur ses fenêtres, ne pas les événements du système.
Vous avez dit que le processus de dire son nom, par exemple "dire le nom de processus comme une chaîne de caractères" toutefois vous utilisez uniquement "dire (le comte de windows as string),"... aucun processus est lié à que. Essayez "le comte de windows de processus". Fondamentalement, vous avez les lignes où, parfois, vous dire le processus, d'autres fois vous ne le faites pas, et d'autres moments où vous dites le processus, même si vous avez déjà dit à tout le processus, afin de vous la faire deux fois. C'est là que vous avez "dire (nom de processus) as string", mais que le code est à l'intérieur de l'approche "processus" bloc il est donc déjà été dit pour le processus.
Vraiment vous avez besoin de passer par votre code, et d'être plus précis. Un conseil... si vous voulez vous cliquez sur un bouton dans une fenêtre à la fenêtre doit être au premier plan sur l'écran, sinon vous ne pouvez pas cliquer dessus. Une autre astuce... "nom" est déjà une chaîne de sorte que vous n'avez pas besoin de les contraindre à une chaîne.
En passant, je suis d'accord avec Michael Dautermann commentaire sur ton post... il y aura des processus où vous ne pourrez pas obtenir l'accès. Mais vous verrez que comme vous le progrès.
Voici comment j'aurais pu écrire votre code. Fondamentalement, je voudrais obtenir toutes les variables au début à l'aide d'un "dire le processus de bloc". Ensuite, je peux faire des trucs avec ces variables. J'espère que ça aide. Remarquez que je n'en ai fait le processus au premier plan ce qui signifie que si on a plusieurs fenêtres sont ouvertes, il ne clique sur un bouton sur le devant de la fenêtre. Vous devez ajouter du code pour faire de chaque fenêtre de venir à l'avant, vous pouvez cliquez sur son bouton. Bonne chance.
C'est un problème difficile à résoudre. Certaines applications peuvent avoir des documents au lieu de windows. Certains peuvent être directement utilisées par les scripts, par exemple Terminal, où vous pouvez obtenir le windows directement depuis l'application. Certains vous ne pouvez pas trouver toute solution à tout. Il suffit de chercher, de regarder les dictionnaires applescript, et peut-être vous pouvez trouver d'autres solutions. Je ne sais pas de réponse directe pour vous.
J'ai peu ou pas de connaissance de l'AppleScript, je suis juste intéressé à ce problème, précisément, je voulais juste dire que dans mon éditeur de script, il jette un code d'erreur de 1700 sur
if not background only of theProcess then
, ne peut pas convertir les <<classe bkgo>> de <<classe crp>> BooleanOriginalL'auteur regulus6633
- Je créer une liste de toutes les fenêtres des applications visibles sur Mavericks comme ceci:
Vous avez besoin pour permettre à n'importe quelle application utiliser pour accéder à l'interface en vertu de l'Accessibilité.
OriginalL'auteur Raymond Uppier-Püpschrute