Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script pour modifier la résolution écran et autre

2 réponses
Avatar
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: ³x=422 y=271²
AXSize: ³w=179 h=17²
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

2 réponses

Avatar
laurent.pertois
pasizaire wrote:

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.

Avatar
pasizaire
Le 27/02/07 0:13, dans
1hu634r.1la38p710ageltN%, « Laurent Pertois »
a écrit :

pasizaire wrote:

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