bonjour
je veux afficher une touché tapée par le clavier en c++ builder 6 j'ai eu un code qui fait ca mais j'ai su pas comment l'utiliser voila ce code:
HHOOK hHook; // Handle du hook clavier
int position=0;// Indicateur de position dans la chaine à afficher
// Chaine à afficher:
char texte[]="Vous êtes victime d'un programme qui détourne la frappe au clavier pour afficher le présent texte. Pour l'arrêter appuyez sur CTRL + Q ou attendez 3 minutes.\n";
// Liste des lettres avec accent circonflexe ou tréma:
BYTE avecaccents[]={'â','ê','û','î','ô','ë','ï'};
// Liste des lettres sans accent circonflexe ni tréma:
BYTE sansaccents[]={'a','e','u','i','o','e','i'};
// Liste des flags indiquant l'utilisation de la touche SHIFT:
BYTE shifts[]={0,0,0,0,0,1,1};
LRESULT CALLBACK HookProc ( int nCode, WPARAM wParam, LPARAM lParam)
// Action du clavier et les touches tappées
if ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN)) {
// conversion du code -> ascii
BYTE KeyState[256];
WORD wBuf;
char ch;
// Structure pour récupération des informations
KBDLLHOOKSTRUCT hooked = *((KBDLLHOOKSTRUCT*)lParam);
/* Traitement récupération dec codes des touches */
// Etat du clavier
GetKeyboardState(KeyState);
// Conversion code > ascii
ToAscii(hooked.vkCode, hooked.scanCode ,KeyState,&wBuf,0);
//on rajoute les touches non traitées par le hook
switch(hooked.vkCode){
case 9 :{printf("<TAB>");break;}
case 13 :{printf("<ENTER>");break;}
case VK_BACK :{printf("<delete>");break;}
case VK_DELETE: {printf("<Suppr>");break;}
/* vous pouvez rajouter vos traitements perso ici ! */
default : { // on affiche les touches tappées
ch=((char)wBuf);
printf("%c",ch);
break;
}
}
}
// Renvoi des messages au sytème
// return CallNextHookEx(hKeyHook, nCode,wParam,lParam);
}
aussi printf("%c",ch); ca marche pas en c++ builder 6
merci bien pour votre attention