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

  FORUM HardWare.fr
  Programmation
  C++

  C++ sous Win : HOOK sans DLL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C++ sous Win : HOOK sans DLL

n°978028
PtitKiki
Le Vrai
Posté le 10-02-2005 à 21:38:42  profilanswer
 

Bonjour,  
 
Après pas mal de recherches, j'ai découvert qu'il était possible de se passer d'une DLL pour executer du code lors du catching d'un evenement par un hook (l'utilisation de la dll etant le cas le plus général). Cependant je ne souhaite pas en utiliser une. J'ai donc trouver un bout de code sur la msdn qui intègre tout dans un seul exe. Le probleme est le suivant :
 
L'exécution de la callback attachée au hook ne se produit que lorsque j'ai la messagebox activé (cf le code). Or je veux que le programme n'aie aucune IHM (tourne en tache de fond).
J'envisage de mettre ensuite une boucle de traitement.
 
Ma question est :  
 
comment remédier à ce problème ?  
Est-on obligé de créer une fenetre pour pouvoir trapper les messages windows ? (je pense que non)  
La solution de facilité serait bien sur de mettre une fenetre invisible et de la masquer de la barre des taches mais ca n'est pas "propre".
 
ps : non je ne developpe pas un keylogger !  
 
 
voici le code en question, d'avance merci pour vos réponses (j'espere être compris)
 

Code :
  1. /******************************************************************************
  2. Module:  DisableLowLevelKeys.cpp
  3. Notices: Written 2000 Jeffrey Richter
  4. ******************************************************************************/
  5. #define _WIN32_WINNT 0x0400
  6. #include <Windows.h>
  7. ///////////////////////////////////////////////////////////////////////////////
  8. LRESULT CALLBACK LowLevelKeyboardProc(int nCode,
  9.    WPARAM wParam, LPARAM lParam) {
  10.    BOOL fEatKeystroke = FALSE;
  11.    PKBDLLHOOKSTRUCT p=NULL;
  12.    if (nCode == HC_ACTION) {
  13.       switch (wParam) {
  14.       case WM_KEYDOWN:  case WM_SYSKEYDOWN:
  15.      
  16.   MessageBox(NULL,"Touche detectee","",MB_OK);
  17.  // traitement
  18.          break;
  19.   default :
  20.    break;
  21.       }
  22.    }
  23.    return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
  24. }
  25. ///////////////////////////////////////////////////////////////////////////////
  26. int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {
  27. // Install the low-level keyboard & mouse hooks
  28.    HHOOK hhkLowLevelKybd  = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc, hinstExe, 0);
  29.    // Keep this app running until we're told to stop
  30.    MessageBox(NULL,"Fenetre bloquante",NL, MB_OK);
  31.  
  32.    bool loop = true;
  33.    while(loop)
  34.    {
  35.         // traitement
  36.         _sleep(100);
  37.    }
  38.    UnhookWindowsHookEx(hhkLowLevelKybd);
  39.    return(0);
  40. }
  41. ///////////////////////////////// End Of File /////////////////////////////////


Message édité par PtitKiki le 10-02-2005 à 21:43:48
mood
Publicité
Posté le 10-02-2005 à 21:38:42  profilanswer
 

n°978082
Mackila
Posté le 10-02-2005 à 22:42:29  profilanswer
 
n°979062
PtitKiki
Le Vrai
Posté le 11-02-2005 à 18:21:58  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  C++ sous Win : HOOK sans DLL

 

Sujets relatifs
librairie GMP : Win 98 ou Win XP ?Création d'une DLL
Utiliser les fonctions d'une DLL sans avoir le code source.DLL et destructeur de classes
debuggage d'une DLL sous visual studio.net C++[Win 32]trouver le nom d'une police
Utilisation d'une DLL dans Javaexporter des instances de classes d'une Dll
DLL en ressource avec DevcppExport de fonctions EXE -> DLL et DLL -> EXE
Plus de sujets relatifs à : C++ sous Win : HOOK sans DLL


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