IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Placer une icône dans un exe pour l'utiliser pour un fichier


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut Placer une icône dans un exe pour l'utiliser pour un fichier
    Bonjour, je m'explique :
    J'ai créé des fichiers spéciaux pour un programme, et j'aimerais les associer à une icône particulière. J'ai alors fouillé dans le registre, et trouvé que les icônes sont définies dans les clef DefaultIcon des descriptions d'extension. Ces clefs contiennent le chemin de l'exécutable (ou de la DLL) dans lequel se trouve l'icône, plus un numéro identifiant cette icône : chemin\de\l'executable.exe,1.
    J'aimerais alors enregistrer mes icônes dans mon exe, pour pouvoir y accéder comme ci-dessus. Quelqu'un connaît-il la solution ?
    Merci !

    Cordialement,
    Simac

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Et l'ami, il faudra nous dire quelle bibliothèque, quel IDE, quel système d'exploitation tu utilises

    Sous Windows, il faut faire un fichier de ressource (<- lien): le "comment faire" dépend des 3 réponses ci-dessus

    Et tu regardes tout cela avec un logiciel comme Resource Hacker

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Oui c'est vrai, pardonnez-moi
    Je suis sous window, avec Code::Block, en utilisant l'API WIN32.

    Pour les fichiers ressources, je me doute qu'ils sont de la partie. Mais je ne vois pas comment accéder ensuite aux icônes. J'ai bien essayé en remplaçant le numéro après la virgule dans le registre (voir mon précédent post) par l'identifiant que j'associe à l'icône, mais que j'utilise ceci :1 ICON "icone.ico", ou celà : 1 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "icone.ico", ça ne marche pas. Je précise que les deux lignes fonctionnent dans leurs but premier, à savoir associer l'icône à la fenêtre du programme, et l'associer au fichier "monProgramme.exe".

    Sur d'autres topics, les suggestions étaient aussi orientées vers Resource Hacker, mais je cherche un moyen par programmation (pour pouvoir distribuer le programme).

    Merci ^^

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Si tu veux associer un icône à un type , c'est bien la procédure: il faut créer une clef dans la base de registre

    How to Assign a Custom Icon to a File Type

    Donc:
    1. Tu n'as besoin de passer par la fonction LoadResource et ses petites sœurs. Il faut juste avoir l'icône dans son exécutable
    2. Cela ne fonctionne pas sous Windows 10 (sur cette page en haut)
    3. Effectivement, dans la section DefaultIcon il y a une histoire de virgule suivi du combientième icône. Mais tu peux tester le truc à la main dans un premier temps.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par foetus Voir le message
    Mais tu peux tester le truc à la main dans un premier temps.
    J'avais essayé de trouver une relation entre le numéro que j'attribuais à l'icône et le numéro après la virgule. En fait, il faut utiliser les nombres à partir de 0...

    Vraiment désolé de vous avoir fait réfléchir sur un problème qui n'aurait pas dût être... Mais bon, cela servira peut-être à d'autres...

    En tout cas, merci de m'avoir mis sur La Voie ^^

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En fait, si tu passes un nombre négatif dans le Registre, ça correspondra au n° de la ressource. Mais si tu passes un nombre positif, c'est un index.
    Plus d'informations (en anglais)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    OK, merci pour la précision !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Placer une icône dans un ProgressDialog
    Par ChPr dans le forum Android
    Réponses: 2
    Dernier message: 17/09/2015, 13h09
  2. Placer une icône perso dans la barre de titre d'un MsgBox
    Par fred65200 dans le forum Contribuez
    Réponses: 0
    Dernier message: 06/02/2009, 20h34
  3. Réponses: 5
    Dernier message: 17/06/2006, 21h13
  4. Inclusion d'une DLL dans un exe?
    Par luareon22 dans le forum MFC
    Réponses: 10
    Dernier message: 29/08/2005, 12h08
  5. Inclure une DLL dans le .exe final?? possible?
    Par xavmax dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2005, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo