1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
PROCEDURE Procédure_Hookeuse(ncode,wparam,lparam)
clavier est un KBDLLHOOKSTRUCT
KeyState est un tableau fixe de 256 entiers sans signe sur 1 octet
MonCharEx est un tableau fixe de 2 caractères
RetourFonction est un entier
vk est un entier sans signe
//MonChar est un caractère
keylayout est un entier
tailleChar est un entier
x est un entier
SI ncode = HC_ACTION ALORS
// Sur touche enfoncé uniquement
SI wparam <> WM_KEYDOWN ALORS
RENVOYER API("user32","CallNextHookEx",gnHandleHook, ncode, wparam, lparam)
FIN
Transfert(&clavier,lparam,Dimension(clavier)) // transfert de la structure ( méthode peu recommandable avez-vous mieux ? cast?)
keylayout=API("USER32","GetKeyboardLayout",0)
RetourFonction=API("USER32","GetKeyboardState",&KeyState)
vk = API("USER32","MapVirtualKeyExA",clavier:scanCode,1,keylayout)
// on place l'état de la touche Shift dans le tableau des états des touches
KeyState[VK_SHIFT +1]= ETBinaire((API("USER32","GetAsyncKeyState",VK_SHIFT)/256),255)
//RetourFonction=API("USER32","ToAscii",clavier:vkCode,clavier:scanCode,&KeyState,&MonChar,0)
// on appelle ToAsciiEx plus balaise que ToAscii
tailleChar =API("USER32","ToAsciiEx",vk, clavier:scanCode,&KeyState,&MonCharEx, 0, keylayout)
POUR x = 1 A tailleChar
Fenêtre1.Memo += MonCharEx[x] // Memo est un champ de saisie qui affiche les caractères tapés
FIN
FIN
// Renvoie la suite du hook afin de permettre le traitement de l'appui par la fenetre d'origine
RENVOYER API("user32","CallNextHookEx",gnHandleHook, ncode, wparam, lparam) |
Partager