[R] Calcul d'action par minute

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

[R] Calcul d'action par minute

#1

Message par cortx »

Bonjour:

Je suis en train de réaliser un script qui me permettrai de calculer le nombre d'action par minute exécuté lors que je joue/tappe un texte/surf

Je suis parti sur le raisonnement suivant:

Code : Tout sélectionner

x=heure_de_début
while 1
action = action +1
endwhile
y=heure_de_fin
APM= action / heure_de_fin - heure_de_debut
Pour le moment c'est le raisonnement logique que j'ai sans code.
J'ai commencé à mettre en forme mais je bute sur la détermination d'une 'action'
Il faut que ce soit n'importe quel frappe clavier et n'importe quel clic souris.
Ca va de a->z / A->Z / 1->! ainsi que toutes les variantes possible et immaginable avec Shift/Ctrl/Alt
Et pour la Souris c'est le clic: droit/gauche/milieu/scroll/btn4/btn5 et plus si possible (par exemple ma molette de souris à des clic horizontaux en plus des scroll et du clic milieu).

Est ce qu'il existe un moyen simple et efficace pour qu'auto-it détecte cela ?
Je connais le IsPressed mais je me vois mal faire autant de fonction qu'il y à de combinaison possible et imaginable.

Merci d'avance.
CortX

Voici le code final:
► Afficher le texte
Modifié en dernier par cortx le dim. 12 mai 2013 06:22, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Calcul d'action par minute

#2

Message par mikell »

Oui on peut, voilà le moteur (la partie minutage je te la laisse)
Sans la roulette :
► Afficher le texte
Avec la roulette (clics horizontaux et scroll) c'est plus compliqué, faut télécharger l'udf WinAPIEx.au3
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [...] Calcul d'action par minute

#3

Message par cortx »

Bonjour;

Merci pour ces script je vais étudier et ajouter la partie minutage que j'ai déjà faites pendant la nuit.
Par contre pour ceux qui viendront ici pour récupérer l'info j'ai trouvé un petit bug.
Prenons l'exemple d'un texte en cours de rédaction, j'écris tout en minuscule.
Or parfois si j'ai besoin d'écrire un mot en majuscule je n'appuie pas sur Caps Lock mais je reste appuyer sur Shift et j'écris mon mot.
Dans l'état actuel le comptage ne sera actif que lorsque j'aurais relaché la touche shift et ne comptera que 1
Je vais voir si il est possible de jouer sur le Until not _IsPressed(Hex($i)), car si je retire cette ligne, le fait de rester appuyer augmente le compteur.
Je vais chercher si il est possible d'avoir une option non pas de pression de touche mais de relachement

A plus tard.

@Mikell:
Peux tu m'expliquer: GuiGetMsg()<>-3
J'ai compris que la fin du script intervenais quant j'appuyai sur Echap ou fermais la fenetre de compteur mais je ne comprends pas le "<>-3"

**********

Edit:
Je viens d'avoir une idée, mais je ne sais pas si elle est valable.
Faire une boucle For en excluant les touches Shift, Ctrl, Alt pour compter toutes les touches sauf celles ci avec des $i = 1 to x or $i= y to z
Faire ensuite des simple if pour chacune des touches Shift, Ctrl, Alt pour les comptabiliser aussi mais juste une fois.

...Bon je suis une quiche en codage :D
J'ai voulu faire For $i = 1 to 10 or $i = 11 to 221
Heu ouai mais non, c'est pas ca qui détecte la touche appuyé, (non ne me tapez pas)

**********

Voila à quoi je suis arrivé pour le moment en ignorant la touche shift de droite.
J'ai retiré la convertion en Hexadécimal pour m'éviter toute erreur.
J'ai fais une tooltip d'aide qui affiche le code du caractère appuyé pour aider.
Reste maintenant à savoir comment compter les touches spéciale tel que Shift et Alt une seule et unique fois qu'elle soit relaché ou non et à continuer à compter les autres même si elles sont encore enfoncée.

Code : Tout sélectionner

#include <Misc.au3>
HotKeySet("{ESC}", "_Exit")

;ctrl droite = 17 163
;ctrl gauche = 17 162
;shift droite = 16 161
;shift gauche = 16 160
;alt gauche = 18 164
;alt droite = 17 162
;Fn 93
;windows 91

