Autohotkey 自动热键循环工具提示并用enter键确认选择

Autohotkey 自动热键循环工具提示并用enter键确认选择,autohotkey,Autohotkey,我想用自动热键完成一项看似简单的任务:当检测到某个热字符串时,显示工具提示(在本例中,显示当前日期)。当显示工具提示时,我想对上下键分别显示数组中的下一项和上一项做出反应。然后,当按下Enter键时,我想确认“选择”并粘贴工具提示文本。这是当前的代码,对于如此简单的任务来说,它看起来太大了 ; ------------------------ Date tooltip ::#curdate:: EnteringDate := True DateSeparator := [".",

我想用自动热键完成一项看似简单的任务:当检测到某个热字符串时,显示工具提示(在本例中,显示当前日期)。当显示工具提示时,我想对上下键分别显示数组中的下一项和上一项做出反应。然后,当按下Enter键时,我想确认“选择”并粘贴工具提示文本。这是当前的代码,对于如此简单的任务来说,它看起来太大了

   ; ------------------------ Date tooltip

::#curdate::
  EnteringDate := True
  DateSeparator := [".","/","-"]
  SelectedSep := 1
  GoSub, ShowToolTip
return 

ShowToolTip:
  Sep := DateSeparator[SelectedSep]
  FormatTime, Time,, dd%Sep%MM%Sep%yyyy ; dd MM yyyy is day month year
  ToolTip, %Time%
return

#If EnteringDate

Up::
SelectedSep := cycle(SelectedSep,DateSeparator.MaxIndex(),1)
GoSub, ShowToolTip
return

Down::
SelectedSep := cycle(SelectedSep,DateSeparator.MaxIndex(),-1)
GoSub, ShowToolTip
return

Enter::
EnteringDate := False
SendInput, %Time%
ToolTip ; Clear the tool tip
return

#If ; end entering date

cycle(value,maxValue,increment:=1){
 value += increment
 if value not between 1 and %maxValue%
    value := increment<0 ? maxValue : 1
 return value
}
;---------------------------日期工具提示
:#curdate::
输入日期:=真
日期分隔符:=[”、“/”、“-”]
SelectedSep:=1
GoSub,ShowToolTip
返回
显示工具提示:
Sep:=日期分隔符[SelectedSep]
格式时间,时间,日%Sep%MM%Sep%yyyy;dd-MM-yyy是年月日
工具提示,%Time%
返回
#如果输入日期
向上::
SelectedSep:=循环(SelectedSep,DateSeparator.MaxIndex(),1)
GoSub,ShowToolTip
返回
向下::
SelectedSep:=循环(SelectedSep,DateSeparator.MaxIndex(),-1)
GoSub,ShowToolTip
返回
输入::
输入日期:=假
发送输入,%Time%
工具提示;清除工具提示
返回
#如果;结束输入日期
循环(值,最大值,增量:=1){
值+=增量
如果值不在1和%maxValue%之间
值:=增量
:#curdate::
i:=0,DateSep:=[”,“/”,“-”],输入日期:=1
返回
#如果输入日期
向上::
工具提示
,%DateSep[i:=i1?--i:DateSep.MaxIndex()]
返回
输入::
输入日期:=0,九月:=DateSep[i]
格式时间,时间,日%Sep%MM%Sep%yyyy
发送输入,%Time%
工具提示
返回
#如果
Esc::ExitApp
:#curdate::
i:=0,DateSep:=[”,“/”,“-”],输入日期:=1
发送级别,1
发送,{up}
返回
#如果输入日期
向上::
DateSep[i:=i1?--i:DateSep.MaxIndex()]
九月:=DateSep[i]
格式时间,时间,日%Sep%MM%Sep%yyyy
工具提示,%Time
返回
输入::
输入日期:=0
发送输入,%Time
工具提示
返回
#如果

这几乎是完美的,除了我想在每个工具提示上显示格式化的日期。我知道AHK上的三元运算符,但我不知道可以在数组中使用它(我用JS的方式使用它,但这似乎是一种非常有限的语言)。%运算符是干什么的?我认为它“激活”一些模式,但我不确定;设置变量traditional=String,表达式:=“String”;获取变量MsgBox,%traditional%,MsgBox,%expression
::#curdate::
    i:=0,DateSep:= [".","/","-"],EnteringDate:=1
  return
#If EnteringDate
Up::
    ToolTip
    ,% DateSep[i:=i<DateSep.MaxIndex()?++i:1]
  return
Down::
    ToolTip
    ,% DateSep[i:=i>1?--i:DateSep.MaxIndex()]
  return
Enter::
    EnteringDate:=0,Sep := DateSep[i]
    FormatTime, Time,, dd%Sep%MM%Sep%yyyy 
    SendInput, %Time%
    ToolTip
  return
#If
Esc::ExitApp
::#curdate::
    i:=0,DateSep:= [".","/","-"],EnteringDate:=1
    SendLevel,1
    Send,{up}
  return
#If EnteringDate
Up::
    DateSep[i:=i<DateSep.MaxIndex()?++i:1]
    Sep:=DateSep[i]
    FormatTime, Time,, dd%Sep%MM%Sep%yyyy
    ToolTip,% Time
  return
Down::
    DateSep[i:=i>1?--i:DateSep.MaxIndex()]
    Sep:=DateSep[i]
    FormatTime, Time,,dd%Sep%MM%Sep%yyyy
    ToolTip,% Time
  return
Enter::
    EnteringDate:=0
    SendInput, % Time
    ToolTip
  return
#If