AHK 提供 InputBox 功能并不能输入多行,有一定限制,提供一个 sInputBox 系统增强输入框。
AHK 提供 InputBox 功能并不能输入多行,有一定限制,提供一个 sInputBox 系统增强输入框。
实例:
MsgBox % sInputBox()
#ErrorStdOut ;~ 文件名修改为 sInputBox.ahk 丢到 Autohotkey 用户库目录中, ;~ 在任何脚本均可使用 sInputBox(Title="", Prompt="", EditText="") 显示增强输入框. ;~ 函数有返回值, 确定按钮为框内内容, 取消按钮为空. ;~ OutputVar := sInputBox([Title, Prompt, Default, HIDE, Width, Height, X, Y, Font, Timeout]) ;~ 选项含义与系统 InputBox 相同 ;~ 其中 HIDE 为 true, 1 以及字符串 "HIDE" (不分大小写) 时为密码形式输入 sInputBox(Title:="", Prompt:="", EditText:="" , Hided:=0 , IW:="", IH:="" , WX:="", WY:="" , Fnt:="", Timeout:=0 , param*) { global static g := "MRSuperInputBox" Title := Title ? Title : A_ScriptName , Prompt := Prompt ? Prompt : "输入内容:" , Fnt := Fnt ? Fnt : "微软雅黑" if !(MRSuperInputBoxHwnd) gosub MRSuperInputBoxGuibiuldMainGUI MRSuperInputBoxHwndEdit:="" , WX := RegExMatch(WX:=Trim(WX), "iS)^x?(\d+|center)$", WA) ? ("x" WA1) : "xCenter" , WY := RegExMatch(WY:=Trim(WY), "iS)^y?(\d+|center)$", WA) ? ("y" WA1) : "yCenter" Gui %g%: Show, % WX A_Space WY " AutoSize", % Title if Timeout { MRSuperInputBoxTimerOff := 0 , MRSuperInputBoxTimeOutStart:=1 , MRSuperInputBoxTimeOutTag:=Timeout*1000 SetTimer, MRSuperInputBoxTimer, 10 } else Pause, On loop { } until !Timeout || MRSuperInputBoxTimerOff return MRSuperInputBoxHwndEdit MRSuperInputBoxGuibiuldMainGUI: Gui %g%: New, +HwndMRSuperInputBoxHwnd Gui %g%: +AlwaysOnTop -MaximizeBox -MinimizeBox +MinSize +MinSize80x +MaxSize +MaxSize320x Gui %g%: Font, S12, %Fnt% Gui %g%: Add, Text, vMRSuperInputBoxPromptText, % Prompt Gui %g%: Font, S10 if (Hided=true || Hided=1 || RegExMatch(Trim(Hided), "iS)^hide$")) InputType := "Password " (IW := (!IW ? "w512" : ((RegExMatch(IW, "S)^\d+$") ? "w" : "") IW))) else InputType := (IW := (!IW ? "w512" : ((RegExMatch(IW, "S)^\d+$") ? "w" : "") IW))) . " Multi " . (IH := (!IH ? "R10" : ((RegExMatch(IH, "S)^\d+$") ? "R" : "") IH))) Gui %g%: Add, Edit, %InputType% vMRSuperInputBoxHwndEdit, % EditText Gui %g%: Font, W800 S10 Gui %g%: Add, Button, gMRSuperInputBoxGuiContinue vMRSuperInputBoxGuiCloseVisual, 确定(&C) Gui %g%: Add, Button, yp0 xp80 gMRSuperInputBoxGuiExit vMRSuperInputBoxGuiCancelVisual, 取消(&X) return } MRSuperInputBoxTimer: if MRSuperInputBoxTimeOutStart MRSuperInputBoxTimeOutTime := A_TickCount if ((A_TickCount-MRSuperInputBoxTimeOutTime)>MRSuperInputBoxTimeOutTag) { SetTimer, MRSuperInputBoxTimer, off MRSuperInputBoxTimerOff := 1 Pause, off MRSuperInputBoxGuiContinue() } MRSuperInputBoxTimeOutStart := 0 return MRSuperInputBoxGuiExit() { static g := "MRSuperInputBox" Gui %g%: Hide Pause, Off } MRSuperInputBoxGuiContinue() { static g := "MRSuperInputBox" Gui %g%: Submit Pause, Off } MRSuperInputBoxGuiCancel() { MRSuperInputBoxGuiExit() } MRSuperInputBoxGuiClose() { MRSuperInputBoxGuiExit() }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
请教一下,为什么在循环时,Default是设定跟随变量变化的,但实际Default不变化,始终保持第一次时设定的值?而inputbox的Default却能每次变化。另外sinputbox确定取消选择,并不象inputbox,影响ErrorLevel。是我理解有误,还是bug?