当我添加 GUI 时,AHK 在 } 之前突然需要 return
AHK suddenly requires return before } when i add GUI
在制作一个小项目时,我添加了一个 GUI,它突然需要 return?
我想让它问一个文件夹应该命名然后创建它
它工作正常,但后来我为您要下载的内容添加了 GUI,它需要 return
我在其他任何地方都找不到关于此主题的任何其他内容
工作代码:
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%
}
本例中的 return 是必需的,因为您有一个 ButtonOK:
标签尚未正确关闭以形成其子例程。由于需要此 return
,因此您需要将标签移动到代码中的其他位置,即当前部分之外的某个位置。如果此代码出现在文件的顶部,您需要将其移到自动运行段之外。
为此,我们可以给 GUI 一个标签,这是使用 Gui, MyLabel:New
. This allows AHK to work with different GUIs at the same time, but it also makes it easier to deal with the default window event handlers 完成的,方法是将 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
在制作一个小项目时,我添加了一个 GUI,它突然需要 return? 我想让它问一个文件夹应该命名然后创建它 它工作正常,但后来我为您要下载的内容添加了 GUI,它需要 return 我在其他任何地方都找不到关于此主题的任何其他内容
工作代码:
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%
}
本例中的 return 是必需的,因为您有一个 ButtonOK:
标签尚未正确关闭以形成其子例程。由于需要此 return
,因此您需要将标签移动到代码中的其他位置,即当前部分之外的某个位置。如果此代码出现在文件的顶部,您需要将其移到自动运行段之外。
为此,我们可以给 GUI 一个标签,这是使用 Gui, MyLabel:New
. This allows AHK to work with different GUIs at the same time, but it also makes it easier to deal with the default window event handlers 完成的,方法是将 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