ControlMove

优质
小牛编辑
126浏览
2023-12-01

移动控件或调整其大小。

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

参数

控件

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

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

X, Y

Control 新位置的左上角的 X 和 Y 坐标 (单位为像素), 可以为 表达式. 如果其中一个坐标为空, 那么 Control 在这个维度中的位置将保持不变. 这里的坐标相对于 Control 父窗口的左上角; 可以使用 ControlGetPos 或 Window Spy 来确定它们.

Width, Height

Control 的新宽度和高度 (单位为像素), 可以为 表达式. 如果其中一个参数为空或省略, 那么 Control 在这个维度中的大小将保持不变.

WinTitle

窗口标题或识别目标窗口的其他条件。请参阅 WinTitle

WinText

如果使用此参数, 那么它必须是目标窗口中单个文本元素的子字符串 (和内置的 Window Spy 工具显示的一样). 当 DetectHiddenText 的设置为 ON 时, 那么会检测到隐藏文本元素.

ExcludeTitle

标题中含有此参数值的窗口将被排除.

ExcludeText

文本中含有此参数值的窗口将被排除.

ErrorLevel

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

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

备注

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

窗口标题和文本是区分大小写的. 只有在打开 DetectHiddenWindows 设置时,才能检测到隐藏窗口。

相关

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

示例

SetTimer, ControlMoveTimer
InputBox, OutputVar, My Input Box
return

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