1 votes

Comment puis-je obtenir la largeur ou la hauteur du dock dans Mac OS X afin de pouvoir redimensionner correctement une fenêtre ?

Je veux écrire un code pour redimensionner une fenêtre en fixant ses limites, et je dois prendre en compte l'endroit où le dock est positionné et la taille du dock. Je peux obtenir la position du dock et sa taille, mais le problème est que la taille que j'obtiens n'est pas sous une forme immédiatement utilisable. Par exemple, lorsque je fais :

tell application "System Events"
    tell dock preferences
        properties
    end tell
end tell

Je reçois

{show indicators:true, minimize into application:false, autohide:false, magnification size:1.0, class:dock preferences object, dock size:0.428571432829, autohide menu bar:false, double click behavior:zoom, magnification:false, show recents:true, minimize effect:genie, screen edge:left, animate:true}

Comment puis-je traduire la taille du dock de 0,428571432829 en 100, par exemple, afin de pouvoir placer une fenêtre (dans une résolution de 1024x768) en position x=100, y=0, h=768, w=924 ?

Avis x a commencé après le quai, et le w est moins la largeur du quai.

0 votes

Je ne m'inquiéterais pas des choses marquées comme dépréciées dans AppleScript - cela ne signifie pas grand-chose, en général, bien que bounds serait le meilleur à utiliser car frame n'a pas été universellement mis en œuvre en premier lieu plutôt que la dépréciation n'est pas en cause. Mais il n'en reste pas moins que l'on peut s'attendre à ce que les bounds n'est applicable qu'aux applications scriptables. Pour les applications non scriptables (c'est-à-dire la plupart des applications), vous devrez manipuler l'élément window par le biais d'événements système, et ce, en utilisant la fonction size y position propriétés communes à toutes les sous-classes de UI element les objets de la classe. Dommage que le dock soit si pénible.

0 votes

Oh, et puisque vous accéderez de toute façon aux événements du système, vous aimeriez peut-être savoir que les dimensions de l'écran peuvent être obtenues de la manière suivante : tell app id "com.apple.systemevents" to tell process "Finder" to set [screenW, screenH] to the size of scroll area 1 qui, dans votre cas, renverra [1024, 768] . Ainsi, si vous changez de résolution à un moment donné, votre script n'aura pas besoin d'être réécrit.

0 votes

Merci pour le conseil, @CJK. Je crois ce que vous dites à propos de la dépréciation dans AS. J'ai écrit une petite bibliothèque pour m'aider à positionner Windows, et j'ai appris à quel point nous devrions positionner différemment Terminal, Console, et dieu sait quelle est la troisième application (toutes Apple first-party).

3voto

user3439894 Points 52496

Les éléments suivants exemple AppleScript code retournera le taille de la Quai :

tell application "System Events" to ¬
    tell application process "Dock" to ¬
        set dockSize to ¬
            the size of list 1

return dockSize

Si vous voulez le largeur y hauteur :

tell application "System Events" to ¬
    tell application process "Dock" to ¬
        set {dockWidth, dockHeight} to ¬
            the size of list 1

return {dockWidth, dockHeight}

0 votes

Merci, cela fonctionne. J'ai essayé de comprendre comment vous étiez parvenu à votre réponse, et j'ai découvert qu'il était possible d'obtenir la liste en récupérant tout le contenu du dock du processus d'application, puis en obtenant ses propriétés contenant les attributs dont j'ai besoin.

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