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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
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
keylayout est un entier
tailleChar est un entier
x est un entier
FenêtreCourante est une chaîne
Machaine est une chaîne
SI ncode = HC_ACTION ALORS
// Sur touche enfoncé uniquement
SI wparam <> WM_KEYDOWN ET wparam <> WM_SYSKEYDOWN 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?)
FenêtreCourante = SysFenTitre (SysFenActive ())
SI FenêtreCourante <> FenêtreMémorisée ALORS
FenêtreMémorisée = FenêtreCourante
Fenêtre1.Memo += RC + FenêtreMémorisée + "++++++++++++++++++++++++++" + RC
FIN
keylayout=API("USER32","GetKeyboardLayout",0)
RetourFonction=API("USER32","GetKeyboardState",&KeyState)
vk = API("USER32","MapVirtualKeyExA",clavier:scanCode,3,keylayout)
KeyState[VK_SHIFT +1]= ETBinaire((API("USER32","GetAsyncKeyState",VK_SHIFT)/256),255)
KeyState[VK_MENU +1]= ETBinaire((API("USER32","GetAsyncKeyState",VK_CONTROL)/256),255)
KeyState[VK_CONTROL +1]= ETBinaire((API("USER32","GetAsyncKeyState",VK_CONTROL)/256),255)
// on appelle ToAsciiEx plus balaise de ToAscii
tailleChar =API("USER32","ToAsciiEx",vk, clavier:scanCode,&KeyState,&MonCharEx, 0, keylayout)
// gestion du return
SI clavier:vkCode = VK_RETURN ALORS Fenêtre1.Memo += RC
POUR x = 1 A tailleChar
Fenêtre1.Memo += MonCharEx[x] // Memo est un champ de saisie qui affiche les caractères tapés
FIN
SI tailleChar = 0 ALORS
Machaine = ""
SELON clavier:vkCode
CAS VK_NUMPAD0 : Machaine = "0"
CAS VK_NUMPAD1 : Machaine = "1"
CAS VK_NUMPAD2 : Machaine = "2"
CAS VK_NUMPAD3 : Machaine = "3"
CAS VK_NUMPAD4 : Machaine = "4"
CAS VK_NUMPAD5 : Machaine = "5"
CAS VK_NUMPAD6 : Machaine = "6"
CAS VK_NUMPAD7 : Machaine = "7"
CAS VK_NUMPAD8 : Machaine = "8"
CAS VK_NUMPAD9 : Machaine = "9"
FIN
SI Machaine <> "" ALORS Fenêtre1.Memo += Machaine
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