发表回复 
多个按键共用函数问题求助
2014-09-15, 18 : 44
多个按键共用函数问题求助
之前提问了个小问题,得到了解决,但是没想到还是无法用于下面的情况:
代码: (全选)
#c::
公共函数("c:","d:","e:")
return
#x::
公共函数("c:\12","d:\123","e:\123")
return


公共函数(a,b,c){
if winc_presses > 0 ; SetTimer 已经启动, 所以我们记录键击.
{
    winc_presses += 1
    return
}
; 否则, 这是新开始系列中的首次按下. 把次数设为 1 并启动
; 计时器:
winc_presses = 1
SetTimer, KeyWinC, 400 ; 在 400 毫秒内等待更多的键击.
;~ MsgBox % winc_presses
return

KeyWinC:
SetTimer, KeyWinC, off
MsgBox % winc_presses 000

if winc_presses = 1 ; 此键按下了一次.
{
    run % a
}
else if winc_presses = 2 ; 此键按下了两次.
{
    run % b
}
else if winc_presses > 2
{
   run, % c
}
; 不论触发了上面的哪个动作, 都对 count 进行重置
; 为下一个系列的按下做准备:
winc_presses = 0
return
}
我想实现的就是:
当设置快捷键为win+c时,能根据按键次数[按win不动,按1次,2次和3次c]分别打开cde盘,同理,而当设置为win+x时,能打开c:\12
d:\123和e:\123 文件夹,也就是只需稍微修改下即可。该如何修改呢?【上面的无法运行】

先谢过各位了!!!
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-15, 19 : 00 (这个帖子最后修改于: 2014-09-15 19 : 01 by robertL.)
RE: 多个按键共用函数问题求助
好主意,有想法!
  • 上面的代码可以运行。
    可以把其中的Msgbox换成Tooltip观察结果..
    真正的问题在函数中..
  • 学会调试,能发现问题在哪..
    过程长了,变量多了,逻辑复杂了,调试必不可少。
  • 调试、学习加深印象..
  • 可以完善设计
    热键#c后在t时内等待下一次c,当在t时内等到c,则继续t时内等待下一次..,直至在t时内未等到新的c。
  • 本帖对应论坛QA-多个按键共用函数问题求助
  • 尽量把叙述简化,看着才有胃口..。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-15, 19 : 08 (这个帖子最后修改于: 2014-09-16 11 : 17 by zhanglei1371.)
RE: 多个按键共用函数问题求助
(2014-09-15 19 : 00)robertL 提到:  热键[font=Courier]
[/list]
对于一般的调试我知道怎么弄,叙述我是尽可能详细以说清楚问题。上面代码的问题在于最后一个子函数中的abc取不到值,纠结了一个小时,无计可施
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-15, 19 : 18 (这个帖子最后修改于: 2014-09-15 19 : 22 by robertL.)
RE: 多个按键共用函数问题求助
嗯..
  • 空了可以看看A大的帖子—动态调试的一般方法(英文官网论坛)
  • 2# 提到:问题在函数中..
    更准确点,在函数的变量中..
    有几个概念:全局变量、局部变量、静态变量..
  • 你不是有句观察变量用的功能吗——MsgBox % winc_presses 000 ,应该能看到结果,非期望的结果。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-16, 11 : 18
RE: 多个按键共用函数问题求助
(2014-09-15 19 : 18)robertL 提到:  嗯..
应该能看到结果,非期望的结果。
[/list]
说了这么多,我还是不知道怎么修改能得到我需要的结果。你干脆把解决方法写出来不算了么,我就能采纳并结贴了。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-16, 14 : 00 (这个帖子最后修改于: 2014-09-16 14 : 55 by robertL.)
问题 分析
  • A.给你答案B.告诉你答案在哪,C.告诉你如何找答案..
    我给不了答案,因为我没想过(正在想..),具体实现可能有些方式,但想必是和下面的内容(部分也是上面提及的)有关...
    中文帮助手册 - 目录 \ 基本用法和语法 \ 函数 - 局部变量(局部变量和全局变量)在函数中使用子程序
  • 当前的问题是定时器子过程中的变量不继承函数(函数已经退出,局部变量被清空)

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


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