使用Autohotkey

时间:2017-10-14 12:36:19

标签: mapping autohotkey disabled-input

我正在尝试制作手掌检查程序(一种在我输入时会禁用鼠标的程序)。我想知道是否有办法分配所有字母(大写和小)和数字触发代码禁用鼠标300毫秒(我写了5000测试它)仍然能够使用字母和数字< / p>

这是代码

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

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

正如你所看到的,我写了字母(a)触发代码,但我将无法使用它+我将不得不一次又一次地重复代码超过50个字符

有人可以帮我解决这个问题吗?

  • 在发布此消息之前,我一直在寻找2小时的解决方案,所以请不要重复报告

2 个答案:

答案 0 :(得分:1)

试试这个:

#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

答案 1 :(得分:0)

您可以尝试输入命令,将其设置为1个字符长度并可见。 您可能需要拆分触发器部分和挂起/休眠部分,因为我预计触发器部件由于您的睡眠命令而未完成先前的触发事件时无法再次触发。我建议您查看 settimer 命令来替换sleep命令。对不起,我无法帮助您处理任何代码,我正在手机上写这个并提出建议。

<强>更新

检查输入命令,没有按我预期的方式工作。我建议你自动定义你的触发键,就像它们在这里一样:https://autohotkey.com/board/topic/30294-simple-key-stroke-recorder/page-2

我为你创建了一些修补程序代码。它目前只在字母q上触发,但是在按键记录器中有循环,你应该能够实现这一点。

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