IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Windows Discussion :

Intercepter les messages d'un autre processus


Sujet :

Services Windows

  1. #1
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Points : 89
    Points
    89
    Par défaut Intercepter les messages d'un autre processus
    Bonjour à tous,
    J'ai développé un service Windows qui associé à un planificateur permet d'extraire des fichiers bancaires. Depuis un moment et pour des soucis de conformité et de contrôle, la direction à décidé d'utiliser un ordonnanceur pour l'exécution -par priorisation- de tous les services qui tournent sur le serveur. On nous demande à cet effet d’intercepter les demandes d'arrêt et de redémarrage de l'ordonnanceur. Mon soucis actuel est que je ne sais pas trop comment m'y prendre pour intercepter les demandes d'arrêt ou de redémarrage à partir de mon service Windows. Quelqu'un peut-il me mettre sur la voie??
    Merci d'avance.

  2. #2
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Points : 89
    Points
    89
    Par défaut Hi
    Salut!!
    Finalement j'ai trouvé la solution dans l'utilisation de ManualResetEvent. Voici le principe utilisé (pour ceux que ceci intéresserait) :

    1- Déclarer une variable de type ManualResetEvent comme suit: private ManualResetEvent stoppedEvent; et d'une variable globale de type booléen VariablesGlobales.ArreterProcessus = false;
    3- Mettre à false la variable dans le constructeur du service Windows exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public ws_PrelevPeriodique()
            {
                InitializeComponent();
                stoppedEvent = new ManualResetEvent(false);
            }
    cela pouvait aussi se faire à la déclaration de la variable stoppedEvent.
    4- Dans le OnStop(), Mettre la variable globale à true et différer l'arrêt du service jusqu'à une confirmation extérieure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    protected override void OnStop()
            {
                try
                {
                    VariablesGlobales.ArreterProcessus = true;
                    this.stoppedEvent.WaitOne();
     
                catch (Exception Ex)
                {
                    RapportLog.transcriptionFichierLog("ARRET DU SERVICE WINDOWS" + Ex.Message);
                }
            }
    6- Lorsque le traitement encours est terminé vérifier si la variable globale est à true. Si c'est le cas envoyer la cofirmation d'arrêt pour effectivement arrêter le service.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (VariablesGlobales.ArreterProcessus)
                {
                    this.stoppedEvent.Set();
                }
    J'espère que cela servira.
    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment intercepter les messages d'un processus sous windows?
    Par Hamdi Hedhili dans le forum Général Java
    Réponses: 3
    Dernier message: 17/03/2008, 16h57
  2. Intercepter les messages windows
    Par schneed dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/12/2005, 14h12
  3. Intercepter les messages émis par WordApplication
    Par Claude Animo dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 11/07/2005, 20h23
  4. [Indy] Intercepter les messages coté client
    Par PpPool dans le forum Web & réseau
    Réponses: 6
    Dernier message: 04/07/2005, 10h19
  5. Réponses: 2
    Dernier message: 06/04/2004, 08h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo