ControlMove

移动控件和/或调整其大小.

ControlMove, ControlID, X, Y, Width, Height , WinTitle, WinText, ExcludeTitle, ExcludeText

参数

ControlID

如果为空或省略, 则将使用目标窗口的最顶层控件. 否则, 请指定控件的 ClassNN 或文本, 或者留空并指定 ahk_id %ControlHwnd% 作为 WinTitle 参数, 以便针对该控件的 HWND 进行操作. 有关详情, 请参阅控件标识符.

X, Y

如果其中一个坐标为空, 则不会更改控件在该维度中的位置. 否则, 请指定控件新位置的左上角的 X 和 Y 坐标(单位为像素), 可以为表达式. 这里的坐标相对于 Control 父窗口的左上角; 可以使用 ControlGetPosWindow Spy 来确定它们.

Width, Height

如果其中一个坐标为空, 则不会更改控件在该维度中的尺寸. 否则, 请指定控件的新宽度和高度(单位为像素), 可以为表达式.

WinTitle, WinText, ExcludeTitle, ExcludeText

如果这些都是空白或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示).

ExcludeTitleExcludeText 可用于根据标题或文本排除一个或多个窗口. 它们的规范类似于 WinTitleWinText, 除了 ExcludeTitle 不识别除窗口标题之外的任何条件.

窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindowsDetectHiddenText 进行更改. 默认情况下, 窗口标题必须以指定的 WinTitleExcludeTitle 开头才能匹配, 除非使用 SetTitleMatchMode 进行更改.

错误处理

[v1.1.04+]: 此命令失败时会抛出异常. 想了解更多信息, 请参阅运行时错误.

如果遇到问题则 ErrorLevel 被置为 1, 否则为 0.

备注

此命令适用于非图形用户界面窗口中的控件, 即那些不是通过 Gui 命令创建的窗口. 它与常见的或预定义的微软控件配合使用效果最佳; 有些应用程序使用自定义或修改后的控件, 在这种情况下, 该命令可能无法按预期运行. 对于 GUI 控件, 通常更方便的做法是使用 GuiControl Move.

要提高可靠性, 每次使用此命令后都会自动进行延迟. 这个延迟可以使用 SetControlDelay 进行改变.

ControlGetPos, WinMove, SetControlDelay, GuiControl Move, Control, ControlGet, ControlGetText, ControlSetText, ControlClick, ControlFocus, ControlSend

示例

演示如何在脚本等待用户输入时操作输入框的 OK 按钮.

SetTimer, ControlMoveTimer
InputBox, OutputVar, My Input Box
return

ControlMoveTimer:
if not WinExist("My Input Box")
    return
; 否则上面设置了 "上次找到的" 窗口:
SetTimer, ControlMoveTimer, Off
WinActivate
ControlMove, OK, 10, , 200  ; 将 OK 按钮移动到左边并增加其宽度.
return