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

如何用C#在Windows 10锁屏上显示自定义文本,实现类似Spotify的效果

解决方案

你要实现的Chrome/Spotify类锁屏常驻文本+控制效果,本质是集成了Windows系统媒体传输控件(SMTC)能力,你之前用普通Toast通知的方向是错误的。完整操作步骤如下:

1. 配置应用清单

首先打开项目的Package.appxmanifest文件完成两项配置:

  • 切换到「声明」选项卡,添加「后台任务」声明,勾选「媒体播放」任务类型,入口点填写你应用内存在的任意类名即可
  • 切换到「应用」选项卡,找到「锁屏通知」下拉选择框,选中「徽章和文本通知」

2. 集成SMTC实现锁屏媒体信息展示

这部分是实现你要的锁屏效果的核心逻辑,示例代码如下:

using Windows.Media;
using Windows.Storage.Streams;

// 获取当前视图的SMTC实例
var smtc = SystemMediaTransportControls.GetForCurrentView();
// 启用SMTC基础能力
smtc.IsEnabled = true;
smtc.IsPlayEnabled = true;
smtc.IsPauseEnabled = true;

// 构造要在锁屏展示的媒体信息
var updater = smtc.DisplayUpdater;
updater.Type = MediaPlaybackType.Music;
// 配置展示文本
updater.MusicProperties.Title = "自定义主标题文本";
updater.MusicProperties.Artist = "自定义副标题文本";
updater.MusicProperties.AlbumTitle = "自定义辅助文本";
// 可选:配置展示的封面图
// updater.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/cover.jpg"));
// 提交更新,提交后锁屏即可看到对应内容
updater.Update();

// 可选:注册控制按钮点击回调
smtc.ButtonPressed += (sender, args) =>
{
    if (args.Button == SystemMediaTransportControlsButton.Play)
    {
        // 处理播放逻辑
        smtc.PlaybackStatus = MediaPlaybackStatus.Playing;
    }
    else if (args.Button == SystemMediaTransportControlsButton.Pause)
    {
        // 处理暂停逻辑
        smtc.PlaybackStatus = MediaPlaybackStatus.Paused;
    }
};

(可选)如果你需要用普通Toast实现锁屏文本展示

你之前的Toast代码不生效有两个原因:一是没开清单里的锁屏通知权限,二是没有配置Toast的锁屏展示字段,修正后的示例代码如下:

ToastContent content = new ToastContent()
{
    Scenario = ToastScenario.Reminder,
    Visual = new ToastVisual()
    {
        BindingGeneric = new ToastBindingGeneric()
        {
            // 必须配置主副文本,Attribution不会展示在锁屏上
            Children =
            {
                new AdaptiveText()
                {
                    Text = "锁屏主标题"
                },
                new AdaptiveText()
                {
                    Text = "锁屏副标题"
                }
            },
            // 显式开启锁屏可见
            LockDetails = new ToastLockDetails()
            {
                Visible = true
            }
        }
    },
    Actions = new ToastActionsCustom()
    {
        Buttons = {
            new ToastButton ("按钮内容", "点击参数")
        }
    }
};
var notification = new ToastNotification(content.GetXml());
// 可选:设置Toast常驻到用户手动关闭
notification.ExpirationTime = DateTimeOffset.Now.AddDays(1);
ToastNotificationManager.CreateToastNotifier().Show(notification);

最终验证

代码修改完成后,先进入Windows设置->系统->通知和操作,找到你的应用,确认「在锁屏上显示通知」开关已开启,运行应用触发逻辑后按Win+L锁屏即可看到效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:24:02