2008-10-15 7 views

Respuesta

39
Icon ico = Icon.ExtractAssociatedIcon(theProcess.MainModule.FileName); 
+2

'Process.MainModule' puede arrojar' Win32Exception's en los procesos del sistema o entre procesos de 32 bits y 64 bits. Ver [esta pregunta] (http://stackoverflow.com/questions/9501771/how-to-avoid-a-win32-exception-when-accessing-process-mainmodule-filename-in-c) para más detalles. –

+1

Además, mis íconos no tienen transparencias que den feos contornos negros:/ –

12

Este es un ejemplo de la implementación de una aplicación de consola.

using System; 
using System.Drawing;   //For Icon 
using System.Reflection;  //For Assembly 

namespace ConsoleApplication 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       //Gets the icon associated with the currently executing assembly 
       //(or pass a different file path and name for a different executable) 
       Icon appIcon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location);     
      } 
      catch(ArgumentException ae) 
      { 
       //handle 
      }   
     } 
    } 
} 
+0

Corrección, ese código lo hace para el ensamblaje actual ... no relacionado. Ah, y te estás perdiendo parientes. – TheSoftwareJedi

+0

Gracias, debería haber entendido eso :( – RobS

2

Utilice la ExtractIconEx (y here) p/invocar. Puede extraer iconos pequeños y grandes de cualquier dll o exe. Shell32.dll tiene más de 200 iconos que son bastante útiles para una aplicación estándar de Windows. Solo tiene que averiguar primero qué es el índice para los íconos que desea.

Editar: Hice la búsqueda rápida y encontré this. El ícono del índice 0 es el ícono de la aplicación.

Cuestiones relacionadas