2010-04-01 7 views
0

Je travaille avec class treeView. Je veux créer l'arbre des fichiers avec des icônes. Je veux extraire quelques icônes de shell32.dll. L'icône ou la classe d'image peut-elle fonctionner avec res-protocol? comment connaître le chemin complet du fichier sur le protocole res?Incorporation des ressources de win32 dll à .net

Répondre

2

Microsoft sévèrement et à plusieurs reprises a mis en garde contre cette pratique. Les ressources dans shell32.dll sont un détail d'implémentation privée et peuvent changer sans préavis. En supposant que vous voulez ignorer ceci: vous pouvez retirer les icônes de P/Invoke LoadLibrary() pour obtenir un handle de module et LoadImage() pour obtenir l'icône. Malheureusement, le constructeur Icon qui prend un handle est privé, vous devrez utiliser Reflection pour l'invoquer. Visitez pinvoke.net pour les déclarations.

Alors que tout cela fonctionne, ce n'est pas un bon code que vous aimerez maintenir. Fwiw, en levant les icônes de shell32.dll et en le mettant dans une ressource gérée est très simple. Dans Visual Studio, utilisez Fichier + Ouvrir + Fichier et ouvrez shell32.dll. Vous obtiendrez une liste de toutes les ressources, naviguez dans le nœud Icônes. Double-cliquez sur un pour voir ce qu'il contient, faites un clic droit + Exporter pour l'enregistrer dans un fichier. Aucune idée à quel point cela est légal, les icônes elles-mêmes ne portent pas de mention de copyright mais shell32.dll le fait certainement. Ce n'est probablement pas le cas.

0

Je pense que vous devez extraire les icônes de shell32 si vous voulez les utiliser.

Avec IcoFx (freeware), vous pouvez extraire des icônes à partir d'exe et dll.

+0

thx mais je veux faire cela sur le code. – Xaver

Questions connexes