【问题标题】:How to display a new WPF window as a new app/icon in the taskbar (win10 c#wpf)如何在任务栏中将新的 WPF 窗口显示为新的应用程序/图标(win10 c#wpf)
【发布时间】:2020-03-10 11:58:45
【问题描述】:

我正在尝试在我的 WPF 应用程序中启动一个新窗口,而无需将其与主机应用程序堆叠在一起,我查看了 New taskbar icon when opening a window in WPF 上的帖子,但该帖子似乎适用于 Windows 7,我正在尝试使用那里提供的代码,但我有一个错误说The value does not fall within the expected range。据我了解,该应用程序不会在任务栏中显示为新图标,除非它具有不同的进程 ID。有什么办法可以让新窗口不在 Windows 10 的任务栏中堆叠?

这是我尝试过的

using Microsoft.WindowsAPICodePack.Taskbar;
public void App_Startup(object sender, StartupEventArgs e)
    {
        TaskbarManager.Instance.SetApplicationIdForSpecificWindow(new WindowInteropHelper(new window2()).Handle, "Gx3OptimisationWindow");
    }

【问题讨论】:

    标签: c# wpf windows-10 taskbar


    【解决方案1】:

    您必须在窗口的SourceInitialized 事件处理程序中更改应用程序 ID,因为新创建的 WPF 窗口还没有句柄,只有在演示源初始化该窗口时才获得它的句柄。在您的代码中,您尝试更改没有任何句柄的窗口的应用程序 ID(它为零),因此您观察到的错误

    所以而不是:

    public void App_Startup(object sender, StartupEventArgs e)
    {
        TaskbarManager.Instance.SetApplicationIdForSpecificWindow(new WindowInteropHelper(new window2()).Handle, "Gx3OptimisationWindow");
    }
    

    这样做:

    class Window2
    {
        public Window2()
        {
            InitializeComponent();
            SourceInitialized += (s, e) =>
                TaskbarManager.Instance.SetApplicationIdForSpecificWindow(
                    new WindowInteropHelper(this).Handle,
                    "Gx3OptimisationWindow");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-08-22
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多