Windows 10「操作中心」通知本質上是 Toast 通知,演進自舊版「氣泡提示」。C++/C# 均可透過 Windows Runtime (WinRT) API 或 Desktop Bridge 發送。
Yes (/ZW)。Microsoft.Windows.CppWinRT、Microsoft.Windows.SDK.Contracts。<toast>
<visual>
<binding template="ToastGeneric">
<text>標題:新訊息</text>
<text>內容:您有一則新通知</text>
<image placement="appLogoOverride" src="ms-appx:///Assets/Logo.png"/>
</binding>
</visual>
<actions>
<action content="查看" arguments="action=view"/>
<action content="忽略" arguments="action=dismiss"/>
</actions>
</toast>
#include
#using namespace winrt::Windows::UI::Notifications;
#using namespace winrt::Windows::Data::Xml::Dom;
void SendToast() {
// 載入 XML
XmlDocument doc;
doc.LoadXml(LR"(...XML內容... )");
// 建立通知器
ToastNotifier notifier = ToastNotificationManager::CreateToastNotifier();
ToastNotification toast(doc);
// 可選:設定過期時間、標籤、群組
toast.ExpirationTime(chrono::hours(1));
toast.Tag(L"my_tag");
toast.Group(L"my_group");
// 發送
notifier.Show(toast);
}
using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
public void ShowToast(string title, string body) {
string xml = $@"
{title} {body} ";
var doc = new XmlDocument();
doc.LoadXml(xml);
var notifier = ToastNotificationManager.CreateToastNotifier();
notifier.Show(new ToastNotification(doc));
}
需在 Package.appxmanifest 宣告 uap:ToastCapable,或使用 MSIX 封裝 / Desktop Bridge 取得應用身分識別。
若不想打包 MSIX,可沿用 Shell_NotifyIcon + NIF_INFO 顯示系統托盤氣泡,但不會進入操作中心歷史記錄,且 Windows 11 已棄用。
ToastNotificationManager.History.Clear() 避免殘留影響除錯。現代 Windows 通知請走 WinRT Toast API,C++ 使用 C++/WinRT,C# 直接引用 UWP 命名空間,並確保應用有正確身分識別(MSIX/捷徑)。