begin process at 2012 02 08 23:33:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

API

 > 

Comment utiliser le HOOK pour capturer les messages Windows


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment utiliser le HOOK pour capturer les messages Windows

samedi 13 septembre 2008 à 03:18:24 | Comment utiliser le HOOK pour capturer les messages Windows

AlexBob789



BobAlex
samedi 13 septembre 2008 à 10:56:10 | Re : Comment utiliser le HOOK pour capturer les messages Windows

MorpionMx

Membre Club Administrateur CodeS-SourceS
Je crois que le message est passé a la trappe ?
Ou alors il faut juste lire le titre ?

Mx
MVP C#
 

samedi 13 septembre 2008 à 21:15:56 | Re : Comment utiliser le HOOK pour capturer les messages Windows

AlexBob789


Bonjour,
Voci le message original:

Voilà cela un moment je tente de capturer les messages windows entrant et sortant de outlook 2003, mais je n'arrive pas. En faite qd l'usager clicque sur le boutton de send ou receive du Menu de Outlook ou qu'un email arrive dans le repertoire Inbox il ya des messages windows qui sont déclenchés, et j'aimerai les capturer.
Pour cela j'utilise la fonction SetWindowsHookEx mais cela ne marche pas. Voici brievement le code:


private IntPtr FindWindHandle(string aProcName)
        {
            IntPtr lProcNameHandle = IntPtr.Zero;
            Process[] processes = Process.GetProcessesByName(aProcName);

            if (processes.Length > 0)
                if (processes[0].Threads.Count > 0)
                    lProcNameHandle = processes[0].Handle;

            return lProcNameHandle;

        }

private IntPtr FindWindThreadIDByGetWindowThreadProcessId()
        {
            return GetWindowThreadProcessId(GetOutlookThread(), IntPtr.Zero);                

        }

private IntPtr GetOutlookThread()        
{
    IntPtr myWindow = IntPtr.Zero;
    Process[] processes = Process.GetProcessesByName("Outlook" );
    foreach (Process p in processes)
    {
         myWindow = p.MainWindowHandle;        
    }
    return myWindow;
}


public void SetHook()
{
IntPtr hook1 = SetWindowsHookEx(HookType.WH_GETMESSAGE, myGetAllMsg, IntPtr.Zero, AppDomain.GetCurrentThreadId()); // hook1 a une valeur mais ne capture pas les messages
      IntPtr outlookThreadId = FindWindThreadIDByGetWindowThreadProcessId(); // me retourne le threadid dans lequel roule Outlook
      HookProc myGetAllMsg = new HookProc(GetAllMsg);
      IntPtr hook2 = SetWindowsHookEx(HookType.WH_GETMESSAGE, myGetAllMsg, IntPtr.Zero, (Int32)outlookThreadId); // Je tente de faire le hook sur le threadID de outlook,  mais Hook2 a la valeur 0, cela veut dire que le hook n'a pas marché
      IntPtr hook3 = SetWindowsHookEx(HookType.WH_GETMESSAGE, myGetAllMsg, FindWindHandle("Outlook" ), 0);  // Je tente de faire le hook sur le handle de outlook, Hook3  a aussi le valeur 0
}

Je ne comprends pas pkoi quand j'utlise AppDomain.GetCurrentThreadId le hook a une valeur mais qd je considère le threadId dans le process Outook roule(j'espère que j'ai le bon threadID)  
Voilà en gros. Votre aide me sera le bienvenu pour m'éclaircir dans cette gymnastique cérébrale du HOOK.

dimanche 14 septembre 2008 à 10:15:21 | Re : Comment utiliser le HOOK pour capturer les messages Windows

Bidou

Administrateur CodeS-SourceS
Hi, Je ne sais pas, mais le code de GetOutlookThread me paraît quelques peu étrange après un rapide coup d'oeil. Seul le dernier IntPtr de la liste de process sera retourné, non?
dimanche 14 septembre 2008 à 15:30:48 | Re : Comment utiliser le HOOK pour capturer les messages Windows

AlexBob789

Tu as raison, mais en faite tu ne peux avoir q'une seule instance de Outlook d'ouvert et dans ce cas c'est l'unique handle de Outlook qui sera retourné, d'où je n'avais pas besoin de l'avoir dans un foreach.

Merci


Cette discussion est classée dans : windows, utiliser, messages, capturer, hook


Répondre à ce message

Sujets en rapport avec ce message

les API windows et c# [ par otofraise ] Bonjour a tous,Habitue au c++, je debute avec c# et je dois dire que je suis pomme .J'aimerais utiliser les api windows mais voila, je ne retrouve pas Post-filtrage des messages Windows [ par DarkenerDaemonEx ] Bonjour,L'interface IMessageFilter permet de pré-filtrer des messages et peut aussi les empêcher d'arriver à destination, mais dans mon cas il faudrai utiliser progressBar dans un sous programme [ par corine ] salut,j'ai créé un windows form en C# avec visual studio. Dans ce windows form j'ai inséré une progressBar.J'ai également mis dans les menus de mon wi Utiliser les icones windows (open, close, save...) [ par iliak ] BonjourJe souhaite utiliser les icônes systèmes (ouvrir, fermer, sauver, imprimer....) dans mon appli C# mais je ne sais pas trop trop comment faire. Masquer les messages d'erreur Windows AU SECOURS !!!! [ par gerbito ] Bonjour,   Quelqu'un connaîtraît-il une méthode valable pour masquer les messages d'erreur Windows ?   En effet j'ai une appli développée en C# dont l [C# => Bar] Interception de messages windows (imprimante, audio, vidéo) [ par magicx92 ] Bonjour à tous.Je suis étudiant en info (5e année) et pour un mémoire de recherche j'ai besoin d'intercepter un certain nombre d'informations de windo Utilisation du log4net dans une application windows [ par yayasam ] salut, je veux utiliser le log4net pr avoir des traces, je développe une application windows en c#, et ma question c'est comment peut on utiliser le l trapper les messages sous WinCE 5.0 [ par churrros ] J'ai étudié certains tuto pour essayer d'attrapper les messages envoyés à ma fenêtre et empêcher qu'elle soit déplacée, mais j'y arrive pas. J'utilise API Hook (printdialog) [ par Buster89 ] Bonjour, Je souhaite remplacer le printdialog par défaut de windows par ma propre form de sorte que lorsque l'on clique sur "imprimer" que ce soit su Utiliser une application Windows [ par folivan ] Bonjour tout le monde,Je cherche le moyen d'utiliser "Paint" (pbrush.exe) dans mon application en C#.Mon but : Ouvrir "Paint" sans qu'il soit visible


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales