為Console程式加上Icon

因為覺得Console程式在執行時,Titlebar與Taskbar上都出現預設的Icon有點醜,就研究一下怎麼設定,還滿簡單的。

因為覺得Console程式在執行時,Titlebar與Taskbar上都出現預設的Icon有點醜,就研究一下怎麼設定,還滿簡單的。

image

圖一 醜醜的預設Icon

 

image

圖二 在Taskbar醜醜的預設Icon

 

怎麼換呢?

private extern static bool SetConsoleIcon(IntPtr handle);

在你的Console呼叫SetConsoleIcon這一個Win API就可以了

 

範例

using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;

namespace Sample
{
    class Program
    {
        [DllImport("Kernel32.dll")]
        private extern static bool SetConsoleIcon(IntPtr handle);

        static void Main(string[] args)
        {
            Icon icon = new Icon(Path.GetFullPath("icon.ico"));
            SetConsoleIcon(icon.Handle);
        }
    }
}

如果你有在專案屬性中設定DLL的Icon,其實也可以使用同一個設定

image
圖三 專案的屬性視窗

using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;

namespace Sample
{
    class Program
    {
        [DllImport("Kernel32.dll")]
        private extern static bool SetConsoleIcon(IntPtr handle);

        static void Main(string[] args)
        {
            var assembly = typeof(Program).Assembly;
            Console.Title = Path.GetFileNameWithoutExtension(assembly.Location);
            Icon icon = Icon.ExtractAssociatedIcon(assembly.Location);
            SetConsoleIcon(icon.Handle);
        }
    }
}

 

結果

image

image

 

是不是好看許多