[..] IsAutoRepeat()

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
berthozero
Niveau 2
Niveau 2
Messages : 20
Enregistré le : sam. 16 janv. 2010 22:09
Status : Hors ligne

[..] IsAutoRepeat()

#1

Message par berthozero »

Bonjour, j'aurai besoin de la fonction isAutoRepeat() pour savoir si ... euh (trop dur a expliquer) voir ici ==> Doc Qt sur isAutoRepeat() de la classe QKeyEvent

J'ai recherché dans pleins de fichiers de mon ordi (C:\Qt\...) mais je n'est pas trouvé cette fonction, car au début je voulait la reproduire en AutoIt, mais si je ne la trouve pas bah je ne peux pas, sinon j'ai essayé avec les DLL (que je ne maitrise pas trop bien) grâce à la library MSDN mais rien trouvé qui fonctionne ou que j'arrive à faire fonctionner :?

Quelqu'un pourrai me dire comment faire ou me donner le code SVP ?

PS: je voudrai que la fonction renvoi 1 si c'est une auto-répétition et 0 si c'est un appuy initial

aaaaaaaa (en restant appuyé)

Le premier a n'est pas une auto-répétition, les autres si !
berthozero
Niveau 2
Niveau 2
Messages : 20
Enregistré le : sam. 16 janv. 2010 22:09
Status : Hors ligne

Re: [..] IsAutoRepeat()

#2

Message par berthozero »

UP, aidez moi svp c'est important :(
ragnoff
Niveau 3
Niveau 3
Messages : 34
Enregistré le : ven. 24 juil. 2009 17:11
Status : Hors ligne

Re: [..] IsAutoRepeat()

#3

Message par ragnoff »

Bonjour

Alors, je n'ai peut être pas compris pleinement les enjeu de ce que vous voulez faire, mais écrire vos aaaaa de couleur différente peut se faire simplement en utilisant la fonction _ispressed et un jeu de variable.

Par exemple, dans une boucle :

Code : Tout sélectionner

$a = 0
While 1 
    if _IsPressed("41") Then
        Select
            case $a = 0 
                ;action 1 ==> votre a rouge
                $a = 1
            Case $a = 1
                ; action 2 ==> vos a verts
        EndSelect
    Else
        $a = 0
    EndIf
WEnd

 
Certes, ça tient plus de la bidouille que de quelque chose de sérieux, en attendant, ça peut dépanner. Attention, j ai pas mis l include de _ispressed.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] IsAutoRepeat()

#4

Message par Tlem »

Ce n'est pas ce que berthozero recherche.

Il voudrait simplement savoir si il y à répétition de touche.
Et quand il parle de répétition, il voudrait plus spécialement détecter l'événement auto-répétition d'une touche produit par Windows.

Là comme ça, je n'ai pas de réponse. Mais je verrais bien un truc avec un appel de DLL Windows ou tout simplement l'utilisation des Windows Message Codes de la documentation. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] IsAutoRepeat()

#5

Message par jchd »

Le seul problème est que ce n'est pas Windows qui gère l'auto-repeat, mais le clavier lui-même.

Pour détecter l'auto-repeat, il faut utiliser ceci avec WM_KEYBOARD.
Voici un exemple d'utilisation :
► Afficher le texte
C'est brut de fonderie et le code des touches ne correspond pas (directement) au caractère entré. Entre les deux il y a, entre autres, un pilote clavier. Mais on peut synchroniser avec d'autres appels pour rapprocher code vKey et caractère réel, s'il y a vraiment besoin.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] IsAutoRepeat()

#6

Message par Tlem »

jchd a écrit :Le seul problème est que ce n'est pas Windows qui gère l'auto-repeat, mais le clavier lui-même.
Je ne suis pas du tout certain de cette affirmation. En tout cas Windows peut avoir son mot à dire car sous mon Windows XP SP3, dans le panneau de configuration, dans la partie clavier; il est possible de régler la fréquence de répétition ...

Donc si Windows est capable de modifier cette partie, il est capable de détecter le moment de la répétition ... :roll:
Il doit donc bien exister un événement Windows, ou alors il est possible d'utiliser une API afin de détecter aussi cet événement. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] IsAutoRepeat()

#7

Message par jchd »

La fréquence de répétition et le délai avant première répétition sont envoyés au 8042 qui les passe au clavier.
Windows permet de gérer ces paramètres, mais n'intervient pas directement dans leur réalisation.

Par contre, le contrôleur clavier (ex 8042, maintenant noyé dans le chipset) renvoie le mot d'état qui est accessible en lParam par l'appel dont j'ai fourni un exemple.

L'exemple d'emploi de l'API Windows que tu appelles de tes voeux est en spoiler dans mon post.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] IsAutoRepeat()

#8

Message par Tlem »

[mode mauvaise fois ON]
Comme il n'y avait pas les balises de code dans le spoiler, je n'avais pas vu. J'ai donc rajouté les balises et lu votre code. :P
[mode mauvaise fois OFF]

Ceci dit ma réponse était orientée sur votre phrase :
jchd a écrit :Le seul problème est que ce n'est pas Windows qui gère l'auto-repeat, mais le clavier lui-même.
qui est vraie sur le fond, mais qui fait abstraction de ma phrase précédente :
Tlem a écrit :je verrais bien un truc avec un appel de DLL Windows ou tout simplement l'utilisation des Windows Message Codes de la documentation.
bien que vous donniez une solution dans ce spoiler qui m'a été invisible. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] IsAutoRepeat()

#9

Message par jchd »

Désolé, c'est une erreur de mulot, que je prive illico de dessert pour une semaine.

Si cette fonction était gérée par Windows elle serait certainement implémentée au-dessus de la traduction clavier, ce qui rendrait les choses plus simples. Ceci dit, ce n'est pas d'un emploi si répandu donc on doit accepter ces contorsions.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] IsAutoRepeat()

#10

Message par Tlem »

Il y a peut être une solution avec les Windows Messages, car suite à quelques recherches au sujet de cette question j' ai noté des choses étranges dans la documentation (voir mon sujet sur le forum Anglais) et cela m'a amener à lire ce lien http://msdn.microsoft.com/en-us/library ... 85%29.aspx .
On peut y lire les valeurs de retour du lParam et principalement les Bits 0-15. :roll:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] IsAutoRepeat()

#11

Message par jchd »

"Bras de fer" avec Jean-Paul* : oui, j'ai vu !
Il n'a pas bien capté le problème : 0x0109 c'était WM_WNT_CONVERTREQUESTEX qui a disparu de MSDN.

Ah oui, c'est même certainement plus facile à gérer ainsi (avec WMC), car déja converti en Unicode. Par contre, j'ai déjà eu des soucis avec cette approche (séquence de composition Alt + 0xxx). J'avais répondu à côté de la plaque, ayant lu ta remarque trop vite ::ahem::.


* Tout est relatif bien sûr, c'est un charmant "vieillard".
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] IsAutoRepeat()

#12

Message par timmalos »

Je ne veux pas interrompre cette conversation au combien interessante, mais je precise que Berthozero (qui m'a demandé de l'aide via MSN) demande cette information pour creer un keylogger.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] IsAutoRepeat()

#13

Message par Tlem »

Houuuuuu.
C'est pas bien. Image
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
berthozero
Niveau 2
Niveau 2
Messages : 20
Enregistré le : sam. 16 janv. 2010 22:09
Status : Hors ligne

Re: [..] IsAutoRepeat()

#14

Message par berthozero »

Merci de votre aide mais je n'arrive pas à me servir de WM_KEYDOWN Message, je l'avais deja vu mais je n'arrive pas à m'en servir :S
Répondre