Probleme hook clavier

Résolu
bou3 Messages postés 42 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 26 juin 2005 - 17 juin 2005 à 11:50
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 17 juin 2005 à 17:31
bonjour,
je realise un hook clavier dans le cadre de mon stage.
je realise en ce moment mon application principale, et quand je lance mon hook il ne fonctionne pas. je travaille sous dev-c++, j`ai lie mon fichier .a au projet et mis le .dll dans le meme repertoire quel`executable.
le probleme vient-il de ma dll?
voici le code de mon hook:

#include <windows.h>
//******************************************************************************
# define DLLEXPORT __declspec (dllexport)
# define DLLIMPORT __declspec (dllimport)
//******************************************************************************
HINSTANCE moduleCourant;
HHOOK hookClavier;
//******************************************************************************
LRESULT CALLBACK InterceptionCombinaisonsClavier(int nCode, WPARAM wParam, LPARAM lParam)
{ if(nCode HC_ACTION && wParam WM_KEYDOWN )
{
KBDLLHOOKSTRUCT kbStruct = *((KBDLLHOOKSTRUCT *)lParam);


switch(wParam)
{
case WM_KEYDOWN: if (kbStruct.vkCode VK_LWIN || kbStruct.vkCode VK_RWIN)
{
return 1; // bloque touches windows
}
if (kbStruct.vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL))
{
return 1; // bloque control+echap
}
if (kbStruct.vkCode == VK_MENU && GetAsyncKeyState(VK_TAB))
{
return 1; // alt+tab
}
if (kbStruct.vkCode == VK_MENU && GetAsyncKeyState(VK_F4))
{
return 1; // alt+f4
}
}
}
return CallNextHookEx(hookClavier, nCode, wParam, lParam);
}
//******************************************************************************
void DLLEXPORT InitHook()
{
hookClavier = SetWindowsHookEx(WH_KEYBOARD, InterceptionCombinaisonsClavier, moduleCourant, 0);
}
//******************************************************************************
void DLLEXPORT EndHook()
{
UnhookWindowsHookEx(hookClavier);
}
//******************************************************************************
BOOL APIENTRY DllMain (HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
if(dwReason == DLL_PROCESS_ATTACH)
moduleCourant = hDll;
return 1;
}

9 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juin 2005 à 12:33
#define _WIN32_WINNT 0x0500
AVANT <windows.h>

pour le gestionnaire des taches, c'est ici:
http://brunews.free.fr/brunews/index.htm
prendre bnTasks

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juin 2005 à 11:56
Ta procédure de hook est pour WH_KEYBOARD_LL.

ciao...
BruNews, MVP VC++
0
bou3 Messages postés 42 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 26 juin 2005
17 juin 2005 à 12:02
merci ca marche impecc.
mais ca ne bloque pas alt+tab et alt+f4!
faut-il proceder d`une autre facon?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juin 2005 à 12:08
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,
WPARAM wParam, LPARAM lParam) {


BOOL fEatKeystroke = FALSE;


if (nCode == HC_ACTION) {
switch (wParam) {
case WM_KEYDOWN: case WM_SYSKEYDOWN:
case WM_KEYUP: case WM_SYSKEYUP:
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam; fEatKeystroke ((p->vkCode VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) ||
((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) ||
((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0));
break;
}
}
return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
}

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bou3 Messages postés 42 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 26 juin 2005
17 juin 2005 à 12:23
le compilateur me dit erreur de syntaxe avant p.
faut-il que je fasse un projet c++?
0
bou3 Messages postés 42 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 26 juin 2005
17 juin 2005 à 12:25
faut-il que j`inclue une librairie?
0
bou3 Messages postés 42 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 26 juin 2005
17 juin 2005 à 12:28
et au fait comment dois-je utiliser ta dll pour bloquer le gestionnaire de tache?
0
bou3 Messages postés 42 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 26 juin 2005
17 juin 2005 à 12:42
suis-je bete, je developpe en C: fallait que je declare p au debut.
merci
@+
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 juin 2005 à 17:31
Pour la source de cette DLL vous pouvez me contacter
0
Rejoignez-nous