按键精灵如何根据快捷键生效部分脚本?

我想写这么一个脚本,是很多个脚本切换使用。
背景:我写了ABCD四个脚本,而且必须都是同一个按键去触发,很麻烦的就是还得根据当前需求切出屏幕,切换生效对应的脚本,我想使操作简便一点。
需求:
脚本触发执行方式--左键单击
当我按CTRL+A生效动作A,BCD动作不生效(但不是执行,只是生效,执行还是左键单击)
当我按CTRL+B生效动作B,ACD动作不生效(但不是执行,只是生效,执行还是左键单击)
当我按CTRL+C生效动作C,ABD动作不生效(但不是执行,只是生效,执行还是左键单击)
当我按CTRL+D生效动作C,ABC动作不生效(但不是执行,只是生效,执行还是左键单击)

我目前构思是,当我按某个快捷键计划生效A动作,那么就注释掉BC动作的指令;当我按某个快捷键计划生效B动作,那么就注释掉AC动作的指令;以此类推...

请问如何实现,需要具体命令语法

Private Declare Function GetKeyState Lib"user32"(ByVal nVirtKey As Long) As Integer
Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
Dimenv AA, BB, CC, DD
Global zz
DO
    If GetAsyncKeyState(17) = 32768 and GetKeyState(65) < 0 Then 
        TracePrint "你启动了线程A"
        StopThread BB
        StopThread CC
        StopThread DD
        AA = BeginThread(A)
        Delay 1000
    ElseIf GetAsyncKeyState(17) = 32768 and GetKeyState(66) < 0 Then
        TracePrint "你启动了线程B"
        StopThread AA
        StopThread CC
        StopThread DD
        BB = BeginThread(B)
        Delay 1000
    ElseIf GetAsyncKeyState(17) = 32768 and GetKeyState(67) < 0 Then
        TracePrint "你启动了线程C"
        StopThread BB
        StopThread AA
        StopThread DD
        CC = BeginThread(C)
        Delay 1000
    ElseIf GetAsyncKeyState(17) = 32768 and GetKeyState(68) < 0 Then
        TracePrint "你启动了线程D"
        StopThread BB
        StopThread CC
        StopThread AA
        DD = BeginThread(D)
        Delay 1000
    End If
    
Loop
Sub A
    Do
        z = GetLastClick
        If z = 32770 Then 
            TracePrint "你按下了左键A" & zz
            zz = zz + 1
        End If
    Loop
End Sub
Sub B
    Do
        z = GetLastClick

        If z = 32770 Then 
            TracePrint "你按下了左键B"&zz
            zz = zz + 1
        End If
    Loop
End Sub
Sub C
    Do
        z = GetLastClick
        If z = 32770 Then 
            TracePrint "你按下了左键C" & zz
            zz = zz + 1
        End If
    Loop
End Sub
Sub D
    Do
        z = GetLastClick
        If z = 32770 Then 
            TracePrint "你按下了左键D" & zz
            zz = zz + 1
        End If
    Loop
End Sub

如果你只是需要一个基本启动判断那么用多个IF就行了,不过你需要运行子线程的情况下还能开关其他子线程那还是需要多线程的,这是一个简单的判断组合键启动关闭子线程的代码,定义的API函数有GetKeyState和GetAsyncKeyState,把你的脚本放入相对的子程序中就行了,也就是zz=zz+1可以换成你的自写脚本,zz这个变量只是用来计算左键按键的次数的,没有任何作用。

追问

老哥牛逼!
我明天消化消化,有啥不懂的接着问你
顺便追点悬赏

温馨提示:答案为网友推荐,仅供参考
相似回答