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

  FORUM HardWare.fr
  Programmation
  C++

  Hook clavier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Hook clavier

n°777304
myke38
Posté le 25-06-2004 à 00:51:35  profilanswer
 

Bonjour, j'ai fait un hook clavier en c++ grace au fonction  

Code :
  1. SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyProc,DllInstance,0);


et

Code :
  1. CallNextHookEx(HookHandle,code,wParam,lParam);


qui fonctionne presque parfaitement : lapui sur nimporte quelle touche est detecté. Malheuresement losrqu'on laisse fonctionner le programme en arriere plan, et qu'on souhaite lancer Steam, un jeux video, ou certain programme, ces dernier plante et fon parfoi redemarrer lordinateur. Se probleme n'apparait plus lorsque le hook est desactiver?
Savai vous ou ce situe le pb, et comment le resoudre?
merci d'avance
Myke

mood
Publicité
Posté le 25-06-2004 à 00:51:35  profilanswer
 

n°777329
bjone
Insert booze to continue
Posté le 25-06-2004 à 02:07:59  profilanswer
 

poste le code de KeyProc !!!

n°777354
blackgodde​ss
vive le troll !
Posté le 25-06-2004 à 08:14:49  profilanswer
 

(c'est du C pour l'instant)


---------------
-( BlackGoddess )-
n°777386
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-06-2004 à 09:14:21  profilanswer
 

pourquoi faire un hook pour une touche clavier ? Utilise plutot la fonction RegisterHotKey()


---------------
J'ai un string dans l'array (Paris Hilton)
n°777713
myke38
Posté le 25-06-2004 à 12:05:38  profilanswer
 

voila le codse tou simple de KeyProc :  
 

Code :
  1. LRESULT CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam)
  2. {
  3.   if (! ((DWORD)lParam & 0x40000000)  ){
  4.   hwnd = FindWindow(NULL,"HitKey" );
  5.   PostMessage(hwnd,WM_USER+755,wParam,lParam);}
  6. return CallNextHookEx(HookHandle,code,wParam,lParam);
  7. }


 
En fait le but de ce programme est de compter le nombre de touche au total enfoncer par lutilisateur, sous nimporte quelle programme.
 
Merci pour vos reponse
Myke

n°777729
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-06-2004 à 12:17:04  profilanswer
 

myke38 a écrit :


En fait le but de ce programme est de compter le nombre de touche au total enfoncer par lutilisateur, sous nimporte quelle programme.


Dans ce cas, pas besoin d'un hook ! Un simple compteur dans le WM_KEYDOWN fera largement l'affaire


---------------
J'ai un string dans l'array (Paris Hilton)
n°777800
myke38
Posté le 25-06-2004 à 13:04:32  profilanswer
 

non car g presiser que le programme devai compter toutes les touche enfoncer, meme lorsque l'utilisateur ecri sur msn ou joue a counter strike.
 
sinon g essayer RegisterHotKey() : 3 questions me vienne a lesprit :  
1) comment faire pour que la touche ne soi pas inactive dans les autre programme : exemple si je defini le 'A' comme HotKey, je ne peu plus ecrire de 'a' sur msn messager ou le forum.
2) comment faire pour que toutes les touche face apelle a ma fonction defini dans RegisterHotKey, et pas seulement une seule touche?
3) existe t il une fonction analogue pour la souris?  
 
Merci pour tou
Myke

n°777802
synku
Posté le 25-06-2004 à 13:05:36  profilanswer
 

Tu serais pas en train de vouloir coder un keylogger quand meme  :non:

n°777844
bjone
Insert booze to continue
Posté le 25-06-2004 à 13:34:51  profilanswer
 

ton ((DWORD)lParam & 0x40000000....
 
ce serait pas pour tester si la valeur est inférieure à 0 ?
 
http://msdn.microsoft.com/library/ [...] rdProc.asp
 
si c'est ça c'est 0x80000000 qui permet de tester le bit de poids fort.
 
////////
 
Autant pour moi il semble que c'est pas ce que tu sohaites faire....

n°777996
myke38
Posté le 25-06-2004 à 14:28:52  profilanswer
 

non mais c gentil de vouloir maider : en faite le plus fort c que si je change ma dll en  :  

Code :
  1. //---------------------------------------------------------------------#include <vcl.h>
  2. #pragma hdrstop
  3. #include <vcl\Registry.hpp>
  4. #include <dir.h>
  5. //---------------------------------------------------------------------
  6. extern "C" __declspec(dllexport)bool InstallMouseHook();
  7. extern "C" __declspec(dllexport)bool RemoveMouseHook();
  8. LRESULT CALLBACK MouseProc(int code, WPARAM wParam, LPARAM lParam);
  9. LRESULT CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam);
  10. HHOOK HookHandle;
  11. HHOOK HookHandle1;
  12. HINSTANCE DllInstance;
  13. HWND hwnd = NULL;
  14. HWND hwnd1 = NULL;
  15. //---------------------------------------------------------------------
  16. int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
  17. {
  18. DllInstance=hinst;
  19. return 1;
  20. }
  21. //---------------------------------------------------------------------
  22. bool InstallMouseHook()
  23. {
  24.   HookHandle1=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc,DllInstance,0);
  25. HookHandle=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyProc,DllInstance,0);
  26.   if (HookHandle1==NULL || HookHandle==NULL)return false;
  27.   else return true;
  28. }
  29. //---------------------------------------------------------------------
  30. bool RemoveMouseHook()
  31. {
  32.   if(UnhookWindowsHookEx(HookHandle)==0 ||UnhookWindowsHookEx(HookHandle1)==0)return false;
  33.   else return true;
  34. }
  35. //---------------------------------------------------------------------
  36. LRESULT CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam)
  37. {
  38. return CallNextHookEx(HookHandle,code,wParam,lParam);
  39. }
  40. //---------------------------------------------------------------------
  41. LRESULT CALLBACK MouseProc(int code, WPARAM wParam, LPARAM lParam)
  42. {
  43. return CallNextHookEx(HookHandle1,code,wParam,lParam);
  44. }
  45. //---------------------------------------------------------------------


 
 
ben sa plante encore certain programme lorsque celui ci tourne en arriere plan.
Compren pas:(

mood
Publicité
Posté le 25-06-2004 à 14:28:52  profilanswer
 

n°778020
bjone
Insert booze to continue
Posté le 25-06-2004 à 14:37:47  profilanswer
 

http://msdn.microsoft.com/library/ [...] HookEx.asp
 
fait plustôt:
CallNextHookEx( NULL, code ....
pour voir...

n°778037
myke38
Posté le 25-06-2004 à 14:46:26  profilanswer
 

Merci bien mai sa marche toujours pas :  

Code :
  1. return CallNextHookEx(NULL,code,wParam,lParam);


Sa plante toujours:(

n°778407
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-06-2004 à 17:35:23  profilanswer
 

ça sent le keylogger ton truc [:heink]

n°778663
myke38
Posté le 25-06-2004 à 22:45:07  profilanswer
 

c'est plus ou moin sa, mai sa marche touours pas:(


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

  Hook clavier

 

Sujets relatifs
classe Clavier[JAVA] Pb recuperation evenement clavier
Obtenir ce qui est entré au clavier[Débutant]Touches systèmes du clavier
gestion de clavier[JS ] detection des touches clavier .... sans IE
Lecture du clavier non bloquant"écouter" la souris et le clavier
Mon Hook système n'est actif que sur l'appli couranteinterrompre une boucle avec une touche du clavier
Plus de sujets relatifs à : Hook clavier


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