WPF分离任务栏图标 (分离窗口在任务栏的图标,使其变为两个单独的图标)

我们在写WPF窗体程序的时候,可能会有这么一个需求,我们在主窗体上再次打开一个窗体的时候会发现两个窗体的图标在任务栏中是合并的状态,就像下图这样。👇

但是我们有时候的需求需要把下面这两个窗体的图标分开,变为两个独立的图标,就像下面这样。👇

我们只需要借助TaskbarManagerHelper 类中的SetAppIdForWindow 这个方法即可实现。实现代码如下。

我们只需要在主窗体上面设置新开的窗体为独立的应用程序 ID即可。应用程序 ID 是与任务栏交互的一个标识符。通过为窗口设置一个唯一的应用程序 ID,你可以更好地管理任务栏上的图标和通知。

/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        SecondWindow secondWindow = new SecondWindow();
        //分离任务栏图标主要代码。
        TaskbarManagerHelper.SetAppIdForWindow(secondWindow, "Gx3OptimisationWindow");
        secondWindow.Show();
    }
}

TaskbarManagerHelper.SetAppIdForWindow(传入你需要弹出的第二个窗口, 为一个String类型的字符串【可以使用Guid生成一个】);


TaskbarManagerHelper类

public static class TaskbarManagerHelper
{
    // 导入 Windows API 中的设置任务栏应用程序 ID 的方法
    [DllImport("shell32.dll", SetLastError = true)]
    private static extern void SetCurrentProcessExplicitAppUserModelID([MarshalAs(UnmanagedType.LPWStr)] string AppID);

    public static void SetAppIdForWindow(Window window, string appId)
    {
        var helper = new WindowInteropHelper(window);
        SetCurrentProcessExplicitAppUserModelID(appId);
    }
}

使用上述代码应该就可以解决两个窗口的图标在任务栏中不分离的问题了。有需要的可以参考。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李云龙520

觉得文章不错,跪求支持。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值