9
votes

AppleScript Comment obtenir la résolution d'affichage actuelle?

J'essaie d'obtenir la résolution actuelle d'affichage de mes deux écrans en fonction de l'endroit où le curseur de la souris est.

I.e. Lorsque le curseur de la souris est sur le premier affichage, je veux obtenir la résolution de cet affichage.

avec un script shell, je peux obtenir les deux résolutions: xxx

Mais je n'obtiens pas quel affichage est actuellement "actif".

Des idées?


1 commentaires

Toutes les réponses sur AppleScript sont erronées car elles ajoutent plusieurs affichages ensemble. Toutes les réponses sur System_Profiler ont tort car la résolution efficace de la rétine peut être différente de ce qu'elle dit.


7 Réponses :


9
votes

AppleScript n'a aucun accès à l'emplacement du curseur, même via des événements système. Désolé.

[Il y a quelques solutions commerciales, mais je suppose qu'ils ne valent pas la peine dans ce cas? Je suppose que je pourrais aussi préparer un outil de ligne de commande rapide qui renvoie simplement l'emplacement actuel du curseur ... vaut la peine?]

P.s. Awk est excellent pour trouver des lignes correspondantes: xxx


0 commentaires

4
votes

Par souci d'exhaustivité, voici le code pour saisir la hauteur de l'écran: xxx


0 commentaires

11
votes

Cela fait l'affaire: xxx


2 commentaires

Avec plusieurs affichages, limites de la fenêtre de bureau rapporte une taille Simple, combinée la taille englobant le rectangle autour de tous les écrans en fonction de leur arrangement spatial comme défini dans les préférences du système. En d'autres termes: Vous ne pouvez pas dire combien d'affichages il y a et le rectangle rappelé peut contenir des zones qui ne sont pas réellement affichées. De même, les deux objets Standard Suite Les objets (Windows d'applications AppleScriptble, via limites ) et de la suite de processus fenêtre objets (Contexte "Événements système ", via position ) signalez leurs coordonnées en termes de rectangle combiné.


Cela fonctionne essentiellement bien et obtenu un uppote. Mon script crée 2 fenêtres Finder et les montre côte à côte, comme Norton Commander. Mais si je connecte un écran externe sur mon MacBook, il utilisera la résolution de l'écran externe. L'écran externe est configuré pour être l'écran secondaire (et il ne mine pas). Y a-t-il un indice pour toujours référencer l'écran interne?



6
votes

Ce qui suit ne résout pas le problème de l'OP, mais peut être utile à ceux qui souhaitent déterminer la résolution de tous les affichages connectés dans AppleScript (grâce à @Joelreid et @IloveItaly pour les blocs de construction): xxx


2 commentaires

C'est génial, pouvez-vous penser à une manière ou savoir quel est le bureau actif? Je pensais à chercher une façon de savoir dans quel bureau est la fenêtre active assis


@Perrohunter Je ne saurais pas comment faire cela génériquement dans AppleScript seul. Bien que vous puissiez obtenir les limites de la fenêtre active de l'application de première application, comme suit: limites de la première fenêtre d'application (chemin d'accès à l'application la plus frontale comme texte) , ces limites sont rappelées en termes d'un rectangle virtuel englobant Tous Affichages, comme indiqué par limites de la fenêtre de bureau dans le contexte (code>. Sans aussi savoir comment vos affichages sont arrangés (verticalement, horizontalement, à gauche, à droite, ...), vous ne pourrez pas déduire l'affichage spécifique.



7
votes

Pour des raisons d'une complétude encore plus, voici le code pour obtenir la largeur, la hauteur et la rétine d'un affichage spécifique (principal ou intégré).

C'est le code pour obtenir l'échelle de résolution et de rétine de l'affichage intégré : xxx

et il s'agit du code pour obtenir la résolution et la rétine de L'affichage principal : xxx

Le code est basé sur Ce message par JESSI BAUHMAN et les autres réponses données ici.


1 commentaires

J'ai dû définir les résultats dans une variable, puis l'utiliser en dehors du bloc "Tell Application": dites à l'application "Finder" Définir les dimensions sur les mots de (do shell ... finissez la largeur de jeu à l'élément 1 des dimensions SET Hauteur à Point 2 des dimensions



0
votes

sur ma machine system_profiler prend près une seconde pour renvoyer une réponse. À mes besoins, de cette façon trop longue.

pré-10.12, j'ai utilisé asobjc coureur mais apparemment cela ne fonctionne plus.

C'est beaucoup plus rapide pour moi:

Application "Finder" pour obtenir des limites de la fenêtre du bureau

(extrait de https://superuser.com/a/735330/64606 )


0 commentaires

2
votes

Pour obtenir la largeur , la hauteur et la mise à l'échelle (rétine = 2, sinon = 1) pour Tous les moniteurs : xxx

sur réponses ci-dessus .

entraîne quelque chose comme ceci: xxx


0 commentaires