autohotkey 循环工具提示并使用 enter 确认选择
autohotkey looping tooltip and confirm selection with enter
我想用 autohotkey 完成一个看似简单的任务:当检测到某个热字串时,然后显示一个工具提示(在本例中为当前日期)。当显示工具提示时,我想对 UP 和 DOWN 按键做出反应,分别显示数组上的下一个和上一个项目。然后当按下 Enter 键时,我想确认 "selection" 并粘贴该工具提示文本。这是当前代码,对于如此简单的任务来说它看起来太大了。
; ------------------------ 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::
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
我想用 autohotkey 完成一个看似简单的任务:当检测到某个热字串时,然后显示一个工具提示(在本例中为当前日期)。当显示工具提示时,我想对 UP 和 DOWN 按键做出反应,分别显示数组上的下一个和上一个项目。然后当按下 Enter 键时,我想确认 "selection" 并粘贴该工具提示文本。这是当前代码,对于如此简单的任务来说它看起来太大了。
; ------------------------ 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::
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