Hook Clavier

Le
[0]x80->[H]4x²0r
Salut,
Je fait un hook global de clavier et mon programme marche bien quand je
teste sur explorer.exe il recupere toutes les touches etc Le probleme
c'est que je voulu le tester sous firefox et la je me suis rendu compte que
chaque touche etait dupliquée au log . Ex : Taper 'a' dans firefox donnait
'aa' dans le log . Est ce que quelqu'un sait quel est le probleme ? comment
le resoudre ?
Je precise que je n'est que 15 ans est que je fait du C/C++ que depuis 4 ou
5 mois .
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Lucas
Le #18888611
"[0]x80->[H]4x²0r" news:gpbr0m$orv$
Salut,
Je fait un hook global de clavier et mon programme marche bien quand je
teste sur explorer.exe il recupere toutes les touches etc ... Le probleme
c'est que je voulu le tester sous firefox et la je me suis rendu compte
que chaque touche etait dupliquée au log . Ex : Taper 'a' dans firefox
donnait 'aa' dans le log . Est ce que quelqu'un sait quel est le probleme
? comment le resoudre ?
Je precise que je n'est que 15 ans est que je fait du C/C++ que depuis 4
ou 5 mois .



Il faut voir ta procedure de hook
Tu n'as pas dû traiter comme il faut la variable nCode
Christian ASTOR
Le #18889971
[0]x80->[H]4x²0r wrote:


desole pour l'indentation . Oui tu as raison je n'est traite nCode (
dans mon code c'est 'Code' )



Oui, il faut tester
if (HC_ACTION == Code)
{ //...

Et ce n'est pas WPARAM *wParam mais WPARAM wParam
Il manque aussi CallNextHookEx()
Utiliser GetKeyNameText() pour traduire les touches
Utiliser KBDLLHOOKSTRUCT* pkbhs = (KBDLLHOOKSTRUCT*)lParam;
[0]x80->[H]4x²0r
Le #18888871
"Lucas" news:gpbrtn$pof$

"[0]x80->[H]4x²0r" news:gpbr0m$orv$
Salut,
Je fait un hook global de clavier et mon programme marche bien quand je
teste sur explorer.exe il recupere toutes les touches etc ... Le probleme
c'est que je voulu le tester sous firefox et la je me suis rendu compte
que chaque touche etait dupliquée au log . Ex : Taper 'a' dans firefox
donnait 'aa' dans le log . Est ce que quelqu'un sait quel est le probleme
? comment le resoudre ?
Je precise que je n'est que 15 ans est que je fait du C/C++ que depuis 4
ou 5 mois .



Il faut voir ta procedure de hook
Tu n'as pas dû traiter comme il faut la variable nCode




ok donc voila la procedure de hook :

int Logkbd(int code, WPARAM *wParam,LPARAM lParam)
{
//if(lParam > 0)
//{
char CurWindowTitle[256];
ofstream logfile("c:\logfile.txt",ios_base::app);
GetWindowText(GetActiveWindow(),CurWindowTitle,255);

if ( strcmp(CurWindowTitle,LastWindowTitle) )
{
cout << "Nouveau titre de fenetre : " << CurWindowTitle << std::endl;
strcpy(LastWindowTitle,CurWindowTitle);
//fprintf(logkbd,"nn -- Fenêtre active : ");
////fprintf(logkbd,CurWindowTitle);
//fprintf(logkbd,"n");
logfile << "nn -- Fenêtre active : " << CurWindowTitle << "n";
}

switch(*wParam)
{
case VK_BACK :
//fprintf ( logkbd,"[BKSP]" );
logfile << "[BKSP]";
break; // 0x08
// ... j'ai enlevé le code d'autres virtual keys pour faire plus petit .
case VK_ATTN :
break; // 0xF6
default:
// la je traite les autres caracteres ( autre que les virtual keys )
BYTE kbdStat[256];
GetKeyboardState(kbdStat);
WORD wBuf;
UINT ScanCode = 0;
ToAscii(*wParam,ScanCode,kbdStat,&wBuf,0);
if(lParam == 30)
{
//fclose(logkbd);
logfile.close();
return -1;
}
//fprintf(logkbd,"%c",(char) wBuf);
logfile << (char)wBuf;
break;
}
logfile.close();
//}
}


desole pour l'indentation . Oui tu as raison je n'est traite nCode ( dans
mon code c'est 'Code' )
Publicité
Poster une réponse
Anonyme