2010-01-18 3 views
3

Est-ce que quelqu'un connaît une fonction API pour extraire une ressource d'icône d'un fichier exécutable qui est en RAM (à l'intérieur, disons, un MemoryStream)?Extraire l'icône de l'exécutable en mémoire

Toutes les fonctions d'extraction d'icônes que j'ai vues jusqu'ici dépendent du fichier exécutable présent sur le disque. Je voudrais extraire l'icône sans avoir à écrire l'exe dans un fichier temporaire, puis charger les ressources à partir de celui-ci.

Répondre

0

Ce n'est jamais un vrai prob lem. Windows a l'exigence stricte qu'un exécutable est un fichier sur le disque. Vous ne pouvez pas démarrer un processus autrement. Puisque vous devez quand même écrire le fichier sur le disque, vous n'avez jamais de problème pour en extraire des ressources avec une API qui nécessite un chemin vers un fichier.

+0

Merci; Je vais devoir mordre la balle sur celui-là. –

+0

"Ce n'est jamais un vrai problème" - Malheureusement, vous ne pouvez pas définir quels problèmes sont "réels". Par exemple, je veux tirer les icônes d'une capture réseau sans toucher le disque. – EricLaw

0

si nous parlons de prendre icône de construire déjà DLL utiliser réflecteur

http://www.red-gate.com/products/reflector/ 

pour ouvrir la DLL et il suffit de cliquer sur l'icône avec le bouton droit de la souris et cliquez sur Enregistrer sous également cela peut être fait par code en utilisant la réflexion

Assembly myAssembly = Assembly.Load("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"); 
Stream myStream = myAssembly.GetManifestResourceStream("MyNamespace.SubFolder.MyImage.bmp"); 
Bitmap bmp = new Bitmap(myStream); 

Cordialement, Iordan

+1

Je pense qu'il a dit qu'il voulait lire des icônes de la mémoire. – gbianchi