GuiCreate("test", 50, 30, 10, 10)
$label = GuiCtrlCreateLabel("0", 20, 10, 20, 20)
GuiSetState()

Local $action
While GuiGetMsg()<>-3
For $i = 1 to 221

    If _IsPressed(Hex($i)) Then
        If  $i <> 16 Then ;shift
            If  $i <> 160 Then ; shift
                ToolTip("$i=" & $i & " - Hex($i)=" & Hex($i) ,0,0)
                Do
                    Sleep(10)
                Until not _IsPressed(Hex($i))
            $action += 1
            EndIf
        EndIf

;~      If  $i = 16  Then ;shift
;~          ToolTip("$i=" & $i & " - Hex($i)=" & Hex($i) ,0,0)
;~              Do
;~                  Sleep(10)
;~              Until not _IsPressed(Hex($i))
;~          $action += 1
;~      EndIf
;~      If  $i = 160  Then ;shift
;~          ToolTip("$i=" & $i & " - Hex($i)=" & Hex($i) ,0,0)
;~              Do
;~                  Sleep(10)
;~              Until not _IsPressed(Hex($i))
;~          $action += 1
;~      EndIf

        GuiCtrlSetData($label, $action)
    EndIf
Next
Sleep(10)
Wend
_Exit()

Func _Exit()
    Exit Msgbox(0, "", $action)
EndFunc
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Calcul d'action par minute

#4

Message par mikell »

cortx a écrit :Dans l'état actuel le comptage ne sera actif que lorsque j'aurais relaché la touche shift et ne comptera que 1
Yes, faut trouver un petit additif ^^
cortx a écrit :Je vais voir si il est possible de jouer sur le Until not _IsPressed(Hex($i)), car si je retire cette ligne, le fait de rester appuyer augmente le compteur.
Oh que oui, si tu retires cette ligne chaque appui de touche fera : $action += 583 (environ)
cortx a écrit :Je vais chercher si il est possible d'avoir une option non pas de pression de touche mais de relachement
C'est effectivement la solution et ça s'appelle "Until not _IsPressed(Hex($i)"
cortx a écrit :Peux tu m'expliquer: GuiGetMsg()<>-3
$GUI_EVENT_CLOSE = -3
cortx a écrit :For $i = 1 to 10 or $i = 11 to 221
Niet, tu peux pas faire ça, il faut faire 2 boucles For distinctes et successives
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [...] Calcul d'action par minute

#5

Message par cortx »

Bonsoir;

En testant ma fonction de calcul de temps je me suis aperçu qu'il existait un autre problème auquel je n'avais pas pensé.
J'ai pianoter rapidement sur mon clavier pour faire monter le compteur d'action, et bien, comme on gère le 'not _IsPressed' tant qu'une touche n'est pas relaché il arrête de compter les autres.
Si je tape le mot 'bonjour' je peux appuyer sur la lettre 'n' sans avoir relaché la lettre 'o'
Windows gère cela très bien et reproduit la frappe des lettre (j'ai regardé il est capable de détecter la lettre appuyer même si 5 sont déjà enfoncé)

Ca n'a l'air de rien comme ca, mais c'est une contrainte.
Je ne vais pas en tenir compte car je ne cherche pas quelque chose d'aussi poussée mais si on veux vraiment etre précis faudra y penser.
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [...] Calcul d'action par minute

#6

Message par GhostLine »

Je pense qu'il serait peut être temps pour toi d'apprendre à taper correctement (lorsque j'ai appris la dactylo au collège, on le faisait sur des machines à écrire classiques : deux touches en même temps, c'était la salade de barres de lettre assurée :)).

Image
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Calcul d'action par minute

#7

Message par mikell »

Rah ça y est je le tiens
Petite prise de tête du moment ...
► Afficher le texte
... le genre de truc qu'on ne fait qu'en vacances :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [R] Calcul d'action par minute

#8

Message par cortx »

SAlut;

Désolé Mikell, je n'avais pas vu ton message quant j'ai édite le mien en premier post.
Merci pour ce que tu as fourni, je vais me pencher dessus.
C'est un peu plus chiader que ce que j'ai l'habitude de sortir :D
Répondre