2010-11-23 61 views
2

通知我試圖讓加載啓動和彈出氣球文本中每2小時系統托盤中的應用。如果有這樣一個例子它很棒。系統托盤中的應用,以每2小時

我期待使用。

WPF, 定時器, 代表,事件

我不知道,如果這些都足以或做我需要更多的東西。

在此先感謝。

回答

1

我想你會沒事的。你所需要的只是一個NotifyIcon和一個Timer。我已經完成了類似的方式,除了我沒有使用WPF(我寧願使用'古典'窗口設計器)。

讓您的應用程序在啓動時啓動的最簡單方法可能是將其放入Start菜單的Startup文件夾中,實際上不需要使用註冊表。

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

+0

我可以看到一個服務是這個系統的一個很好的組件,如果它經常運行代碼,除了已經有一個專門用於間歇性事件的任務計劃程序。爲什麼不使用它。 – zanlok 2010-12-14 00:27:23

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); 
    } 

和有關的停用你的follwoing:

private void checkBox_autoStart_Unchecked(object sender, RoutedEventArgs e) 
    { 
     rkApp.DeleteValue("Your Application Name Here", false); 
    } 

PS:您的應用程序名稱將出現在任務管理器,你把它寫在那裏的方式

以及使用一個通知圖標,實際上WPF不支持現成的,所以要麼你使用Windows窗體通知圖標,要麼使用codeproject.com提供的另一個答案中提到的那個圖標,如果你想使用Windows中已經存在的圖標,你可以使用下面的代碼:

表單,你必須在你的系統中添加對System.Windows.Forms的引用項目