Ce n'est pas tout à fait se que je veux.
Ce que je veux c'est qu'avec SHGetFileInfo j'obtien l'icone d'un fichier(Ca je le fais déja) et que t'utilise cette même icone avec InjectIcon tout ca avoir à extraire cette même icone dans un dossier.
Non mais une fois que tu arrives à récupérer l'icone, tu la sauvegarde vers n'importe où (un emplacement temporaire), tu appelles InjectIcon et tu supprime l'icone temporaire ..
De la vallée du vent ...
Distribution d'applications .NET avec DreamShield
DreamShield, Le site, forum, blog, wiki & Jeux
Mon blog, Cours et tutoriels pour apprendre C#, forum C#, Offres d’emploi développeur C#
Ouais il y a cette option je sais mais la j'ai découvert que ca marche pas vraiment InjectIcon, quand j'Inject un Ico dans un fichier(EXE) ca marche pas avec tout les EXE , certain EXE ont plusieurs icones(exemple: la même icone de plusieurs taille différente) à l'interieur d'eux alors quand je met mon Ico elle ne remplace pas aucun icone, elle fait juste s'ajouter.
En tout cas , la j'ai mal expliquer parce qu'il faudrait que vous aillez ResHacker pour voir comment c'est fait à l'intèrieur d'un EXE.
...
Je sais comment est fait un Exe, je sais aussi que ResHacker n'est pas le meilleur dans le domaine j'ai déjà vu beaucoup plus performant donc il faudrait arrêter de ne jurer que par lui
Je sais aussi qu'un exe peut donc avoir plusieurs icônes mais pour l'utilisation que j'ai fait de InjectIcon vu que c'était pour mon usage "personnel" je m'arrangeais pour me placer dans le cas où ça marche toujours (vu que mon application n'avais qu'une seule icône).
Enfin la dernière chose que je sais concernant ce problème c'est que les exemples d'utilisation de UpdateResource avec les icônes sont rares ... mais bien sur tu peut modifier la source que je t'ai envoyée pour qu'elle soit plus performante et proposer à tout le monde le chef d'œuvre
La franchement, je n'ai pas la motivation de coder ça
De la vallée du vent ...
Distribution d'applications .NET avec DreamShield
DreamShield, Le site, forum, blog, wiki & Jeux
Mon blog, Cours et tutoriels pour apprendre C#, forum C#, Offres d’emploi développeur C#
Il n'existe pas une fonction DeleteResource?
Parce que quand je suprime tout les resource du fichier à modifier en faisant comme ceci: BeginUpdateResource(execFileName, true); ICI "TRUE" DIT DE SUPRIMER TOUT LES RESOURCES PRÉSENTE SUR LE FICHIER, tout les Resources de l'EXE son suprimer et il ne reste que mon icone à l'interieur.
se qui faudrait c'est obtenir la taille de l'icone du fichier EXE à modifier et chercher dans ses Resources quel Resources a la même taille que celle de son icone pour finalement suprimer cette Resource pour la remplacé par l'icone d'InjectIcon
EDIT: J'ai trouver un programme qui permet de changer l'icone de tout les types de fichier et je me demande vraiment trop comment il a fait ca le codeur!!
ICI
Tout ceci ressemble plutôt à du bricolage... A mon avis pas de mystère : si tu veux customiser les icônes pour une extension, crée ton propre Icon handler.
Je sais pas si j'ai bien comprit mais ca resemble beaucoup à comment assigné une icone à un extention de fichier , se que je veux pas faire.
Moi c'est plus de pouvoir assigné une icone(différente) à n'importe laquelle fichier(But Final)
Je pense que tu n'as pas bien lu le lien que je t'ai fourni.
Dès la seconde ligne, il est dit :
Ce qui je pense correspond exactement à ton besoin.However, an icon registered in this way will be the same for all members of the file class. You can have much more flexibility in assigning icons to the members of the file class by implementing an icon handler.
De la vallée du vent ...
Distribution d'applications .NET avec DreamShield
DreamShield, Le site, forum, blog, wiki & Jeux
Mon blog, Cours et tutoriels pour apprendre C#, forum C#, Offres d’emploi développeur C#
Ouais mais comment ca fonctionne?
Ca me permetterais de changer l'icone de n'importe quelle fichier?
Oh ca fait un bout de temps que j'ai pas eux de réponse, alors je fait un petit "UP".
Quoi que c'est peut-être moi qui est rendu habituer de recevoir des réponses rapidements
Edit: BCmDev , pourrais-tu m'aider avec les "Icons Handler" je comprend pas vraiment comment ca s'utilise?
En cherchant un peu, je viens de trouver ce lien qui propose en téléchargement du code VB .Net. J'ai simplement ouvert la solution (qui compile du premier coup) et on peut voir que le travail fait est important : il te permet de dériver d'une classe de base implémentant déjà les interfaces demandées par le shell. Tu n'as plus qu'à surcharger les méthodes...
Si tu choisis de tester cette voie, donne ton retour...
J'ai finalement pris le temps d'essayer l'IconHandler fourni en exemple : il fonctionne très bien et tu peux t'en servir comme support pour ton propre IconHandler.
Je vais esssayer tout ca mais je comprend pas encore vraiment, peux-tu juste me répondre si ca va me permettre de changer l'icone de n'import quelle fichier à partir de mon programme?
EDIT: Ouais mais les IconHandler ne permet pas de changer l'icone des fichier , regarde IcI , ah moin que je me trompe.
EDIT2: Apres avoir lu ce Topic , j'ai comprit se qu'était les Icon Handler : Un IconHandler permet de définir l'icône fichier par fichier et non extension par extension
Mais je sais Toujours pas comment on fait pour définir l'icône fichier par fichier.
Je vois que tu avances...
As-tu téléchargé le code via le lien que je t'ai fourni ? Si oui, regarde l'exemple présent. C'est un IconHandler pour les fichiers .bmp qui affiche une miniature de l'image comme icône. Tu peux je pense t'en servir comme modèle, il y a très peu de code. Le code le plus difficile est dans la classe de base, tu n'as pas besoin de le comprendre si cela t'ennuie. Dérive simplement de la classe de base et surcharge les méthodes nécessaires. Si tu te heurtes à des problèmes, je pourrai t'aider dès lundi.
Après notre conversation par MP, je joins le projet de mon IconHandler.
Mais comme de te l'ai dit, ça risque d'être trop dur pour toi à comprendre si tu ne connais ni COM, ni ATL...
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.
Je comprend toujours pas...
J'ai essayée ca :
Mais ca me renvoi toujours une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim Test As Edanmo.ShellExtensions.IconHandlerBase Test.OnExtractIcon("c:\Documents and Settings\Administrateur\Bureau\firefox.exe", 1, 32, 16, 32, 16)
EDIT: Edanmo , ca vien du lien de BCmDev
D'abord, je ne suis pas sûr que ce soit la bonne façon de l'utiliser, mais bon, comme je ne connais pas le projet de Medinoc je ne me prononcerai pas là-dessus...
Mais d'un point de vue purement technique, ça ne peut pas marcher : tu déclares la variable Test sans l'initialiser (donc elle vaut Nothing) et ensuite tu essaies d'appeler une méthode dessus, donc forcément ça plante...
J'ai l'impression que tu débutes en VB.NET... avant de te lancer dans un truc compliqué comme ça, tu devrais peut-être commencer par des choses plus simples, parce que là tu m'as l'air parti pour bien galérer !
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Tu n'y es pas, slayer418. Ta classe doit dériver de Edanmo.ShellExtensions.IconHandlerBase puis surcharger la méthode OnExtractIcon. N'oublie pas d'indiquer l'extension de fichier via l'attribut dédié.
L'appel sera ensuite fait directement par le shell, tu n'as pas d'appel à écrire. Quand tu compiles, l'IconHandler est enregistré automatiquement par Visual Studio. Tu peux donc voir directement le résultat dans l'explorateur.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager