ControlMove

移动控件或调整其大小.

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

参数

Control

如果为空或省略, 则使用目标窗口的顶层控件. 否则, 请指定 ClassNN(控件的类名和实例编号) 或控件的文本, 它们都可以通过 Window Spy 获取. 使用文本时, 匹配行为由 SetTitleMatchMode 决定.

要对控件的 HWND(窗口句柄) 进行操作, 请将 Control 参数留空同时在 WinTitle 参数中指定 ahk_id %ControlHwnd%(即使在 DetectHiddenWindows 设置关闭时, 这样也可以操作隐藏控件). 获取控件的 HWND 的一般方法是使用 ControlGet Hwnd, MouseGetPosDllCall().

X, Y

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

Width, Height

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

WinTitle, WinText, ExcludeTitle, ExcludeText

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

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

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

错误处理

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

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

备注

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

ControlGetPos, WinMove, SetControlDelay, 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