首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++/C# 在 Windows 10 通知中心顯示程式通知的實作方式

     編輯:程式設計綜合問答

背景知識

Windows 10 將傳統的「氣泡提示」整合至通知中心,開發者需使用 Toast Notification API 而非舊版 Shell_NotifyIcon(NIM_MODIFY, ...) 的氣泡方式。雖然舊 API 仍能運作,但外觀會自動轉換為 Toast 樣式,且功能受限(無法支援按鈕、圖片、輸入框等豐富互動)。

C# 實作(推薦使用 UWP Community Toolkit)

// NuGet 安裝 Microsoft.Toolkit.Uwp.Notifications
using Microsoft.Toolkit.Uwp.Notifications;

new ToastContentBuilder()
    .AddText("標題:任務完成")
    .AddText("內容:資料備份已於 14:30 完成。")
    .AddButton(new ToastButton()
        .SetContent("查看詳情")
        .AddArgument("action", "viewDetail")
        .AddArgument("taskId", "12345"))
    .AddAppLogoOverride(new Uri("ms-appx:///Assets/Logo.png"), ToastGenericAppLogoCrop.Circle)
    .Show(); // 直接發送

C++ 實作(WinRT / Desktop Bridge)

傳統 Win32 桌面應用程式需透過 Desktop Bridge 封裝為 MSIX,或使用 windows.data.xml.dom + Windows.UI.Notifications 配合 ToastNotificationManager:

#include 
#include 

using namespace winrt;
using namespace Windows::Data::Xml::Dom;
using namespace Windows::UI::Notifications;

void SendToast()
{
    init_apartment();
    
    // 1. 載入 Toast 範本 XML
    XmlDocument xml;
    xml.LoadXml(LR"(
        
            
                
                    編譯完成
                    專案 MyApp 建置成功,耗時 1 分 23 秒。
                
            
            
                
            
        
    )");

    // 2. 建立並顯示通知
    ToastNotification toast(xml);
    ToastNotificationManager::CreateToastNotifier(L"YourAppId").Show(toast);
}

必要條件: 應用程式必須有 AppUserModelId (AUMI),且已在開始選單安裝捷徑(或透過 MSIX 部署),否則 Toast 不會顯示。

舊版氣泡提示相容性說明

若維護舊專案,仍在使用 NOTIFYICONDATA + Shell_NotifyIcon(NIM_MODIFY, ...) 並設定 szInfoTitle/szInfo:

  • Windows 10 會自動將其轉換為基本 Toast 顯示。
  • 不支援按鈕、圖片、進度條等豐富功能。
  • 建議漸進式遷移至 Toast API 以獲得完整體驗。

測試與除錯提示

  1. 確認 Settings > System > Notifications & actions 中應用程式通知開關為「開啟」。
  2. 使用 ToastNotificationManager.History.Clear() 清除歷史避免干擾測試。
  3. C# 專案可安裝 Microsoft.Toolkit.Uwp.Notifications NuGet 套件,大幅簡化 XML 組裝。

總結

Windows 10 通知中心基於 Toast Notification 架構。C# 開發者建議使用 UWP Community Toolkit;C++ 需引入 WinRT 標頭並確保擁有有效 AUMI。舊版氣泡提示雖相容但功能受限,新專務應直接採用 Toast API。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved