autohotkey循环工具提示并使用回车确认选择

时间:2015-02-19 07:44:58

标签: autohotkey

我想用autohotkey完成一个看似简单的任务:当检测到某些hotstring时,然后显示工具提示(在这种情况下,显示当前日期)。显示工具提示时,我想对UP和DOWN按键作出反应,分别显示数组上的下一个和上一个项目。然后当按下回车键时,我想确认"选择"并粘贴该工具提示文本。这是当前的代码,对于如此简单的任务而言看起来太大了。

   ; ------------------------ 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
}

2 个答案:

答案 0 :(得分:1)

::#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

答案 1 :(得分:1)

::#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