2009-02-11 10 views
0

Mise à jour: Nous utilisons encore XP au travail et j'ai obtenu mon travail de solution, mais maintenant, sachant que Vista et au-delà ont la séance isolée je vais implémenter un IPC WCF ...service utilisateur Windows notification avec le contrôle de style perspectives WPF ne deviennent visibles

J'ai un service Windows qui doit informer l'utilisateur d'un événement de quelque type se produisant. J'ai décidé que quelque chose de similaire aux messages de notification par courriel aurait du sens. Il est également logique de faire une interface utilisateur aussi simple en utilisant WPF. Cela me permettrait d'apprendre quelques bases.

Je cours un fil:

Puis-je configurer l'objet et appeler la méthode qui appelle DoubleAnimation.BeginAnimation

private void RunUserNotificationOnIndependantThread() 
    { 
     UserNotificationWithImage test = new UserNotificationWithImage(); 

     test.Title = _title; 
     test.Url = _url; 
     test.Message = _message; 

     test.LoadUserNotification(); 
    } 

    public void LoadUserNotification() 
    { 
     Rect workAreaRectangle = System.Windows.SystemParameters.WorkArea; 
     Left = workAreaRectangle.Right - Width - BorderThickness.Right; 
     Top = workAreaRectangle.Bottom - Height - BorderThickness.Bottom; 

     _fadeInAnimation.Completed += new EventHandler(_fadeInAnimation_Completed); 

     // Start the fade in animation 
     BeginAnimation(UserNotificationBase.OpacityProperty, _fadeInAnimation); 
    } 

Le débogueur atteint BeginAnimation (...) et pas de fenêtre apparaît. Est-ce même possible ou qu'est-ce que je fais de mal en essayant cela ???

Le code UserNotification est basé sur un blog par Nicke Andersson: WPF Desktop Alert blog

Merci pour toute aide !!

+0

Merci pour l'aide, je ne savais pas sur le bureau isolé. Je serai capable de faire fonctionner ça. Il est logique que cela nécessite IPC. – javelinBCD

Répondre

3

sur XP un service qui interagissent avec le bureau a deux sérieux problèmes à surmonter - quoi faire quand aucun utilisateur sont connectés et que faire lorsque plusieurs utilisateurs sont connecté (changement rapide d'utilisateur et les services terminaux sont les deux façons les plus courantes de se connecter à plus d'un utilisateur). Sur Vista, pour des raisons de sécurité, les services s'exécutent sur leur propre bureau isolé de sorte que toute interface utilisateur que vous affichez se trouve sur ce bureau spécial auquel aucun utilisateur ne peut accéder.

Vous devez écrire un petit programme Gui qui s'exécute sur le bureau de l'utilisateur et communiquer avec le service en utilisant un type d'IPC (Remoting, Soap, Reste, tubes nommés, fichiers, ce que vous voulez).

1

En règle générale, je ne recommande pas un service Windows pour interagir directement avec le bureau de l'utilisateur. À titre d'exemple simple, des problèmes surviennent parce que le service peut démarrer avant que tout utilisateur soit connecté. Ma suggestion serait de créer une petite application qui démarre avec la session utilisateur et communiquée au service Windows via IPC (Interprocess Communication) comme WCF.

Mais si vous voulez essayer de le faire fonctionner, mon indice serait allumer "Autoriser l'interaction avec le bureau" pour le service et je semble se rappeler que ce commutateur ne fonctionne pas du tout sous Vista, mais quelqu'un d'autre devrait confirmer cela.

HTH alex