【发布时间】:2010-11-23 21:48:03
【问题描述】:
我正在尝试制作一个系统托盘应用程序,该应用程序在启动时加载并每 2 小时弹出一个气球文本。如果有这样的例子那就太好了。
我正在寻找使用。
WPF, 计时器, 代表、活动
我不确定这些是否足够,或者我还需要更多。
提前致谢。
【问题讨论】:
标签: wpf system-tray
我正在尝试制作一个系统托盘应用程序,该应用程序在启动时加载并每 2 小时弹出一个气球文本。如果有这样的例子那就太好了。
我正在寻找使用。
WPF, 计时器, 代表、活动
我不确定这些是否足够,或者我还需要更多。
提前致谢。
【问题讨论】:
标签: wpf system-tray
我想你会接受这些的。实际上,您需要的只是一个 NotifyIcon 和一个 Timer。我以这种方式完成了类似的工作,只是我没有使用 WPF(我宁愿使用“经典”窗口设计器)。
让您的应用在启动时启动的最简单方法可能是将其放入“开始”菜单的“启动”文件夹中,实际上不需要使用注册表。
【讨论】:
首先,您需要在系统启动时启动应用程序: 假设我有一个复选框,如果激活此复选框,我想在 Windows 启动时启动我的应用程序:
RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
private void checkBox_autoStart_Checked(object sender, RoutedEventArgs e)
{
rkApp.SetValue("Your Application Name Here",Assembly.GetExecutingAssembly().Location);
}
以及关于您执行以下操作的停用:
private void checkBox_autoStart_Unchecked(object sender, RoutedEventArgs e)
{
rkApp.DeleteValue("Your Application Name Here", false);
}
p.s : 你的应用程序名称会以你写的方式出现在任务管理器中
关于使用通知图标,实际上 WPF 不支持现成的图标,因此您要么使用 Windows 窗体通知图标,要么使用 codeproject.com 的另一个答案中提到的图标
如果你想使用已经存在于 windows 窗体中的那个,你必须在你的项目中添加对 System.Windows.Forms 的引用
【讨论】:
Windows 服务可能是在后台运行的最佳选择,但从服务访问 GUI 可能会很棘手(我认为这并不简单)。
要让 WPF 桌面应用程序执行托盘通知,请参阅此项目的演示和源代码:http://www.codeproject.com/KB/WPF/WPF_xaml_taskbar_window.aspx
要每 2 小时收到一次通知,您可以使用 DispatcherTimer: http://social.msdn.microsoft.com/Forums/en/wpf/thread/aaffea95-e735-492d-bd8a-2fdf7099a936
【讨论】: