Script pour modifier la résolution écran et autre

Le
pasizaire
Après de nombreuses recherches, je n'ai pas trouver aucun complément de
pilotage gratuit permettant de modifier la résolution de l'écran
fonctionnant sur Mac OS X.
Le seul complément de pilotage que j'ai trouvé est "Extra Suites" de chez
www.kanzu.com . Malheureusement, il n'est pas gratuit.

Toutefois, voici une méthode qui permet de modifier toute l'interface du Mac
et de piloter des applications qui ne sont pas scriptables. Au passage, elle
nous servira à modifier résolution de l'écran par Applescript.

Cette méthode fait appel à la possibilité de scripter directement
l'interface de Mac OSX par l'accès aux périphériques d'aide.

Tout d'abord lisez la page suivante:
http://www.apple.com/applescript/uiscripting/index.html pour bien en
comprendre le principe et télécharger l'utilitaire UIElementInspector. Il
vous sera d'un grand secours pour scripter d'autres parties de l'interface
Mac OS X.

La réalisation du script est maintenant aisée: Il suffit de modifier la
ligne sélectionnée de la résolution écran dans les préférences système.

Pour cela repérons la hiérarchie de la ligne de résolution visée dans les
préférences système grâce à l'utilitaire UIElementInspector

Ce qui nous donne:
<AXApplication: ³Préférences Système²>
<AXWindow: ³iMac²>
<AXTabGroup>
<AXGroup>
<AXScrollArea>
<AXTable>
<AXRow>
<AXTextField>

Attributes:
AXRole: ³AXTextField²
AXRoleDescription: ³champ de texte²
AXHelp: ³(null)²
AXValue (W): ³800 x 600²
AXEnabled: ³1²
AXFocused: ³0²
AXParent: ³<AXRow>²
AXWindow: ³<AXWindow: ³iMac²>²
AXTopLevelUIElement: ³<AXWindow: ³iMac²>²
AXPosition: ³xB2 y'1²
AXSize: ³w9 h²
AXChildren: ³<array of size 0>²
AXSelectedText: ³(null)²
AXSelectedTextRange: ³(null)²
AXNumberOfCharacters: ³9²
AXVisibleCharacterRange: ³pos=0 len=9²
AXInsertionPointLineNumber: ³(null)²

Actions:
AXShowMenu - Afficher le menu
AXConfirm - confirmer

Comme vous pouvez le constater, nous n'avons pas l'index pour Tab Group,
Group, Scroll area, etc. Nous ne connaissons que la hiérarchie des objets et
le nom de la fenêtre

Un petit script nous permettra de nous en sortir:
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.displays"
end tell

tell application "System Events"
tell process "System Preferences"
tell window "iMac"
get entire contents
end tell -- window
end tell -- application process
end tell -- "System Events"

Parmi les résultats, nous observons les lignes suivantes:
text field 1 of row 1 of table 1 of scroll area 1 of group 1 of tab group 1
of window "iMac" of application process "System Preferences" of application
"System Events".
Même chose pour row 2 et row 3

Voyons ce que contient row 2:
tell application "System Events"
get value of text field 1 of row 2 of table 1 of scroll area 1 of group
1 of tab group 1 of window "iMac" of application process "System
Preferences" of application "System Events"
end tell


Le résultat est "800 x 600" ! C'est tout à fait ce que nous recherchons.

Il ne reste maintenant plus qu'à activer cette résolution:

tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.displays"
end tell

tell application "System Events"
set selected of row 2 of table 1 of scroll area 1 of group 1 of tab
group 1 of window "iMac" of application process "System Preferences" to true
end tell -- "System Events"

Voila ! Le tour est joué et la résolution de l'écran changée.

Vous pourrez utiliser cette méthode dans tous les cas où vous souhaitez
piloter une application qui n'est pas directement scriptable. Il faut être
patient mais le résultat est à la hauteur de l'attente.

Bon amusement,

Patrick
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
laurent.pertois
Le #2108131
pasizaire
Après de nombreuses recherches, je n'ai pas trouver aucun complément de
pilotage gratuit permettant de modifier la résolution de l'écran
fonctionnant sur Mac OS X.


Et la commande que je t'ai donné ? tu peux l'intégrer dans un
AppleScript enregistré sous forme de bundle Mac OS X et avec 'do shell
script'.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

pasizaire
Le #2151781
Le 27/02/07 0:13, dans
1hu634r.1la38p710ageltN%, « Laurent Pertois »

pasizaire
Après de nombreuses recherches, je n'ai pas trouver aucun complément de
pilotage gratuit permettant de modifier la résolution de l'écran
fonctionnant sur Mac OS X.


Et la commande que je t'ai donné ? tu peux l'intégrer dans un
AppleScript enregistré sous forme de bundle Mac OS X et avec 'do shell
script'.
Oui, c'est vrai cela peut se faire.


Toutefois, je n'ai pas encore touché à la compilation sur Mac.

J'ai trouvé la solution que je propose un peu plus générique car elle permet
de piloter d'autres aspects du mac que ce soit au niveau du système que des
applications tierces.

Patrick


Publicité
Poster une réponse
Anonyme