Service Window NotifyIcon et menu contextuel

Signaler
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007
-
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
30 septembre 2008
-
Bonjour à tous

Voilà je vous pose le problème, j'ai développé un Service Windows qui charge de petites DLL nécessaire au driver de communication d'une application, je lui ai assigné une icone dans le systemtray et à cette icone je lui ai associé un menu contextuel afin d'administrer ce service, j'instale mon service avec un package d'installation jusque là tout va bien le problème ben c'est clique droit sur l'icône et la rien pas un menu à l'horizon vous avez une idée du problème merci :)

Z.

13 réponses

Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Salut Z_San,

C'est tout simplement parce qu'un service windows ne peut pas afficher de composants (que ce soit une fenêtre ou un menu contextuel) !!!

Par contre, ton service peut très bien ouvrir une application qui, elle, pourra gérer ton icône et ton menu !

Pour la communication entre ton appli et ton service, tu peut utiliser le remoting ou une simple connexion TCP/IP.

Voilà, voilà ;)
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

Ok je comprends mieux je vais me pencher sur la question

Merci
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

Oui mais concrétement tu la la lance comment cette mini apppli du service ?
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Ben,
par System.Diagnostics.Process.Start();

;)
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

Je me suis mal expliqé, je voulais dire comment je lance la ptite appli windows qui gere l'administration du service.
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Salut,

Moi, je lancerai cette appli directement du service, à son démarrage...
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

justement la commande pour la lancer ? tu lance le exe du ptit soft qui gére tt ça ou tu lances la windowsform depuis le start du service ?
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Tu lances l'exe qui gère tout ça,
Le service lui, ne peut pas instancier de fenêtre !
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Je reviens sur ce poste...

Je viens de me rendre compte que je t'es dis n'importe quoi !!!
En effet, un service peut tout à fait lancer une fenêtre, afficher une 'notifyIcon', etc...

Il faut pour cela l'authoriser à 'Interagir avec le bureau'...
Dans les propriétés du service/Onglet connexion/La case à cocher...

Je te laisse voir par toi même !
Encore désolé pour t'avoir mal renseigné
Messages postés
19
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
2 octobre 2013

Bonjour

J'ai plus au moins le même souci
J'ai développé un service qui lance un formulaire et ça fonctionne bien
Ce formulaire possède un NotifyIcon qui fonctionne quand je suis dans mon mode autonome (J'ai un mécanisme pour débrayer le service) : quand je ferme mon formulaire, il ne fait que disparaitre et il ré-apparait lors d'un double click sur le NotifyIcon.

Cependant, quand je lance le service, mon Formulaire est bien crée, mon NotifyIcon aussi mais les evènements du NotifyIcon ne sont plus pris en compte. J'ai beau double cliquer, rien ne se passe.

Des idées ?

TheVengor
Messages postés
19
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
2 octobre 2013

Je me réponds à moi même
Pour utiliser le NotifyIcon dans un service, il ne faut pas le déclarer dans le Designer mais l'implémenter soi même dans un formulaire affiché par le service (ou non)

Voici les membres à définir
private

IContainer m_Container =
null;

private
NotifyIcon m_NotifyIcon =
null;
Implementation à faire au Load de la Form
m_Container =

new
Container();m_NotifyIcon =

newNotifyIcon(m_Container);m_NotifyIcon.Icon ICON; // A REMPLACER PAR VOTRE VALEURm_NotifyIcon.Text

"NotifyIcon";m_NotifyIcon.MouseDown +=

new
MouseEventHandler(m_NotifyIcon_MouseDown);m_NotifyIcon.Visible =

true;
Il faut bien évidement que la case à cocher du service Inreact with Desktop soit coché et ça fonctionne
Le Designer fournit un container à NotifyIcon qui bloque la gestion des évènements en mode service.

J'espère que ça aidera certains.

TheVengor
Messages postés
19
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
2 octobre 2013

Houla problème de copier coller, je recommence

Je me réponds à moi même
Pour utiliser le NotifyIcon dans un service, il ne faut pas le déclarer dans le Designer mais l'implémenter soi même dans un formulaire affiché par le service (ou non)


Voici les membres à définir


private IContainer m_Container = null;
private NotifyIcon m_NotifyIcon = null;


Implementation à faire au Load de la Form


m_Container = newContainer();
m_NotifyIcon = newNotifyIcon(m_Container);
m_NotifyIcon.Icon = ICON; // A REMPLACER PAR VOTRE VALEUR
m_NotifyIcon.Text = "NotifyIcon";
m_NotifyIcon.MouseDown += newMouseEventHandler(m_NotifyIcon_MouseDown);
m_NotifyIcon.Visible = true;


Il faut bien évidement que la case à cocher du service Inreact with Desktop soit coché et ça fonctionne
Le Designer fournit un container à NotifyIcon qui bloque la gestion des évènements en mode service.


J'espère que ça aidera certains.

TheVengor
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
30 septembre 2008

Bonjour

J'ai le même problème

Mais moi je n'ouvre pas une form par le service.
je voulais juste ouvrir une form quand je click sur le menu contextuelle associé au service.
Je ne comprends pas pour quoi on peut définir le notifyicon pour le service dans designer , on peut définir le menu contextuel pour le notifyicon qui est aussi dans designer mais ça ne marche pas quand on lance le service.

Je continue à chercher ...

Merci