我在C#中使用NotifyIcon获得了一个Windows窗体项目。我正在使用以下代码显示气球通知:
notifyIcon.ShowBalloonTip(1000, "title", "text", ToolTipIcon.Info);
这在Windows 8.1之前运行良好。现在我安装了Windows 10预览版,气球通知不再出现了。
我猜所有通知都会移到Windows 8风格的Toast通知中,并且气球通知已完全删除(因为我还没有看过一个气球通知,还有更多的Toast通知),但是我还没有找到官方消息来源。
问题是我的应用程序只是一个.exe文件,因此它没有安装程序或快捷方式。根据{{3}}页面,需要一个创建快捷方式的安装程序才能使Toast通知正常工作。
如何在没有任何快捷方式或安装程序的情况下在Windows 10中显示通知(我不在乎它是气球还是吐司通知)?
答案 0 :(得分:1)
我用这个帖子来帮助制作这段代码 - 我正在分享我的成功。
警告我对C#不熟悉,所以我的代码可能很糟糕 - 但它确实有效并且非常简单,而且对于我找到的大多数解决方案而言,这比我能说的更多 < / p>
此外,我还有一段时间来阅读xml文档。我正在使用System.xml(我认为)和Windows.Data.Dom.Xml(也不完全确定)。 最后,我决定为我的示例文件制作硬编码字符串,并使用switch语句在它们之间切换。 我找到了很多人,在堆栈溢出时寻找我提出的解决方案。似乎使用带有控制台或后台应用程序的Toast通知系统将非常有用,并且使用Windows应用程序围绕Toast通知系统的文档都表明它需要与应用程序一起使用。对于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);
}
}
}
答案 1 :(得分:0)
嗯,在技术预览的最后一次更新(系统托盘旁边有一个通知中心的那个)之后,它正在工作。
我的通知显示正常,没有任何代码更改。它们就像普通的Windows 8风格的Toast通知一样,除了这些通知显示在底部。
答案 2 :(得分:0)
这个解决方案对我有用: