我一直在使用 Polyethene's Command Functions 库,它应该作为命令分配的替代品,AutoHotkey 文档推荐该库HERE。我已经使用了它分配,但我正在努力使用一个功能,即
GuiControlGet
,它是 GuiControlGet 命令的替代品。
在此示例中,我想获取
Text
控件的宽度,我可以使用 GuiControlGet
命令找到它,但其相反的功能失败并出现错误:
var := "Hello world"
Gui HUD:New, +AlwaysOnTop +ToolWindow -Caption +HwndMainHwnd, hudWin
Gui HUD:Font,s14,Consolas
Gui, Add, Text,,% var
GuiControlGet, OutputVar, Pos,% var
Gui HUD:Show, x300 y300 w300 h300
msgbox,% outputVarW ; returns the width of "Gui, Add, Text,,% var" control
OutPut := GuiControlGet("Pos", "var") ; I get error: ==> Warning: This variable has not been assigned a value. Specifically: v (a local variable)
msgbox,% OutPutW ; Nothing shown
GuiControlGet(Subcommand = "", ControlID = "", Param4 = "") {
GuiControlGet, v, %Subcommand%, %ControlID%, %Param4%
Return, v
}
任何帮助将不胜感激!
你可以试试这个方法:
Global v ; <---
var := "Hello world"
Gui HUD:New, +AlwaysOnTop +ToolWindow -Caption +HwndMainHwnd, hudWin
Gui HUD:Font,s14,Consolas
Gui, Add, Text,,% var
; Gui HUD:Show, x300 y300 w300 h300
GuiControlGet("Pos", var) ; <--- var cant be between double quotes
msgbox % vw "`n"
. vh "`n"
. vx "`n"
. vy
GuiControlGet(Subcommand = "", ControlID = "", Param4 = "") {
GuiControlGet, v, %Subcommand%, %ControlID%, %Param4%
Return, v
}
或者这个...
var := "Hello world"
Gui HUD:New, +AlwaysOnTop +ToolWindow -Caption +HwndMainHwnd, hudWin
Gui HUD:Font,s14,Consolas
Gui, Add, Text,,% var
; Gui HUD:Show, x300 y300 w300 h300
MsgBox % GuiControlGet("Pos", var)["w"] "`n"
. GuiControlGet("Pos", var)["h"] "`n"
. GuiControlGet("Pos", var)["x"] "`n"
. GuiControlGet("Pos", var)["y"]
; Another way
output:= GuiControlGet("Pos", var)
MsgBox % output["w"] "`n"
. output["h"] "`n"
. output["x"] "`n"
. output["y"]
GuiControlGet(Subcommand = "", ControlID = "", Param4 = "") {
Params := {w : 0, h : 0, x : 0, y : 0 }
GuiControlGet, v, %Subcommand%, %ControlID%, %Param4%
for value, i in params
params[value] := v%value%
Return params
}