Подтвердить что ты не робот

Установка значка другой панели задач на значок, отображаемый в заголовке (С#)?

У меня есть и темные, и светлые версии значка моего приложения; темная версия лучше всего работает на серой поверхности, такой как панель задач Windows XP, где лучшая версия лучше всего работает как значок в заголовке.

Есть ли способ установить значок на панели задач на другой значок, чем тот, который используется в моей форме на С# (P/Invoke - это нормально)?

4b9b3361

Ответ 1

Отправьте сообщение 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);
}

Ответ 2

Я знаю, что это старый вопрос, но я столкнулся с ним, пытаясь добиться того же, и, ну да, вы можете это сделать, по крайней мере, на Windows 7/8.

Оказывается, ICO файл не просто содержит одно изображение, он содержит 9 разных изображений с 9 различными разрешениями:

  • 16х16
  • 24х24
  • 32х32
  • 48х48
  • 64х64
  • 72x72
  • 80х80
  • 96x96
  • 128x128

В Windows 7 и 8 изображение 64x64 используется на панели задач, а изображение 16x16 используется на значке, который помещается в верхний левый угол вашей формы.

Вы можете использовать инструмент, например Greenfish Icon Editor Pro (я не работаю для них или чего-то еще, это не плагин!), чтобы иметь эти два отдельных изображения, а затем добавить этот файл *.ico как обычно в форму Windows Form/WPF в Visual Studio.

Конечный результат показан ниже:

WPF

Как вы можете видеть, мое приложение WPF имеет два отдельных значка: один на панели задач и другой в форме.