Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2610 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Comment utiliser le HOOK pour capturer les messages Windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment utiliser le HOOK pour capturer les messages Windows

n°1783742
Alexbob
Peace and love donne ????
Posté le 08-09-2008 à 05:22:49  profilanswer
 

Bonjour,
 
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.

mood
Publicité
Posté le 08-09-2008 à 05:22:49  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Comment utiliser le HOOK pour capturer les messages Windows

 

Sujets relatifs
Messages non lus[divers] envois de fichiers en fermeture de session windows.
registre windowseasyphp, virtual host sous windows
[Visual Studio] Utiliser un projet de la même solutionPetit probleme de syntaxe pour utiliser du javascript en php
ecrire dans un fichier sur Windows CE[PDA/PPC] transcrire sur Windows Mobile la version PC d'un dico aéro
Script SFTP entre 2 serveur windows 
Plus de sujets relatifs à : Comment utiliser le HOOK pour capturer les messages Windows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR