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

如何使用.NET在Windows 10/11通知区域显示自定义指定文本

.NET实现Windows 10/11任务栏自定义文本标识方案

实现路径总览

你要实现的类似输入法「ENG」的文本标识有两种可落地的实现方式,可根据需求选择:

方案1:动态生成文本图标嵌入系统托盘(实现成本最低)

不需要做系统级扩展,仅用.NET基础API即可实现,显示效果和需求基本一致。

实现逻辑

将自定义文本渲染为16x16的透明背景图标,插入到系统通知区域(托盘)显示,可随时更新文本内容。

核心实现代码(C#)

如果是.NET 5+环境,需要先安装NuGet包System.Drawing.Common,仅支持Windows平台运行:

using System.Drawing;
using System.Windows.Forms;

namespace TrayTextDemo
{
    public class TrayTextHelper
    {
        private readonly NotifyIcon _notifyIcon;

        public TrayTextHelper()
        {
            _notifyIcon = new NotifyIcon
            {
                Visible = true
            };
        }

        /// <summary>
        /// 更新托盘显示的文本
        /// </summary>
        /// <param name="displayText">最多支持3位英文字符/2位中文字符</param>
        public void UpdateDisplayText(string displayText)
        {
            using var bmp = new Bitmap(16, 16);
            using var g = Graphics.FromImage(bmp);
            // 透明背景
            g.Clear(Color.Transparent);
            // 优化文本显示清晰度
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
            // 绘制文本,字体可按需调整
            g.DrawString(displayText, new Font("Segoe UI", 9f, FontStyle.Regular), Brushes.White, 0, 0);
            // 替换托盘图标
            _notifyIcon.Icon = Icon.FromHandle(bmp.GetHicon());
        }

        /// <summary>
        /// 释放资源,程序退出时调用
        /// </summary>
        public void Dispose()
        {
            _notifyIcon?.Dispose();
        }
    }

    // 调用示例
    internal class Program
    {
        static void Main(string[] args)
        {
            var trayHelper = new TrayTextHelper();
            // 显示自定义文本ABC
            trayHelper.UpdateDisplayText("ABC");
            // 保持进程运行
            Application.Run();
            // 退出时释放
            trayHelper.Dispose();
        }
    }
}

方案2:自定义Desk Band(实现和ENG完全一致的位置效果)

如果需要和输入法标识完全同位置显示,需要实现Shell扩展的Desk Band组件:

  • 实现IDeskBand、IObjectWithSite、IPersistStream等Shell扩展必需的COM接口
  • 使用管理员权限将开发好的COM组件注册到系统注册表
  • 右键任务栏->工具栏->勾选你开发的自定义工具栏即可显示

注意事项

该方案开发成本较高,且Windows 11对Desk Band的兼容性弱于Windows 10,部分自定义主题可能出现显示异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:45:02