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 ???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
[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.
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.
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.
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" <rockfamily@REMOVEME.hotmail.com> a écrit dans le message de news:
1f1knifzmb9yz$.1a75h1yboed2g.dlg@40tude.net...
[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.
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.
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.
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.
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.
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
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 !!!
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 !!!