Récupérer l'icone et le nom associé à  une application

APAP Membre
21:41 modifié dans API AppKit #1
Bonjour,

J'aimerais récupérer l'icone et le nom à  partir d'une application donnée. Est-ce que cela est possible et si oui, avez-vous des pistes pour y arriver?

Merci!

Réponses

  • tabliertablier Membre
    21:41 modifié #2
    Généralement pas de problème pour les applications "Bundle" faites avec Xcode.
    Tu ouvres le paquet (Afficher le contenu du paquet)
    dans le dossier Contents/Resources tu trouves plein de choses dont les icônes.
    dans le dossier Contents/MacOs  tu trouves l'exécutable et tu as son nom.
    Tu peux également utiliser des utilitaires comme Asticones pour récupérer les icônes.
  • zoczoc Membre
    21:41 modifié #3
    dans 1259913017:

    Tu ouvres le paquet (Afficher le contenu du paquet)

    Je pense que le monsieur voulait dire "depuis une application écrite en Objective-C"  :)

    Je pense qu'avec la classe NSBundle ça doit être possible (évidemment uniquement pour les applications livrées sous forme de Bundle, soit la très très grande majorité).
  • AliGatorAliGator Membre, Modérateur
    21:41 modifié #4
    L'icône est un fichier qui est dans les ressources du Bundle de l'application, et dont le nom est renseigné dans le Info.plist (et s'il n'est pas présent, ça utilise le fichier Icon.png)
    Le nom d'affichage de l'application est aussi dans le Info.plist.
  • APAP Membre
    21:41 modifié #5
    Merci beaucoup pour ces infos    Une petite question additionnelle, quel est le moyen conventionnel pour anayser en obj c un info.plist ?

    Merci
  • AliGatorAliGator Membre, Modérateur
    décembre 2009 modifié #6
  • tabliertablier Membre
    décembre 2009 modifié #7
    Grillé par Aligator!!

    Pour le nom de l'application, il faut savoir qu'il peut y en avoir plusieurs! en fait 1 nom par langue! Mais le nom de l'exécutable est unique!
    Par exemple le "Carnet d'adresses" en français devient:
    "Address Book" en Anglais,
    "Adressbuch" en Allemand
    "Rubrica Indirizzi" en italien
    "Адресная книга" en russe
    "アドレスブック" en japonais
    ......................................... etc
    Donc , si l'on parle d'un nom d'application il faut préciser de quel nom il s'agit: le nom de l'exécutable, le nom affiché dans une langue donnée ou le nom affiché dans la langue par défaut de l'utilisateur!
  • 21:41 modifié #8
    En fait il suffit d'utiliser NSWorkspace.

    <br />NSWorkspace* workspace = [NSWorkspace sharedWorkspace];<br />NSImage* icon = [workspace] iconForFile:[workspace fullPathForApplication:@&quot;AddressBook&quot;]];<br />
    


    Par contre pour le nom de l'icône tu ne peux malheureusement pas la récupérer en utilisant "name" de NSImage.
    Note que l'image par défaut est en 32*32, tu peux la changer avec "setSize:" de NSImage, ça ne pixellisera rien du tout.

    <br />[icon setSize:CGSizeMake(128,128)];<br />
    


    Pour récupérer le nom, tu n'as plus qu'à  utiliser le info.plist du bundle de l'app ciblée et soutirer le nom de l'icône à  la clé "CFBundleIconFile"
  • tabliertablier Membre
    21:41 modifié #9
    Pour Aligator: nous sommes ici dans la section Mac et tu donnes une référence dans la librairie iPhone! est-ce bien la même chose dans les deux mondes?
  • AliGatorAliGator Membre, Modérateur
    21:41 modifié #10
    En effet, bonne remarque... mais oui, c'est la même chose : NSBundle infoDictionary
  • tabliertablier Membre
    21:41 modifié #11
    Le nom d'affichage de l'application est aussi dans le Info.plist.
    Je ne crois pas. Le nom que l'on trouve en face de "CFBundleName" dans info.plist est le nom pour la region définie par la clef "CFBundleDevelopmentRegion". Pour presque tout les programmes, cette région est "English". Après, il existe des methodes pour avoir le nom affiché du bundle. Et la clef pour savoir s'il y a des noms localisés est "LSHasLocalizedDisplayName" dans info.plist
Connectez-vous ou Inscrivez-vous pour répondre.