【WinUI 3】用H.NotifyIcon显示系统任务栏(托盘)图标,实现程序后台运行

本文介绍了如何在WinUI 3应用程序中利用H.NotifyIcon库显示系统任务栏图标,实现在后台运行。由于UWP限制,需要借助Win32 API。通过NuGet安装H.NotifyIcon包,并在代码中正确声明和使用,确保在退出程序时释放资源。此外,文章提到该库允许创建WinUI风格的菜单栏,符合Fluent Design,同时提供了更多功能的探索链接。
摘要由CSDN通过智能技术生成

前言&问题背景

Windows平台上很多需要持续后台运行的程序,都有显示任务栏图标的需求,主要来显示状态信息、提供功能菜单栏。但UWP或Windows App SDK并没有提供对应的API,相反可能是在有意的抑制此项功能,我有理由怀疑是微软的战略布局。

但很显然,这项功能目前并不能有其它完美的替代解决方案,所以需要借助其它手段调用Win32 API实现。确实如此,GitHub中H.NotifyIcon库就帮助我们在WPF和WinUI平台上实现了。我们只需使用其NuGet包即可显示自己的任务栏图标。

但请注意,UWP程序强调生命周期管理,在后台期间会自动挂起。在官方的文档中,UWP确实有“在后台无限期运行”的解决方案,但一经使用则不能发布到Microsoft Store。为了响应其设计理念、也因为作者确实此方面涉足不深,本篇文章不探讨UWP平台的任务栏图标功能或后台运行功能。

解决方案

在NuGet源中,找到H.NotifyIcon包,根据你的需要选择H.NotifyIcon.WinUIH.NotifyIcon.Uno等包并安装。
注意,根据项目实例和自述文件,可以有多种声明与使用方法

  1. 直接全部在MainWindow内声明
<Window 
	...
	xmlns:tb="using:H.NotifyIcon"
	>
	<Grid>
		<Grid.Resources>
	        <MenuFlyout x:Key="TrayContextFlyout">
	            <MenuFlyoutItem Command="{StaticResource XamlUICommand类指令}" />
	            <MenuFlyoutSeparator />
	            <MenuFlyoutItem Command=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值