2010-11-23 42 views
2

J'essaie de créer une application de barre d'état système qui se charge au démarrage et affiche un texte bulle toutes les 2 heures. S'il y a un tel exemple, c'est génial.Application de la barre d'état système pour notifier toutes les 2 heures

Je cherche à utiliser.

WPF, Timers, Les délégués, les événements

Je ne sais pas si ceux-ci sont assez ou dois-je besoin de quelque chose de plus.

Merci d'avance.

Répondre

1

Je pense que cela vous ira. Tout ce dont vous avez besoin est en fait un NotifyIcon et un minuteur. J'ai accompli la même chose, sauf que je n'utilisais pas WPF (j'ai plutôt utilisé le concepteur de fenêtres 'classique'). La manière la plus simple de laisser votre application démarrer au démarrage serait probablement de la placer dans le dossier Démarrage dans le menu Démarrer. Il n'est donc pas nécessaire d'utiliser le registre.

0

Un service Windows peut être la meilleure solution pour l'exécution en arrière-plan, mais il peut être difficile d'accéder à l'interface graphique d'un service (je ne pense pas que ce soit trivial).

Pour une application de bureau WPF pour faire une notification de plateau, voir ce projet avec démonstration et le code source: http://www.codeproject.com/KB/WPF/WPF_xaml_taskbar_window.aspx

Pour obtenir la notification toutes les 2 heures, vous pouvez utiliser un DispatcherTimer: http://social.msdn.microsoft.com/Forums/en/wpf/thread/aaffea95-e735-492d-bd8a-2fdf7099a936

+0

Je pourrais voir un service étant un bon composant de ce système s'il exécutait le code souvent, excepté qu'il y a déjà un planificateur de tâches spécifiquement pour les trucs intermittents ... pourquoi ne pas l'utiliser. – zanlok

1

Première est de tous ici ce que vous avez besoin à commencer l'application au démarrage du système: Disons que j'ai un checkBox et je veux commencer mon application au démarrage de windows si cette option est activée:

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

et de la désactivation que vous ne l'follwoing:

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

ps: Votre nom de l'application apparaît sur le gestionnaire de tâches de la façon dont vous écrivez là

Et sur l'utilisation d'une icône Notify, bien qu'en fait WPF ne supporte pas un ready made donc soit vous utilisez l'icône Windows Forms Notify ou vous utilisez celui mentionné dans une autre réponse de codeproject.com

si vous vouliez utiliser celui qui existe déjà dans Windows formulaires, vous devez ajouter une référence à System.Windows.Forms dans votre projet