autohotkey - 当我添加 GUI 时,AHK 突然需要在 } 之前返回
问题描述
在制作一个小项目时,我添加了一个 GUI,它突然需要返回?我想让它询问应该命名一个文件夹然后创建它它正在工作,但是我为你想要下载的内容添加了 GUI,它需要返回我在其他任何地方都找不到关于这个主题的任何其他内容
工作代码:
if !FileExist(%UserInput%) {
MsgBox, 0, Serkket Servers, Server will build files, press ok to continue `n Server will open when done
FileCreateDir, %UserInput%
}
不工作代码:
if !FileExist(%UserInput%) {
Gui, New,, Server Software
Gui, Color, 707070
Gui, Add, DropDownList, vServVers, 1.16.5|1.16.4|1.16.3|1.16.2|1.16.1|1.15.2|1.15.1|1.15|1.14.4|1.14.3|1.14.2|1.14.1|1.14|1.13.2|1.13.1|1.13|1.12.2|1.12.1|1.12|1.11.2|1.11.1|1.11|1.10.2|1.9.4|1.9.2|1.9|1.8.8|1.8.3|1.8
Gui, Add, Button, Default w80, OK
Gui, +Resize +MinSize480x240
Gui, Show
Pause, On
ButtonOK:
Gui, Submit
MsgBox, 0, Serkket Servers, Server will build files, press ok to continue `n Server will open when done
FileCreateDir, %UserInput%
}
解决方案
在这种情况下返回是必需的,因为您有一个ButtonOK:
标签尚未正确关闭以形成它的子例程。由于这return
是需要的,您需要将标签移动到代码中的其他位置,即当前部分之外的某个位置。如果此代码发生在文件的顶部,则需要将其移到自动运行段之外。
为了帮助解决这个问题,我们可以给 GUI 一个标签,使用Gui, MyLabel:New
. 这使得 AHK 可以同时使用不同的 GUI,但也可以通过更改GuiClose
为MyLabelGuiClose
.
这会将您的条件语句更新为:
if !FileExist(%UserInput%) {
Gui, SelectServers:New, +Resize +MinSize480x240 +HwndSelectServersHwnd, Server Software
Gui, SelectServers:Color, 707070
Gui, SelectServers:Add, DropDownList, vServVers, 1.16.5|1.16.4|1.16.3|1.16.2|1.16.1|1.15.2|1.15.1|1.15|1.14.4|1.14.3|1.14.2|1.14.1|1.14|1.13.2|1.13.1|1.13|1.12.2|1.12.1|1.12|1.11.2|1.11.1|1.11|1.10.2|1.9.4|1.9.2|1.9|1.8.8|1.8.3|1.8
Gui, SelectServers:Add, Button, Default w80 gSelectServersButtonOK, OK ; <- don't forget to connect the handler
Gui, SelectServers:Show
WinWaitClose, ahk_id %SelectServersHwnd% ; <- This is a better choice than "Pause, On"
}
这可以添加到自动运行部分之外的任何地方(如文件底部)
return ; <- makes sure the auto run section has ended (only needed once)
SelectServersButtonOK:
Gui, SelectServers:Submit
MsgBox, 0, Serkket Servers, Server will build files, press ok to continue `n Server will open when done
FileCreateDir, %UserInput%
Gui, SelectServers:Destroy
return
SelectServersGuiClose:
SelectServersGuiEscape:
; TODO: Handle cancelling selection GUI
; e.g. ExitApp, cancel folder creation, etc.
Gui, SelectServers:Destroy
return
推荐阅读
- amazon-web-services - 是否可以在通过命令行创建之前运行发现 AWS Cognito OIDC IdP?
- javascript - 在 React DatePicker 中插入当前 GMT 时间
- c# - WPF ScrollBar 未显示在 Grid 上
- android - 当我在 Jetpack Compose 中显示多个片段的选项卡布局时如何显示/隐藏弹出窗口?
- visual-studio - 如何在客户端 PC 上运行我的项目而不在客户端 PC 上安装 SQL Server
- android - 如何从 firebase 读取值到 Android?
- r - 从 R Studio 运行时,R Shiny 应用程序会在一段时间后自行关闭,但它仍在收听……这正常吗?
- java - 如何避免在骆驼中关闭应用程序时重试?
- python - 使用在 VM 上运行的 Flask 服务器进行视频流式传输
- javascript - 不能分配给 IntrinsicAttributes