[..] Evenement

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jyz93
Niveau 1
Niveau 1
Messages : 8
Enregistré le : ven. 26 juin 2009 14:12
Status : Hors ligne

[..] Evenement

#1

Message par jyz93 »

Bonjour a tous,

Voila j'ai fais un petit scripts qui automatise plusieurs actions sur mon pc et qui tourne en boucle infinie...
Je voudrais donc savoir comment faire pour lors de l'appui de n'importe quel touche sur mon clavier (ou même de la souris) celui s'arrête automatiquement.
J'ai vu la fonction : Hotkeyset
Le problème c'est qui faut faire toutes les touches une par une... :s
Modifié en dernier par ani le sam. 04 juil. 2009 19:49, modifié 1 fois.
Raison : Ajout de la balise [..] dans le titre
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Evenement

#2

Message par orax »

Un hook global clavier et souris devrait faire l'affaire.
Cherchez hook keyboard et hook mouse ici ou sur le forum anglais.
Un exemple ici avec F3 : http://www.autoitscript.com/forum/index ... t&p=591697
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Evenement

#3

Message par jumby »

On peut couvrir un large choix de touche avec _ispressed sans trop ce prendre la tête.

Code : Tout sélectionner

#include <Misc.au3>

$dll = DllOpen("user32.dll")

While 1
    Sleep ( 50 )
    for $loop = 1 to 92 step 1
    If _IsPressed($loop, $dll) Then
        Exit
        ExitLoop
    EndIf
    Next
WEnd
DllClose($dll)
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] Evenement

#4

Message par SagePourpre »

_isPressed est cependant lent... Il prend du temps avant de faire effet (approximativement 500 ms)

J'irais peut-être voir du côté du lien d'Orax si j'étais toi.
Le script sur le forum anglais devrait réagir instantanément...
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Evenement

#5

Message par jumby »

500ms ? C'est bizarre, c'est instantané pour moi.
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] Evenement

#6

Message par SagePourpre »

jumby a écrit :500ms ? C'est bizarre, c'est instantané pour moi.
Vraiment ? ...


Voilà ma preuve


Le code ci-dessous est très simple


Appuie sur Home pour faire apparaître un tooltip évolutif.

Pause pour le mettre en pause
End pour l'arrêter


Home et Pause réagisse instantanément. Par contre, is pressed n'est pris en compte que lorsque
la fonction est à cette endroit.


La différence entre les 2 pour moi est flagrante...


Si j'effleure "end", le script, bien souvent, ne réagira pas. (fonctionne avec _ispressed)

Par contre, si j'effleure pause (qui fonctionne avec Hotkeyset)
la variable $Pause sera immédiatement changé et le script arrêtera sans que jamais j'aie
à ré-appuyer sur la touche une seconde fois parce que la première fois n'a pas pris.

Code : Tout sélectionner

#include<misc.au3>
HotKeySet("{HOME}","start")
HotKeySet("{PAUSE}","pause")
Global $pause
While 1 
    Sleep(100)
WEnd



Func start()
    $i = 0
    While Not _IsPressed(23)
        $i+=1
        Sleep(500)
        ToolTip($i,0,0)
        While $pause = 1
            Sleep(100)
        WEnd
        
        
    WEnd
EndFunc

Func pause()
    $pause = Not $pause
EndFunc
 

P.s. Un moyen simple pour contourner ce "délai"



Code : Tout sélectionner

#include<misc.au3>
AdlibEnable("presse",50)

While 1
    Sleep(1000)
WEnd



Func presse()
    If _IsPressed(23) Then
        
        MsgBox(0,"","",1)
    EndIf
EndFunc
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Evenement

#7

Message par Tlem »

Regardez l'exemple donné avec la fonction _WinAPI_SetWindowsHookEx.
Je pense qu'il devrait vous convenir.
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é".
Répondre