Ответ 1
Icon ico = Icon.ExtractAssociatedIcon(theProcess.MainModule.FileName);
Я могу получить исполняемое местоположение из процесса, как получить значок из файла?
Может быть, использовать windows api LoadIcon(). Интересно, есть ли способ .NET...
Icon ico = Icon.ExtractAssociatedIcon(theProcess.MainModule.FileName);
Это пример из реализации консольного приложения.
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
}
}
}
}
Используйте ExtractIconEx (и здесь) p/invoke. Вы можете извлекать маленькие и большие значки из любой DLL или EXE. Shell32.dll имеет более 200 значков, которые весьма полезны для стандартного приложения Windows. Вам просто нужно сначала выяснить, какой индекс для нужного вам значка.
Изменить: я быстро нашел SO и нашел этот. Значок индекса 0 - значок приложения.