将不同的任务栏图标设置为标题栏(C#)中显示的图标?

Hac*_*Que 19 c# icons winforms

我有应用程序图标的深色和浅色版本; 黑暗版本最适用于灰色表面,例如Windows XP任务栏,其中灯光版本最适合作为标题栏中的图标.

有没有办法可以将任务栏中的图标设置为与C#中我的表单中使用的图标不同的图标(P/Invoke很好)?

And*_*ler 15

将WM_SETICON消息发送到具有ICON_SMALL和ICON_BIG参数的不同图标句柄的表单:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, IntPtr lParam);

private const uint WM_SETICON = 0x80u;
private const int ICON_SMALL = 0;
private const int ICON_BIG = 1;

public MyForm()
{
    InitializeComponent();

    SendMessage(this.Handle, WM_SETICON, ICON_SMALL, Properties.Resources.IconSmall.Handle);
    SendMessage(this.Handle, WM_SETICON, ICON_BIG, Properties.Resources.IconBig.Handle);
}
Run Code Online (Sandbox Code Playgroud)

  • 你能给我更多的信息吗?我不知道如何应用此解决方案 (2认同)

JMK*_*JMK 6

我知道这是一个古老的问题,但是当我尝试实现相同的目标时,我遇到了它,而且是的,你至少可以在Windows 7/8上做到这一点.

事实证明,ICO文件不仅包含一个图像,它包含9种不同分辨率的9种不同图像:

  • 16×16
  • 24×24
  • 32×32
  • 48×48
  • 64×64
  • 最高72x72
  • 80×80
  • 96×96
  • 128×128

在Windows 7和8上,任务栏上使用64x64图像,图表上使用16x16图像,该图标位于表单的左上角.

您可以使用像Greenfish Icon Editor Pro这样的工具(我不适用于它们或任何东西,这不是插件!)将这些作为两个单独的图像,然后将此*.ico文件正常添加到Windows窗体/ WPF Visual Studio中的表单.

最终结果如下所示:

WPF

正如您所看到的,我的WPF应用程序有两个单独的图标,一个在任务栏中,另一个在窗体上.