Назначить системный значок на ярлык - PullRequest
2 голосов
/ 06 декабря 2010

Я сейчас занимаюсь разработкой приложения на c #. Я делаю свое собственное окно сообщений, поэтому мне было интересно, можно ли было бы назначить ярлык системной иконке по умолчанию (то есть одной из икон, которые вы видите на стандартном MessageBox).

Ответы [ 3 ]

6 голосов
/ 16 августа 2011
System.Drawing.Icon myIcon = new System.Drawing.Icon(System.Drawing.SystemIcons.Question,32,32);
label.Image = myIcon.ToBitmap();
4 голосов
/ 06 декабря 2010

Вы можете взаимодействовать с System.Drawing и System.Windows.Forms:

System.Drawing.Icon icon = System.Drawing.SystemIcons.Warning;

BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(icon.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

image1.Source = bs;
1 голос
/ 06 декабря 2010

SLaks решение, вероятно, самый простой путь.Если по какой-то причине вы не хотите использовать функции Windows Forms, вы можете легко реализовать себя:

public enum SystemIcons
{
    Application = 32512,
    Error = 32513,
    Hand = Error,
    Question = 32514,
    Warning = 32515,
    Exclamation = Warning,
    Information = 32516,
    Asterisk = Information,
    WinLogo = 32517,
    Shield = 32518,
}

public static ImageSource LoadSystemIcon(SystemIcons iconId)
{
    string iconName = "#" + ((int)iconId);
    IntPtr hIcon = LoadIcon(IntPtr.Zero, iconName);
    if (hIcon == IntPtr.Zero)
        return null;

    return System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(
        hIcon, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
}

[DllImport("user32.dll")]
static extern IntPtr LoadIcon(IntPtr hInstance, string lpIconName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...