C#设置应用程序图标时设置快捷方式图标

C#设置应用程序图标时设置快捷方式图标,c#,wpf,taskbar,C#,Wpf,Taskbar,我正在尝试设置应用程序的图标(在任务栏中可见)。当我运行.exe本身或从visual studio运行它时,该图标是正确的,但从快捷方式启动时不适用。。应用程序内部的图标(左上角)是正确的 用于设置图标的代码: var assemblyDirectory = Directory.GetCurrentDirectory(); var iconUri = new Uri(Path.Combine(assemblyDirectory, resourceName), UriKind.Absolute);

我正在尝试设置应用程序的图标(在任务栏中可见)。当我运行.exe本身或从visual studio运行它时,该图标是正确的,但从快捷方式启动时不适用。。应用程序内部的图标(左上角)是正确的

用于设置图标的代码:

var assemblyDirectory = Directory.GetCurrentDirectory();
var iconUri = new Uri(Path.Combine(assemblyDirectory, resourceName), UriKind.Absolute);
Icon= BitmapFrame.Create(iconUri);
我试图添加一个红色圆圈,表示我的应用程序对用户所做的更改,这是通过在两个图标之间进行更改来完成的


您知道如何在运行时设置快捷方式的图标,或者如何在任务栏图标中显示一个红色圆圈以指示更改吗?

虽然无法在运行时设置程序集图标(它是只读的),但您可以使用
NotifyIcon
在系统托盘中显示图标,并且在运行时很容易更改

以下是如何实现NotifyIcon的示例:

注意:由于您使用的是WPF,因此需要在应用程序中包含对Windows.Forms的引用

编辑:为了防止链接失效,这里是Program.cs的一些代码示例,需要导入一个“图标”作为资源:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    Application.Run(new MyCustomApplicationContext());
}

public class MyCustomApplicationContext : ApplicationContext
{
    public static NotifyIcon trayIcon;

    public MyCustomApplicationContext()
    {
        trayIcon = new NotifyIcon()
        {
            Icon = icon,
            ContextMenu = new ContextMenu(new MenuItem[]
            {
                new MenuItem("Exit", Exit),
                new MenuItem("Do something", DoSomething),
            }),
            Visible = true,
            BalloonTipText = "My Application",
            BalloonTipTitle = "My Application",
            Text = "My Application Text"
        };
        trayIcon.Click += new System.EventHandler(trayIcon_Click);
    }

    private void trayIcon_Click(object sender, System.EventArgs e)
    {
        //Do something
    }

    void DoSomething(object sender, EventArgs e)
    {
    }

    void Exit(object sender, EventArgs e)
    {
        // Hide tray icon, otherwise it will remain shown until user mouses over it
        trayIcon.Visible = false;

        Application.Exit();
    }
}

它的可能副本不是。获取程序集的路径没有问题。问题是设置图标。您的快捷方式有什么特别之处吗?i、 e.它是直接启动.exe还是通过
runas
以其他用户的身份启动?不可能,好的。与表单图标不同,应用程序图标是只读的。如果您可以更改任务栏中显示的图标,而不考虑快捷方式图标,是否就足够了?