我不知道如何使用这个功能

问题描述 投票:0回答:1

我一直在使用 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
}

任何帮助将不胜感激!

autohotkey
1个回答
0
投票

你可以试试这个方法:

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

}
© www.soinside.com 2019 - 2024. All rights reserved.