.net 是否可以在Windows 10中从非UWP C#应用发送吐司通知?

q9rjltbz  于 2022-11-19  发布在  .NET
关注(0)|答案(2)|浏览(224)

Windows 10中的吐司通知非常棒,有许多为通用Windows平台(UWP)应用程序编写的C#代码示例,但我找不到任何为非UWP(.NET框架中的Windows经典桌面)编写的示例。
我想在我的下一个C#项目中有这个功能,但想用非UWP C#编码,这是可能的?有人能给我一些代码示例吗?

mrphzbgm

mrphzbgm1#

若要在Windows 10中从非UWP应用发送吐司通知,请参阅**Quickstart: Handling toast activations from Win32 apps in Windows 10**。
这将向您展示如何注册COM服务器,以便您的用户可以单击Toast来启动您的应用(由于Toast保存在操作中心中,因此可以随时单击并启动它们,即使您的应用已关闭)。

yiytaume

yiytaume2#

你可以使用嵌入在C#中的powershell。这在依赖性很少的情况下工作得很好,甚至可以在ssis中运行。

using System.IO;
using System.Configuration;
using System.Management.Automation;

try
{

    // run powershell script

    var script = @"
    $ErrorActionPreference = ""Stop""
    $notificationTitle = ""Notification: Your script:" + popupMessage + @" has been completed successfully""
        [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
    $template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText01)
    $toastXml = [xml] $template.GetXml()
    $toastXml.GetElementsByTagName(""text"").AppendChild($toastXml.CreateTextNode($notificationTitle)) > $null
    $xml = New-Object Windows.Data.Xml.Dom.XmlDocument
    $xml.LoadXml($toastXml.OuterXml)
    $toast = [Windows.UI.Notifications.ToastNotification]::new($xml)
    $toast.Tag = ""Test1""
    $toast.Group = ""Test2""
    $toast.ExpirationTime = [DateTimeOffset]::Now.AddSeconds(15)
    $notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier(""Script Completed!"")
    $notifier.Show($toast);
    ";

    var _powershell = PowerShell.Create().AddScript(script);
    _powershell.Invoke();
    foreach (var errorRecord in _powershell.Streams.Error)
        Console.WriteLine(errorRecord);

}
catch (System.Exception ex)
{
    Console.WriteLine(ex.ToString());

}

相关问题