发表回复 
就像实现个按键优先,有高手帮忙吗?
2015-09-03, 17 : 24
就像实现个按键优先,有高手帮忙吗?
按住Q,发送123,优先1,其次2,最后3
松开Q,脚本停止。

这里有个问题,许多时候我按住Q,不停的发送123123,可是我当在1的时候松开,他还是会把后面的23按出来,请问可以在我送开Q的时候,不管脚本现在按在1或者2,​都可以马上停止吗,而不是当你松开Q的时候,他还会继续把23按完。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2015-09-04, 17 : 05
RE: 就像实现个按键优先,有高手帮忙吗?
没太听懂你的意思,你看看是这效果吗?
代码: (全选)
q::
    count := 0
    SetTimer, isP, 1000        ;1秒循环一次
    KeyWait,q                    ;防止一直按住q不放...可能有点多余...以防万一
return

isP:
    GetKeyState, state, q, P        
    if state = U                ;如果放开Q键
    {
        SetTimer, isP, off
        return
    }
    count++
    if (count == 1)
        TrayTip,,01
    else if (count == 2)
        TrayTip,,02
    else if (count == 3)
        TrayTip,,03
    else
        SetTimer, isP, off
return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 2用户表示感谢ZeronoFreya
2015-09-05, 13 : 18 (这个帖子最后修改于: 2015-09-05 16 : 53 by robertL.)
RE: 就像实现个按键优先,有高手帮忙吗? V1.1
以后换个这种标题吧。直接描述问题,甚至仅仅关键字。

代码: (全选)
i:=0
$a::
    while(GetKeyState("a","P"))
        Send % i:=Mod(i,3)+1

@ZeronoFreyaKeyWait貌似不错,可以防止自动重复击键。→无法阻止系统的自动重复击键,仅可间接避免热键响应过程的重复——使此过程持续(当仅允许一个热键响应过程时——#MaxThreadsPerHotkey 1)。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢robertL
2015-09-06, 08 : 57
RE: 就像实现个按键优先,有高手帮忙吗?
(2015-09-05 13 : 18)robertL 提到:  以后换个这种标题吧。直接描述问题,甚至仅仅关键字。

代码: (全选)
i:=0
$a::
    while(GetKeyState("a","P"))
        Send % i:=Mod(i,3)+1

@ZeronoFreyaKeyWait貌似不错,可以防止自动重复击键。→无法阻止系统的自动重复击键,仅可间接避免热键响应过程的重复——使此过程持续(当仅允许一个热键响应过程时——#MaxThreadsPerHotkey 1)。
感谢提醒!
感想....
好精简而且好可怕!这速度超越了我的反应了!(我指脚本执行的速度~)一瞬间电脑卡住了居然!
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢ZeronoFreya
2015-09-06, 08 : 59
RE: 就像实现个按键优先,有高手帮忙吗?
@ZeronoFreya 呃..加Sleep
我电脑没卡,因为本来就慢吧。。。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢robertL
2016-02-27, 15 : 55 (这个帖子最后修改于: 2016-02-28 04 : 37 by feiyue.)
RE: 就像实现个按键优先,有高手帮忙吗?

搞个发大招的:比如按住a键触发7、8、9三个动作,分别延时100毫秒、200毫秒、300毫秒,可以这样:


代码: (全选)
;----------------------------
;    发招快捷键定义模板
;----------------------------

总数组:=[]    ; 先定义一个总数组用于保存数据

; 定义 a、b 等键的 发送按键列表 和 发送后延时列表 到总数组
; 要发送的按键也可以是 "{s Down}", "{s Up}"之类的可以用多个键构成组合键
; 最后一个等待时间如果定很大可以让它执行完一次后就需要松开后才能再次执行

总数组[1]:={ 等待松开键:"a", 发送列表:["7","8","9"], 延时列表:[100,200,300] }
总数组[2]:={ 等待松开键:"b", 发送列表:["1","3","5"], 延时列表:[100,200,300] }

$a:: 按住循环发送按键(总数组[1])

$b:: 按住循环发送按键(总数组[2])

*F12:: Suspend    ; 用一个热键来挂起或恢复所有热键

按住循环发送按键(数据对象)    ; 实参为对象,形参也会转为对象并指向相同的内存地址
{
  ; 注意对象的属性,.只支持固定的字符串,[]才支持变量

  等待松开键:=数据对象.等待松开键

  发送项目总数:=数据对象.发送列表.MaxIndex()

  While GetKeyState(等待松开键,"P")
  {
    循环到第几项:=Mod(A_Index-1, 发送项目总数)+1

    Send, % 数据对象.发送列表[循环到第几项]

    结束时间:=A_TickCount+数据对象.延时列表[循环到第几项]

    While GetKeyState(等待松开键,"P") and (A_TickCount<结束时间)
      Sleep, 10
  }
}
Return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢feiyue
2016-07-14, 18 : 06
RE: 就像实现个按键优先,有高手帮忙吗?
上面的大神为什么我出错呢
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2016-07-15, 11 : 35
RE: 就像实现个按键优先,有高手帮忙吗?
用AHK_L在记事本中能用吗?如果记事本中能用,游戏中不能用,那么要更换发送模式。看看其他相关帖子吧,我没在游戏中测试过。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合