Page 1 sur 1

[..] Enregister touche clavier

Posté : mer. 01 déc. 2010 09:51
par aikiox
Bonjour,

J'aimerais fais un script qui permet savoir sur quelle touche l'utilisateur a appuie pour ensuite afficher un msgbox.

Cordialement
Romain

Re: [..] Enregister touche clavier

Posté : mer. 01 déc. 2010 10:58
par zeshrek
hummmm.... sujet tendencieux (risque de keyloger)
Je me contenterai donc dans mon exemple de ne donner que le strict minimum pour illustrer le principe, cad de ne scanner que les 26 lettres de l'alphabet, sans distinguer minuscule et majuscules, ni les autres caracteres (chiffres, ponctuation... etc)
Si c'est trop 'border line' les modo ont toute lattitude pour censurer, je n'en serais pas offensé

Code : Tout sélectionner

#cs
    ecoute le clavier et renvoie la lettre préssée.
    ne détecte que les 26 letttres de l'alphabet (ni les chiffres, ni le pavé, ni les accentué, ni la ponctuation, ni les signes $£*ù...etc

    Pour sortir appuyer sur la touche [ESC]
#ce

HotKeySet("{ESC}", "Fin")

While 1
    For $i = 65 To 90
        If _EcouteTouches($i) Then
            MsgBox(0, "Touche pressée", "Vous avez appuyé la touche [ " & Chr($i) & " ]")
        EndIf
    Next
WEnd

Func _EcouteTouches($touche)
    Local $ScanClavier, $EtatScan

    $ScanClavier = DllCall("user32", "int", "GetAsyncKeyState", "int", $touche)

    If $ScanClavier[0] <> 0 Then
        $EtatScan = True
    Else
        $EtatScan = False
    EndIf

    Return $EtatScan
EndFunc

Func Fin()
    Exit 0
EndFunc
 

Re: [..] Enregister touche clavier

Posté : mer. 01 déc. 2010 13:12
par legend
Je pense que faire un hotkey pour chaque touche serait moins compliqué.
ps : un hotkey sur "a" desactive la touche "a", donc il ne fais pas de keylogger.
la fonction _ispressed aussi peut faire cela, mais il faudrais que tu te débrouille pour les boucles :)
bonne journée

Re: [..] Enregister touche clavier

Posté : mer. 01 déc. 2010 14:15
par bloodwolff
moins compliqué ? sa dépend pour qui et avec 26 hotkeyset le code ne sera pas très propre ... je préfère de loin la méthode proposé

Re: [..] Enregister touche clavier

Posté : mer. 01 déc. 2010 16:54
par zeshrek
j'ai pensé aux hotkey aussi mais... certains sont réservés par windows :
Aide AutoIt a écrit :The following hotkeys cannot be set:

Ctrl+Alt+Delete It is reserved by Windows
F12 It is also reserved by Windows, according to its API.
NumPad's Enter Key Instead, use {Enter} which captures both Enter keys on the keyboard.
Win+B,D,E,F,L,M,R,U; and Win+Shift+M These are built-in Windows shortcuts. Note: Win+B and Win+L might only be reserved on Windows XP and above.
Alt, Ctrl, Shift, Win These are the modifier keys themselves!
Other Any global hotkeys a user has defined using third-party software, any combos of two or more "base keys" such as '{F1}{F2}', and any keys of the form '{LALT}' or '{ALTDOWN}'
Apres, ca dépend de ce qu'il veut faire au final...

Re: [..] Enregister touche clavier

Posté : mer. 01 déc. 2010 18:40
par legend
Bof, j'ai deja fait un keylogger juste pour le tester sur mon pc en utilisant hotkey.
sa fonctionnait presque parfaitement, sauf qu'il fallait ajouter du code pour régler le bug d'appui trés rapide sur les touches, ou plusieurs touches en même temp.
mais bon, plusieurs hotkeys dans un seul script ne bug pas.
et pour les touches réservées pour windows, j'ai le moyen de les faire marcher avec hotkey :)
par exemple ,Ctrl+Alt+Delete, tu fais un petit hotkey pour Ctrl.
tu introduit un petit _ispressed a la fonction du hotkey Ctrl.
Pour moin compliqué je parlais pas de la longueur du code, mais de son niveau (plus facile a apprendre.)
bonne journée a vous.

Re: [..] Enregister touche clavier

Posté : mer. 01 déc. 2010 21:47
par sylvanie
Moi, personnellement je vois un keylogger en puissance. point barre