OVH Cloud OVH Cloud

Fermer un service au demarrage

8 réponses
Avatar
Delf
Bonsoir.

Est-il possible de fermer un service alors que ce dernier exécute la
méthode OnStart() tout en affichant un MessageBox personalisé...

Merci.

--
Delf

8 réponses

Avatar
Mehdi
On Thu, 26 Oct 2006 13:58:36 +0200, Delf wrote:

Est-il possible de fermer un service alors que ce dernier exécute la
méthode OnStart() tout en affichant un MessageBox personalisé...



Non. Un service n'a pas d'UI. De plus, la méthode OnStart doit s'executer
en moins de 30 secondes (par défaut), donc tu ne peux pas de toutes facons
afficher une boite de dialoge bloquante dedans. Tu peux soit écrire un
évenement dans le Event Log Windows pour indiquer le probleme ou avoir une
application Windows normale qui démarre automatiquement lorsqu'un
utilisateur se loggue auquel le service se connecte et qui s'occupe
d'afficher les messages a l'utilisateur.
Avatar
Hervé CADROY
Mehdi a écrit :
On Thu, 26 Oct 2006 13:58:36 +0200, Delf wrote:

Est-il possible de fermer un service alors que ce dernier exécute la
méthode OnStart() tout en affichant un MessageBox personalisé...



Non. Un service n'a pas d'UI. De plus, la méthode OnStart doit s'executer
en moins de 30 secondes (par défaut), donc tu ne peux pas de toutes facons
afficher une boite de dialoge bloquante dedans. Tu peux soit écrire un
évenement dans le Event Log Windows pour indiquer le probleme ou avoir une
application Windows normale qui démarre automatiquement lorsqu'un
utilisateur se loggue auquel le service se connecte et qui s'occupe
d'afficher les messages a l'utilisateur.



Il me semble que l'on peut faire afficher une boite de dialogue via un
service, mais il faut l'autoriser a interagir avec le bureau.
je répète "il me semble" ... :)


Hervé
Avatar
Mehdi
On Thu, 26 Oct 2006 14:58:03 +0200, Hervé CADROY wrote:

Mehdi a écrit :
On Thu, 26 Oct 2006 13:58:36 +0200, Delf wrote:

Est-il possible de fermer un service alors que ce dernier exécute la
méthode OnStart() tout en affichant un MessageBox personalisé...



Non. Un service n'a pas d'UI. De plus, la méthode OnStart doit s'executer
en moins de 30 secondes (par défaut), donc tu ne peux pas de toutes facons
afficher une boite de dialoge bloquante dedans. Tu peux soit écrire un
évenement dans le Event Log Windows pour indiquer le probleme ou avoir une
application Windows normale qui démarre automatiquement lorsqu'un
utilisateur se loggue auquel le service se connecte et qui s'occupe
d'afficher les messages a l'utilisateur.



Il me semble que l'on peut faire afficher une boite de dialogue via un
service, mais il faut l'autoriser a interagir avec le bureau.
je répète "il me semble" ... :)



C'est possible mais tres dangeureux. A n'utiliser qu'a fins de tests ou
débugage. Il est possible d'afficher une MessageBox depuis un service
windows de maniere sure en utilisant le flag ServiceNotification mais ca ne
fontionera pas dans le cas de Delf vu qu'il veux afficher cette boite de
dialogue lorsque le service s'arrete.
Avatar
Delf
Dans son message précédent, Mehdi a écrit :

Non. Un service n'a pas d'UI. De plus, la méthode OnStart doit s'executer
en moins de 30 secondes (par défaut)



Bon a savoir.

donc tu ne peux pas de toutes facons
afficher une boite de dialoge bloquante dedans. Tu peux soit écrire un
évenement dans le Event Log Windows



Je créé un fichier de Log. J'aime pas EventLog :) Pas assez souple :]

ou avoir une
application Windows normale qui démarre automatiquement lorsqu'un
utilisateur se loggue auquel le service se connecte et qui s'occupe
d'afficher les messages a l'utilisateur.



Oui, je suis aussi en train de faire un tel truc.

Mon problème est que si je met un return dans mon OnStart(), le service
continue de tourner...

--
Delf
Avatar
Delf
Hervé CADROY a formulé la demande :

Il me semble que l'on peut faire afficher une boite de dialogue via un
service, mais il faut l'autoriser a interagir avec le bureau.
je répète "il me semble" ... :)



Il te semble bien, en effet, en utilisant Fire machin... peux pas
récupérer le nom de l'application sur mon FTP, ma boïte a bloqué mon
accès : Bref, on peut lancer toute application, même graphique en tant
que service Windows, avec interation bureau.

--
Delf
Avatar
Delf
Mehdi avait écrit le 26/10/2006 :

dans le cas de Delf vu qu'il veux afficher cette boite de
dialogue lorsque le service s'arrete.



Pas forcèment, mais que le service s'arrête.

--
Delf
Avatar
Mehdi
On Thu, 26 Oct 2006 16:06:10 +0200, Delf wrote:


Mon problème est que si je met un return dans mon OnStart(), le service
continue de tourner...



C'est bizarre. Il doit y avoir quelque chose avant ton return qui lance un
thread qui du coup garde ton service vivant (un thread tout betement, ou un
timer, ou un BeginQuelqueChose, ou un channel .NET Remoting qui attend des
connections...).
Avatar
Delf
Mehdi vient de nous annoncer :

C'est bizarre. Il doit y avoir quelque chose avant ton return qui lance un
thread qui du coup garde ton service vivant (un thread tout betement, ou un
timer, ou un BeginQuelqueChose, ou un channel .NET Remoting qui attend des
connections...).



Ben non :)

Un OnStart() vide, le service ne s'arrête pas.

--
Delf