[R] Arrêt/Lancement soft sur détection mouvement souris

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
freemykl
Niveau 1
Niveau 1
Messages : 4
Enregistré le : jeu. 25 juin 2009 13:47
Status : Hors ligne

[R] Arrêt/Lancement soft sur détection mouvement souris

#1

Message par freemykl »

Bonjour à tous,
Je suis à la recherche d'un script qui me permettrait de lancer ou arrêter un programme en fonction de "l'activité" de la souris.
Pour essayer d'être plus clair :
J'ai un programme qui se lance automatiquement au démarrage de Windows et je souhaiterais que :
- si un utilisateur "touche" la souris le programme se ferme automatiquement
- au bout de x secondes d'inactivité au niveau de la souris le programme se lance de nouveau
Je vous remercie par avance de votre aide.
Modifié en dernier par freemykl le jeu. 14 oct. 2010 14:15, modifié 1 fois.
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Arrêt/Lancement soft sur détection mouvement souris

#2

Message par Jerome »

Coucou,


Pour ce qui est de la souris qui bouge ou pas, vous pouvez controler les coordonées de la souris.

Avec la fonction MouseGetPos, vous rentrer dans une premiere variable, et faite une boucle qui dit que si cette variable est différente d'une nouvelle variable MouseGetPos, vous sortez de la boucle, et killer le processus de votre application.

Pour la relancer, effectuer un timer et lorsqu'il est remplit, on relance l'appli, chercher un peu sur le forum, tout s'y trouve.

Je vous ai donnée les point clé de votre script. Si d'autre question, n'hésitez pas.
freemykl
Niveau 1
Niveau 1
Messages : 4
Enregistré le : jeu. 25 juin 2009 13:47
Status : Hors ligne

Re: [..] Arrêt/Lancement soft sur détection mouvement souris

#3

Message par freemykl »

Merci de ton aide!

Sur tes indications j'ai commencé le code ci-dessous :

Code : Tout sélectionner

While 1

Global $positionSouris1 = MouseGetPos()
Global $positionSouris2 = MouseGetPos()

If $positionSouris1 <> $positionSouris2 Then
ProcessClose ( "notepad.exe")
EndIf

Sleep(1000)

WEnd
Mais il y a un problème : sans toucher la souris "notepad" se ferme.
Soit j'ai fait une erreur dans mon code ou soit la souris bouge en permanence (mais pas de façon "visible" à l'écran).
Modifié en dernier par Yogui le jeu. 14 oct. 2010 10:44, modifié 1 fois.
Raison : suppression colorisation
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Arrêt/Lancement soft sur détection mouvement souris

#4

Message par Yogui »

Bonjour

Premier point merci de ne pas utiliser la coloration du syntaxique Autoit qui est réservé aux exemples.

Vous avez mal lu l'aide de la fonction MouseGetPos !

Elle ne renvoie pas une valeur mais un tableau votre code ne peux pas fonctionner

Un code qui doit pouvoir fonctionner en cas de problème de compréhension j'ai mis un max de commentaire et d'information dans la console

Code : Tout sélectionner

#Region Variables
Global $Positiondepart
Global $positionmaintenant
Global $Compteur
Global $Tempsinacti
#EndRegion Variables

#Region initialisation des variables
$Positiondepart = MouseGetPos()
$Tempsinacti = 10 ; !
$Compteur = 0
ConsoleWrite("Position de départ : " & $Positiondepart[0] & $Positiondepart[1] & @CRLF) ;affichage pour debug
#EndRegion initialisation des variables

While 1
    Global $positionmaintenant = MouseGetPos() ;récupération de la position de la souris
    ConsoleWrite("Position maintenant : " & $positionmaintenant[0] & $positionmaintenant[1] & @CRLF);affichage pour debug
    If $Positiondepart[0] & $Positiondepart[1] <> $positionmaintenant[0] & $positionmaintenant[1] Then ;comparaison de la concaténation des deux valeurs du tableau
        _sourisabouge() ;appel de la fonction
        $Positiondepart = MouseGetPos() ;prise en compte de la nouvelle valeur de départ
    EndIf
    Sleep(1000);attente
    $Compteur += 1
    ConsoleWrite("temps d'inactivité : " & $Compteur & @CRLF);affichage pour debug
    If $Compteur = $Tempsinacti Then ;compteur =   temps d'inactivité je relance le notepad
        Run("notepad.exe")
    EndIf
WEnd

Func _sourisabouge()
    ConsoleWrite("la souris bouge je ferme notepad" & @CRLF);affichage pour debug
    ProcessClose("notepad.exe")
    $Compteur = 0 ;si la souris bouge je repart à 0
EndFunc   ;==>_sourisabouge

 
Modifié en dernier par Yogui le jeu. 14 oct. 2010 11:30, modifié 2 fois.
Raison : Ajout de commentaires dans le code
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Arrêt/Lancement soft sur détection mouvement souris

#5

Message par Jerome »

Coucou,


Perso j'ai un truc comme sa qui fonctionne :

Code : Tout sélectionner

Global $timer, $test

While 1
    $timer = TimerInit()
    $test = 0
    Do
        bouger()
        sleep(100)
        If TimerDiff($timer) > 4000 Then
            Run("ton programme (chemin complet)")
        EndIf
    Until $test = 1
Wend

Func bouger()
    $init = MouseGetPos()
    If ProcessExists("ton process") Then ProcessClose("ton process")
    Do
        sleep(100)
        $bouger = MouseGetPos()
    Until(($init[0] <> $bouger[0]) Or ($init[1] <> $bouger[1]) or TimerDiff($timer) > 4000)
    $test = 1

EndFunc


Jérôme
freemykl
Niveau 1
Niveau 1
Messages : 4
Enregistré le : jeu. 25 juin 2009 13:47
Status : Hors ligne

Re: [..] Arrêt/Lancement soft sur détection mouvement souris

#6

Message par freemykl »

Super, merci à tous les deux, ça fonctionne.
Désolé pour le code en couleur.
Répondre