You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI 3中如何将窗口从任务栏中隐藏

在WinUI 3中实现窗口不在任务栏显示

WinUI 3确实没有提供直接可设置的ShowInTaskbar属性,要实现这个需求,需要通过调用Win32 API修改窗口的扩展样式来达成,具体方案如下:

核心思路

带有WS_EX_APPWINDOW扩展样式的窗口会在任务栏显示,而WS_EX_TOOLWINDOW样式的窗口则不会。我们需要通过Win32 API移除窗口的WS_EX_APPWINDOW样式,同时添加WS_EX_TOOLWINDOW样式。

实现步骤与代码

  1. 添加Win32 API的P/Invoke声明
    在项目中创建一个类,包含所需的API调用声明:
using System.Runtime.InteropServices;

public static class Win32WindowHelper
{
    private const int GWL_EXSTYLE = -20;
    private const uint WS_EX_APPWINDOW = 0x00040000;
    private const uint WS_EX_TOOLWINDOW = 0x00000080;

    [DllImport("user32.dll", SetLastError = true)]
    public static extern IntPtr GetWindowLongPtr(IntPtr hWnd, int nIndex);

    [DllImport("user32.dll", SetLastError = true)]
    public static extern IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
}
  1. 在窗口加载后修改样式
    需要在窗口完成加载、获取到有效句柄后执行样式修改操作,比如在App.xaml.cs的OnLaunched方法中:
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
    m_window = new MainWindow();
    m_window.Activate();

    m_window.Loaded += (sender, e) =>
    {
        // 获取WinUI窗口的底层句柄
        IntPtr hwnd = WinRT.Interop.WindowNative.GetWindowHandle(m_window);
        if (hwnd == IntPtr.Zero) return;

        // 获取当前窗口的扩展样式
        IntPtr currentExStyle = Win32WindowHelper.GetWindowLongPtr(hwnd, Win32WindowHelper.GWL_EXSTYLE);
        // 移除任务栏显示样式,添加工具窗口样式
        uint newExStyle = (uint)currentExStyle.ToInt64() & ~Win32WindowHelper.WS_EX_APPWINDOW | Win32WindowHelper.WS_EX_TOOLWINDOW;
        Win32WindowHelper.SetWindowLongPtr(hwnd, Win32WindowHelper.GWL_EXSTYLE, (IntPtr)newExStyle);
    };
}

注意事项

  • 必须等待窗口激活并加载完成后再执行样式修改,否则无法获取有效窗口句柄。
  • 如果是弹窗类窗口,同样可以在其Loaded事件中执行上述逻辑。
  • 添加WS_EX_TOOLWINDOW会让窗口标题栏样式略有变化,若想保留原标题栏样式,可尝试仅移除WS_EX_APPWINDOW样式,但这种方式在部分系统环境下可能存在稳定性问题,推荐同时添加WS_EX_TOOLWINDOW。

内容的提问来源于stack exchange,提问作者GHOST

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:55:11