系统托盘应用程序每2小时通知一次

时间:2010-11-23 21:48:04

标签: wpf system-tray

我正在尝试制作一个在启动时加载的系统托盘应用程序,并每2小时弹出一个气球文本。如果有这样一个例子它很棒。

我希望使用。

WPF, 计时器, 代表,活动

我不确定这些是否足够或我还需要更多东西。

提前致谢。

3 个答案:

答案 0 :(得分:1)

首先,您需要在系统启动时启动应用程序: 假设我有一个复选框,如果激活此复选框,我想在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的引用

答案 1 :(得分:1)

我认为你会很好。您只需要一个NotifyIcon和一个Timer。我已经完成了类似的方式,除了我没有使用WPF(我更喜欢使用'经典'窗口设计器)。

让你的应用程序在启动时启动的最简单方法可能是将它放入“开始”菜单中的“启动”文件夹中,实际上不需要使用注册表。

答案 2 :(得分:0)

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