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

  FORUM HardWare.fr
  Programmation
  C

  [résolu] Hook win32 voulu global...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Hook win32 voulu global...

n°1468547
IrmatDen
Posté le 01-11-2006 à 03:06:17  profilanswer
 

Salut,
 
J'aimerais utiliser un hook global empêchant l'exécution d'un set arbitraire d'application. J'utilise pour ça un hook CBT qui intercepte la création de fenêtre.
Bien que ce ne soit peut-être pas la meilleure façon de faire, elle devrait marcher pour des applis utilisant donc des fenêtres.
 
Le pépin est que j'arrive à poser le hook, mais il n'est actif qu'au niveau du process initiateur :(
J'ai épluché un paquet de pages et d'exemples, donc j'imagine que je dois rater quelque chose; c'est pas possible autrement :sweat:  
 
Voici le code de la dll en question:

Code :
  1. #include "libblockapp.h"
  2. HINSTANCE g_hCurrentModule = NULL;
  3. // Pour le bloc suivant, j'ai vu (et testé) les 2 façons:
  4. // - sans utiliser la mémoire partagée
  5. // - et avec
  6. #pragma data_seg(".AppBlck" )
  7. HHOOK hHook = NULL;
  8. #pragma data_seg()
  9. #pragma comment(linker, "/section:.AppBlck,rws" )
  10. LRESULT CALLBACK CBTProc(int nCode,
  11.       WPARAM wParam,
  12.       LPARAM lParam)
  13. {
  14. if(nCode < 0)
  15.  return CallNextHookEx(hHook, nCode, wParam, lParam);
  16. TCHAR currentProcessName[MAX_PATH];
  17. if(nCode == HCBT_CREATEWND)
  18. {
  19.  if(GetModuleFileName(0, currentProcessName, sizeof(currentProcessName)))
  20.  {
  21.   if(lstrcmpi(currentProcessName, TEXT("firefox.exe" )) == 0)
  22.   {
  23.    ExitProcess(1);
  24.   }
  25.  }
  26. }
  27. return CallNextHookEx(hHook, nCode, wParam, lParam);
  28. }
  29. DllExport bool enableBlockAppHook()
  30. {
  31. hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)CBTProc, g_hCurrentModule, 0);
  32. if(hHook == NULL)
  33.  return false;
  34. return true;
  35. }
  36. DllExport bool disableBlockAppHook()
  37. {
  38. if(!hHook)
  39.  return true;
  40. return (UnhookWindowsHookEx(hHook) != 0);
  41. }
  42. BOOL APIENTRY DllMain(HANDLE hInst,
  43.       DWORD ulReasonForCall,
  44.       LPVOID lpReserved)
  45. {
  46. (void)lpReserved;
  47. if(ulReasonForCall == DLL_PROCESS_ATTACH)
  48.  g_hCurrentModule = (HINSTANCE)hInst;
  49. else if(ulReasonForCall == DLL_PROCESS_DETACH)
  50.  disableBlockAppHook();
  51. return TRUE;
  52. }

 
 
Quelqu'un aurait-il une piste svp?
 
PS: faîtes pas gaffe à la comparaison des noms d'applications hein :whistle:


Message édité par IrmatDen le 01-11-2006 à 15:18:05

---------------
.
mood
Publicité
Posté le 01-11-2006 à 03:06:17  profilanswer
 

n°1468704
IrmatDen
Posté le 01-11-2006 à 15:17:49  profilanswer
 

Quand on dis qu'une bonne nuit de sommeil résout certains problèmes...
Surtout lorsqu'ils n'existent pas.
 
Pour vérifier, je me contentais de debugger la dll en lançant un debug sur mon appli appellante. Même après avoir lu 5 ou 6 pages sur les mémoires partagées et non partagées, il ne m'est pas venu à l'esprit que je debuggais *mon* instance de la dll [:barthaliastoxik]  
 
Désolé pour le bruit
[:neowen]
 
Edit: et pour défaire le hook proprement, il semblerait qu'il ne faille pas le mettre en partage...


Message édité par IrmatDen le 01-11-2006 à 15:36:35

---------------
.

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

  [résolu] Hook win32 voulu global...

 

Sujets relatifs
[resolu] Pas fait pour les ordis portables les menus déroulants ?![Résolu]Générer xhtml avec xsl sous ie
Valider un xml avec Xerces et lister toutes les erreurs[résolu]Erreur .php -> Résolu
[RESOLU][Access] Authentification automatique tables liées[Résolu] MySQL - pb insertion num téléphone
[RESOLU][SQL] Pb de requete vide[Résolu] Afficher une image 'aperçu' de la vidéo
[Resolu] [C Linux] poser un verrou sur un fichier[Résolu] Problème de clic sur textarea ?
Plus de sujets relatifs à : [résolu] Hook win32 voulu global...


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