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

Windows Discussion :

intercepter les messages Windows... d'un autre processus !


Sujet :

Windows

  1. #1
    VVE
    VVE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 72
    Points : 47
    Points
    47
    Par défaut intercepter les messages Windows... d'un autre processus !
    Résumé du problème : je voudrais intercepter les demandes de fermeture qui sont faites à un programme pour pouvoir effectuer un traitement AVANT l'arrêt de ce programme.

    La piste que je cherche à suivre : créer un moniteur qui puisse anticiper l'arrêt du programme en question en interceptant les demandes d'arrêt.

    Je cherche a intercepter les messages Windows qui sont postés à une autre fenêtre que celles de mon programme.

    Pour corser le tout, je cherchais à le faire en VB6 !
    Apparemment ce n'est pas possible.

    Comment faire ? Quel langage C++ ? Delphi ?

    Ce que j'ai fait en VB :
    Je sais déjà surclasser la procédure Windows qui traitent les messages reçus par une de mes fenêtres, mais comment intercepter les messages émis vers un autre processus ?

    J'ai essayé d'utiliser la fonction API MsgWaitForMultipleObjects() pour attendre qu'un message soit posté à la fenêtre du processus surveillé, mais une fois que j'ai été "réveillé", je n'arrive pas à lire la file d'attente des messages Windows postés.

    J'ai téléchargé un OCX "MessageBlaster32" qui est censé faire ça mieux que moi, mais ça marche pô !

    any idea ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut
    En général l'interception des messages se fait par des "hook", qui sont de différents types. Celà s'écrit en C, il y a 3 API Windows qui gère les hooks :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    SetWindowsHookEx
    The SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. You would install a hook procedure to monitor the system for certain types of events. These events are associated either with a specific thread or with all threads in the same desktop as the calling thread. 
    
    HHOOK SetWindowsHookEx(
      int idHook,        // hook type
      HOOKPROC lpfn,     // hook procedure
      HINSTANCE hMod,    // handle to application instance
      DWORD dwThreadId   // thread identifier
    );
    
    
    CallNextHookEx
    The CallNextHookEx function passes the hook information to the next hook procedure in the current hook chain. A hook procedure can call this function either before or after processing the hook information. 
    
    LRESULT CallNextHookEx(
      HHOOK hhk,      // handle to current hook
      int nCode,      // hook code passed to hook procedure
      WPARAM wParam,  // value passed to hook procedure
      LPARAM lParam   // value passed to hook procedure
    );
    
    UnhookWindowsHookEx
    The UnhookWindowsHookEx function removes a hook procedure installed in a hook chain by the SetWindowsHookEx function. 
    
    BOOL UnhookWindowsHookEx(
      HHOOK hhk   // handle to hook procedure
    );
    pour plus de détails, tu peux consulter le MSDN.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    VVE
    VVE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    merci du tuyau, je vais essayer...

    A++

    8)

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

Discussions similaires

  1. [Windows] Intercepter les messages d'un handle
    Par mister3957 dans le forum Windows
    Réponses: 4
    Dernier message: 17/10/2011, 09h28
  2. Intercepter les messages de windows
    Par Teyyeb dans le forum Débuter
    Réponses: 1
    Dernier message: 06/04/2008, 08h12
  3. 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
  4. Hook pour récupérer les messages windows d'une autre application
    Par Tuizi dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 07/12/2007, 15h30
  5. Intercepter les messages windows
    Par schneed dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/12/2005, 14h12

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