如何在任务栏中将新的WPF窗口显示为新的应用程序/图标(win10 c#WPF)
我试图在我的WPF应用程序中启动一个新窗口,但没有将其与主机应用程序堆叠,我查看了上的帖子,但该帖子似乎是针对windows 7的,我试图使用那里提供的代码,但我有一个错误,即如何在任务栏中将新的WPF窗口显示为新的应用程序/图标(win10 c#WPF),c#,wpf,windows-10,taskbar,C#,Wpf,Windows 10,Taskbar,我试图在我的WPF应用程序中启动一个新窗口,但没有将其与主机应用程序堆叠,我查看了上的帖子,但该帖子似乎是针对windows 7的,我试图使用那里提供的代码,但我有一个错误,即该值不在预期范围内。据我所知,该应用程序不会在任务栏中显示为新图标,除非它具有不同的进程ID。是否有任何方法可以使新窗口不堆叠在windows 10的任务栏中 这是我试过的 using Microsoft.WindowsAPICodePack.Taskbar; public void App_Startup(object
该值不在预期范围内。据我所知,该应用程序不会在任务栏中显示为新图标,除非它具有不同的进程ID。是否有任何方法可以使新窗口不堆叠在windows 10的任务栏中
这是我试过的
using Microsoft.WindowsAPICodePack.Taskbar;
public void App_Startup(object sender, StartupEventArgs e)
{
TaskbarManager.Instance.SetApplicationIdForSpecificWindow(new WindowInteropHelper(new window2()).Handle, "Gx3OptimisationWindow");
}
您必须在窗口的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");
}
}