2010-11-23 5 views
3

Existe-t-il un moyen d'obtenir les emplacements des icônes du bureau dans Snow Leopard? Je crois que chaque icône était une fenêtre différente dans Leopard, mais cela a changé avec SL.Obtention des emplacements des icônes de bureau?

Existe-t-il une API pour faire cela ou un fichier (comme un fichier de configuration) à analyser?

+0

À quel point recherchez-vous un résultat? (Les fichiers .DS_Store ne seront pas aussi précis que les autres méthodes). Quelles méthodes avez-vous utilisées dans Leopard (les API d'accessibilité ne fonctionnent-elles plus)? – NSGod

+0

Personnellement, je ne l'ai pas utilisé, mais d'après cela (http://www.everita.com/how-the-newton-virus-was-made), les icônes et la barre de menu étaient des "types spéciaux de fenêtres" qui étaient accessibles via une API privée. Je préférerais des coordonnées précises à 100% si possible ... –

Répondre

4

Comme autant que je peux dire, les icônes sur le bureau semblent être un "AXImage". Si vous obtenez l'inspecteur de l'accessibilité (dans/Applications/Utilitaires/Outils d'accessibilité /), vous pouvez examiner les informations d'accessibilité rapportées pour les éléments à l'écran.

Par exemple:

<AXApplication: "Finder"> 
<AXScrollArea: "desktop"> 
    <AXGroup: "._sideEntrance.psd"> 
    <AXImage: "Untitled.icns"> 

Attributes: 
    AXRole: "AXImage" 
    AXRoleDescription: "image" 
    AXParent: "<AXGroup: "._sideEntrance.psd">" 
    AXWindow: "<AXScrollArea: "desktop">" 
    AXTopLevelUIElement: "<AXScrollArea: "desktop">" 
    AXSize: "w=16 h=16" 
    AXPosition: "x=106 y=412" 
    AXEnabled: "true" 
    AXFocused (W): "false" 
    AXTitle: "Untitled.icns" 
    AXFilename: "Untitled.icns" 
    AXURL: "file://localhost/Users/mdouma46/Desktop/Untitled.icns" 
    AXSelected (W): "false" 
    AXEnabled: "true" 

Les API d'accessibilité (ceux de niveau inférieur, de toute façon), font partie de HIServices:

/System/Library/Frameworks/ApplicationServices.framework/.../ HIServices.framework

(Vous liez et importez le framework parapluie ApplicationServices dans votre projet, cependant). Je ne suis pas très familier avec ces API, donc je ne peux pas offrir de détails, mais ce serait un bon point de départ.

Espérons que cela aide ...

Questions connexes