2017-10-14 43 views
2

J'essaie de créer un programme de vérification de la paume (un programme qui désactivera la souris lorsque j'écrirai). et je me demandais s'il y avait un moyen d'assigner toutes les lettres (majuscules et minuscules) et les nombres pour déclencher un code pour désactiver la souris pendant 300 millisecondes (j'ai écrit 5000 pour le tester) et être toujours capable d'utiliser les lettres et les chiffresDésactiver la souris à l'aide d'une touche dans Autohotkey

Voici le code

lbutton:: 
rbutton:: 
WheelUp:: 
WheelDown:: 
suspend, on 

a:: 
suspend, off 
BlockInput, MouseMove 
sleep 5000 
suspend, on 
BlockInput, MouseMoveoff 
return 

comme vous pouvez le voir, je l'ai fait la lettre (a) déclencher le code, mais je ne vais pas être en mesure de l'utiliser + je vais devoir répéter le code encore et encore pour plus de 50 caractères

Quelqu'un peut-il m'aider à résoudre ce problème s'il vous plaît?

  • J'ai cherché une solution pendant 2 heures avant de poster ce alors s'il vous plaît ne pas signaler que répété

Répondre

0

Vous pouvez essayer la commande entrée , il réglé sur 1 longueur de caractère et visible. Vous aurez probablement besoin de diviser la partie déclencheur et la partie suspension/veille car je m'attends à ce que la partie déclencheur ne puisse pas être déclenchée à nouveau si elle n'a pas terminé l'événement déclencheur précédent en raison de vos commandes de veille. Je vous suggère de regarder dans la commande settimer pour remplacer la commande sleep. Désolé je ne peux pas vous aider avec n'importe quel code, j'écris ceci sur mon téléphone et fais des suggestions par coeur.

MISE À JOUR:

Contrôlé la commande d'entrée, ne fonctionnait pas comme je m'y attendais. Je vous suggère de définir vos clés de déclenchement automatiquement, comme elles le font ici: https://autohotkey.com/board/topic/30294-simple-key-stroke-recorder/page-2.

J'ai créé du code pour jouer avec ici. Il ne se déclenche actuellement que sur la lettre q, mais avec la boucle dans l'enregistreur de frappe, vous devriez être en mesure de le faire.

SoundBeep, 1000,100 ; Just to check 
BlockMouse := 0 
return 

$q:: ; $ prevents the next command from triggering this again 
    SendInput, q 
    BlockMouse := 1 
    SetTimer, UnBlockMouse, 5000 ; Run UnBlockMouse after 500 ms 
Return 

UnBlockMouse: 
    SetTimer, UnBlockMouse, off ; Turn timer off 
    SoundBeep, 1000,100 ; Just to check 
    BlockMouse := 0 
Return 

#If (BlockMouse) ; If statement controls the behaviour based on the status of the variable BlockMouse 
    lbutton:: ; Disable button when BlockMouse variable is set to 1 
    rbutton:: ; Disable button when BlockMouse variable is set to 1 
    WheelUp:: ; Disable button when BlockMouse variable is set to 1 
    WheelDown:: ; Disable button when BlockMouse variable is set to 1 
#If 
+1

pouvez-vous s'il vous plaît me montrer comment le regard de code parce que j'ai essayé d'utiliser la commande ** entrée ** et je ne comprenais pas comment ça marche – Mx2002

+0

Et MX2002, cela a-t-il été utile? et où vous pouvez le combiner avec l'astuce keylogger pour définir tous les caractères comme un déclencheur dans une boucle simple? –

1

Essayez ceci:

#NoEnv 
#SingleInstance Force 
#InstallkeybdHook 
#InstallMouseHook 
#UseHook 

keys:=["a","b","c","d","1","2","3","4"] ; .... 
for each, key in keys 
{ 
    hotkey,%key%, BlockMouse, on 
    hotkey,+%key%, BlockMouse, on 
} 
return 

BlockMouse: 
    ; suspend, off 
    Mouse_Blocked := true 
    BlockInput, MouseMove 
    Send %A_ThisHotkey% 
    SetTimer, UnBlockMouse, -300 
return 

UnBlockMouse: 
    ; suspend, on 
    BlockInput, MouseMoveoff 
    Mouse_Blocked := false 
return 

#If (Mouse_Blocked) 

    lbutton:: 
    rbutton:: 
    WheelUp:: 
    WheelDown:: 
    ; suspend, on 
    return 

#If 
+0

Ceci est une excellente solution, et devrait être marquée comme la bonne réponse. – HaveSpacesuit