簡體   English   中英

將不同的任務欄圖標設置為標題欄(C#)中顯示的圖標?

[英]Setting a different taskbar icon to the icon displayed in the titlebar (C#)?

我有應用程序圖標的深色和淺色版本; 黑暗版本最適用於灰色表面,例如Windows XP任務欄,其中燈光版本最適合作為標題欄中的圖標。

有沒有辦法可以將任務欄中的圖標設置為與C#中我的表單中使用的圖標不同的圖標(P / Invoke很好)?

將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);
}

我知道這是一個古老的問題,但是當我嘗試實現相同的目標時,我遇到了它,而且是的,你至少可以在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 Visual Studio中的表單/ WPF表單。

最終結果如下所示:

WPF

正如您所看到的,我的WPF應用程序有兩個單獨的圖標,一個在任務欄中,另一個在窗體上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM