是否可以从控制台应用程序发送Toast通知?

是否有可能使用ToastNotificationManager控制台应用程序发送Toast通知

我知道可以从Windows通用应用发送Toast通知:

var toast = new ToastNotification(doc); ToastNotificationManager.CreateToastNotifier().Show(toast); 

* doc – Toast存储在XMLstring中

要使用ToastNotificaionManager我需要Windows.UI.Notifications库,我不能在控制台应用程序项目中引用。

我之前提到过的库实际上是由WinRT使用的。 Windows控制台应用程序中是否可以使用WinRT API?

Solutions Collecting From Web of "是否可以从控制台应用程序发送Toast通知?"

首先,您需要声明您的程序将使用winRT库:
1.右键单击您的项目 ,选择卸载项目
2.右键单击您的项目(不可用),然后单击编辑yourProject.csproj
3.添加一个新的属性组: <targetplatformversion>8.0</targetplatformversion>
4.重新加载项目
5.从Windows> Core添加引用Windows
在这里输入图像说明

现在你需要添加这个代码:

 using Windows.UI.Notifications; 

您将能够使用此代码发送通知:

 var toast = new ToastNotification(doc); ToastNotificationManager.CreateToastNotifier().Show(toast); 

参考: 如何从C#桌面应用程序中调用Windows 8中的WinRT API – WinRT图

我遇到了一些问题Evaldas B的代码我错过了一个字符串。 (这里需要字符串的地方)

.CreateToastNotifier(<needed a string here>).Show(toast);

警告我对C#是一种新鲜的东西,所以我的代码可能很糟糕,但它确实有效,而且非常简单,对于我找到的大多数解决方案

另外我有一个时间让XML文件阅读。 我与System.xml(我认为)和Windows.Data.Dom.Xml(也不完全确定)战斗。 最后,我决定让它们成为我的示例文件的硬编码字符串,并使用switch语句在它们之间切换。 我发现了很多人,在堆栈溢出的时候寻找我提出的解决方案。 似乎在控制台或后台应用程序中使用烤面包通知系统将是超级有用的,围绕烤面包通知系统与Windows应用程序的文档都建议它需要与应用程序一起使用。 该行动中心是非常有用的NotificationTray / NotifyIcon路由通知。 我还没有在网络上的其他地方找到完整的解决方案。 这里是示例代码。

 /* At first you need to declare that your program will be using winRT libraries: 1. Right click on your yourProject, select Unload Project 2. Right click on your youProject(unavailable) and click Edit yourProject.csproj 3. Add a new property group:<TargetPlatformVersion>8.0</TargetPlatformVersion> 4. Reload project 5. Add referece Windows from Windows > Core */ using System; using Windows.Data.Xml.Dom; using Windows.Storage; using Windows.Storage.Streams; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Windows.UI.Notifications; namespace ConsoleApplication6 { public class NewToastNotification { public NewToastNotification(string input, int type) { string NotificationTextThing = input; string Toast = ""; switch (type) { case 1: { //Basic Toast Toast = "<toast><visual><binding template=\"ToastImageAndText01\"><text id = \"1\" >"; Toast += NotificationTextThing; Toast += "</text></binding></visual></toast>"; break; } default: { Toast = "<toast><visual><binding template=\"ToastImageAndText01\"><text id = \"1\" >"; Toast += "Default Text String"; Toast += "</text></binding></visual></toast>"; break; } } XmlDocument tileXml = new XmlDocument(); tileXml.LoadXml(Toast); var toast = new ToastNotification(tileXml); ToastNotificationManager.CreateToastNotifier("New Toast Thing").Show(toast); } } class Program { static void Main(string[] args) { NewToastNotification Window = new NewToastNotification("Yes",1); } } }