Windows 10中的吐司通知非常棒,有许多为通用Windows平台(UWP)应用程序编写的C#代码示例,但我找不到任何为非UWP(.NET框架中的Windows经典桌面)编写的示例。我想在我的下一个C#项目中有这个功能,但想用非UWP C#编码,这是可能的?有人能给我一些代码示例吗?
mrphzbgm1#
若要在Windows 10中从非UWP应用发送吐司通知,请参阅**Quickstart: Handling toast activations from Win32 apps in Windows 10**。这将向您展示如何注册COM服务器,以便您的用户可以单击Toast来启动您的应用(由于Toast保存在操作中心中,因此可以随时单击并启动它们,即使您的应用已关闭)。
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()); }
2条答案
按热度按时间mrphzbgm1#
若要在Windows 10中从非UWP应用发送吐司通知,请参阅**Quickstart: Handling toast activations from Win32 apps in Windows 10**。
这将向您展示如何注册COM服务器,以便您的用户可以单击Toast来启动您的应用(由于Toast保存在操作中心中,因此可以随时单击并启动它们,即使您的应用已关闭)。
yiytaume2#
你可以使用嵌入在C#中的powershell。这在依赖性很少的情况下工作得很好,甚至可以在ssis中运行。