lastpixl
Messages postés56Date d'inscriptionsamedi 28 juin 2003StatutMembreDernière intervention16 février 2006
-
23 janv. 2004 à 21:05
lastpixl
Messages postés56Date d'inscriptionsamedi 28 juin 2003StatutMembreDernière intervention16 février 2006
-
23 janv. 2004 à 21:36
J'ai essayé de mettre un en place un hook CBT comme pour les autres types de hooks, mais à chaque fois quand je lance le programme il me plante mon envoronnement de developpement (BCB5).
La source plus bas est le code d'un DLL, qui est loadé par un autre exe, qui appelle la fonction InitHook, puis EndHook quand il se quitte.
Est-ce que quelqu'un pourrait m'expliquer pourquoi ca plante ?
HHOOK CBTHookHandle;
LRESULT CALLBACK CBTProc(int nCode,WPARAM wParam,LPARAM lParam);
// fonction d'initialisation de la DLL
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
HInst = hinst;
switch (reason)
{
case DLL_PROCESS_ATTACH : // à la création de l'instance de la DLL
break;
case DLL_PROCESS_DETACH : // au détachement de la DLL
//------------------------------------------------------------------------------
void _export InitHook(HWND hDest) // _export est spécifique à BCB
{
CBTHookHandle = SetWindowsHookEx(WH_CBT, // Créer un hook sur le clavier
(HOOKPROC)CBTProc, // Utiliser la fonction KeybdProc
HInst, // Dans la DLL d'instance HInst
0); // Pour tous les threads
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 janv. 2004 à 21:22
HInst = hinst; ne mettre que sur:
case DLL_PROCESS_ATTACH
ShowMessage("HCBT_SYSCOMMAND"); ça fait quoi ? Si tu affiches une fenetre en MessageBox ou un truc de ce genre faut pas chercher plus loin, c'est la boucle infinie.
Tu peux aller voir mes exemples, si je me souviens le limiteur de fenetres IE en version 2 se sert de ce hook.
ciao...
BruNews, Admin CS.