【问题标题】:System tray application to notify every 2 hours系统托盘应用程序每 2 小时通知一次
【发布时间】:2010-11-23 21:48:03
【问题描述】:

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

我正在寻找使用。

WPF, 计时器, 代表、活动

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

提前致谢。

【问题讨论】:

    标签: wpf system-tray


    【解决方案1】:

    我想你会接受这些的。实际上,您需要的只是一个 NotifyIcon 和一个 Timer。我以这种方式完成了类似的工作,只是我没有使用 WPF(我宁愿使用“经典”窗口设计器)。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        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

        【讨论】:

        • 如果服务经常运行代码,我可以看到它是该系统的一个很好的组件,除非已经有一个专门用于间歇性工作的任务计划程序。为什么不使用它。
        猜你喜欢
        • 2018-05-31
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多