OVH Cloud OVH Cloud

Service et interaction bureau...

4 réponses
Avatar
MrChris
Salut !

J'ai fait un service qui est lancé par le compte system et qui peut
interagir avec le bureau.

Dans ce service j'ai un notifyicone qui comporte un contextmenu.

La NotifyIcone apparait bien au lancement du service, mais quand je clique
droit/gauche ou double clique,
rien ne se passe (il existe bien sûr une fonction pour ces trois actions).

Les même lignes de codes fonctionnents parfaitement en windows form.

Est-ce que parceque c'est SYSTEM qui lance mon service j'ai quelque chose à
faire en plus
dans le code pour l'interaction avec ma notifyIcone ???

Aurais-je oublié quelque chose ?

Quelqu'un aurai-t'il sous la main un exemple de service avec notifyIcone ???

Merci
MrChris

4 réponses

Avatar
Elp
[Followup-To: microsoft.public.fr.dotnet.csharp]

On Mon, 10 Jan 2005 13:28:07 +0100, MrChris wrote:

J'ai fait un service qui est lancé par le compte system et qui peut
interagir avec le bureau.

Dans ce service j'ai un notifyicone qui comporte un contextmenu.

La NotifyIcone apparait bien au lancement du service, mais quand je clique
droit/gauche ou double clique,
rien ne se passe (il existe bien sûr une fonction pour ces trois actions).



Je ne sais pas trop pourquoi ca ne fonctionne pas mais ce qui est sur c'est
que tu ne devrait pas avoir d'UI dans ton service windows. Ils ne sont pas
fait pour ca. En plus des bugs que tu commences a découvrir, il est
possible que tu ouvre une énorme faille de sécurité en ayant des éléments
d'UI dans ton service Windows.

La methode a utiliser (et celle utilisée par tous les services Windows qui
ont besoin d'une UI, antivirus par exemple) est d'avoir une 2eme
application, appli Windows normale cette fois, qui se charge d'afficher
l'UI et qui communique avec le service via, par exemple, .NET remoting.
Cette appli windows normale peut etre soit lancée a la main par
l'utilisateur ou configurée pour démarrer automatiquement a chaque fois
qu'un utilisateur se logge.
Avatar
MrChris
Hum...

Je me suis déja frotté au .Net remoting, ca marche mais quand tu veux
partager
tes propres classes/objects complexe ça merde...
(Sûrement que je dois serializer/désérialiser moi même...).

Bon, je vais essayer de séparer service et UI...

Merci !

"Elp" a écrit dans le message de news:
1f1knifzmb9yz$
[Followup-To: microsoft.public.fr.dotnet.csharp]

On Mon, 10 Jan 2005 13:28:07 +0100, MrChris wrote:

J'ai fait un service qui est lancé par le compte system et qui peut
interagir avec le bureau.

Dans ce service j'ai un notifyicone qui comporte un contextmenu.

La NotifyIcone apparait bien au lancement du service, mais quand je
clique
droit/gauche ou double clique,
rien ne se passe (il existe bien sûr une fonction pour ces trois
actions).



Je ne sais pas trop pourquoi ca ne fonctionne pas mais ce qui est sur
c'est
que tu ne devrait pas avoir d'UI dans ton service windows. Ils ne sont pas
fait pour ca. En plus des bugs que tu commences a découvrir, il est
possible que tu ouvre une énorme faille de sécurité en ayant des éléments
d'UI dans ton service Windows.

La methode a utiliser (et celle utilisée par tous les services Windows qui
ont besoin d'une UI, antivirus par exemple) est d'avoir une 2eme
application, appli Windows normale cette fois, qui se charge d'afficher
l'UI et qui communique avec le service via, par exemple, .NET remoting.
Cette appli windows normale peut etre soit lancée a la main par
l'utilisateur ou configurée pour démarrer automatiquement a chaque fois
qu'un utilisateur se logge.


Avatar
Elp
On Mon, 10 Jan 2005 14:45:30 +0100, MrChris wrote:

Hum...

Je me suis déja frotté au .Net remoting, ca marche mais quand tu veux
partager
tes propres classes/objects complexe ça merde...
(Sûrement que je dois serializer/désérialiser moi même...).



Je ne sais pas trop ou tu a eu des problemes mais a priori je ne voit pas
trop ou ils seraient. Tous les objects a partager par le client et le
serveur sont dans le Well Known Layer accessible par le client et le
serveur et apres ca, ce qui se passe derriere, c'est pas trop ton probleme.
Peut etre parlais-tu de probleme de performance ?

En tout cas, dans ton cas, pour simplement communiquer entre un service
windows et une appli windows en local, il ne devrait pas y avoir de
problemes particuliers.
Avatar
MrChris
Permet moi d'en douter.
J'arrive sans problème a accéder a mon objet Employe à distance,
mais pour EmployeCollection je n'y suis jamais arrivé...
J'ai essayer tout plein de façon différente, mais rien a faire.

<Serializable()> Public Class Employe
Public ID As String
Public Nom As String
Public Mail As String
Public Visu As Integer
Public Machine As String
Public Service As String
Public Tel As String
Public Etat As TypeEtats
End Class

<Serializable()> Public Class EmployeCollection
Inherits NameObjectCollectionBase

Private _de As New DictionaryEntry

Public Sub New()
End Sub

Default Public Property Item(ByVal key As [String]) As [Employe]
Get
Return CType(Me.BaseGet(key), Employe)
End Get
Set(ByVal Value As [Employe])
Me.BaseSet(key, Value)
End Set
End Property

Public ReadOnly Property AllKeys() As [String]()
Get
Return Me.BaseGetAllKeys()
End Get
End Property

Public ReadOnly Property AllValues() As Array
Get
Return Me.BaseGetAllValues()
End Get
End Property

Public ReadOnly Property HasKeys() As [Boolean]
Get
Return Me.BaseHasKeys()
End Get
End Property

Public Sub Add(ByVal key As [String], ByVal value As [Employe])
Me.BaseAdd(key, value)
End Sub

Public Overloads Sub Remove(ByVal key As [String])
Me.BaseRemove(key)
End Sub

Public Sub Clear()
Me.BaseClear()
End Sub

End Class

Et bien sûr, c'est mon objet EmployeCollection qui m'intéresse !!!

Merci
MrChris