WinMove

改变指定窗口的位置和/或大小.

WinMove , X, Y
WinMove , WinTitle, WinText, X, Y, Width, Height, ExcludeTitle, ExcludeText

参数

X, Y

如果其中一个为空或省略, 则不会更改该维度中的位置. 否则, 请指定目标窗口新位置的左上角的 X 和 Y 坐标(单位为像素), 可以为表达式. 屏幕左上角坐标为 0, 0.

如果只指定了这两个参数, 那么使用上次找到的窗口为目标窗口.

WinTitle, WinText, ExcludeTitle, ExcludeText

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

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

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

另请参阅下面的已知限制.

Width, Height

如果其中一个为空, 省略或者为单词 DEFAULT, 则不会更改该维度中的尺寸. 否则, 请指定目标窗口的新宽度和高度(单位为像素), 可以为表达式.

备注

如果 WidthHeight 太小(或为负数), 那么大多数带标题栏的窗口最小尺寸不会小于 112 x 27 像素(不过, 有些类型的窗口的最小的尺寸可能有差异). 如果 WidthHeight 太大, 那么大多数窗口最大尺寸不会大于超过桌面尺寸大约 12 像素.

负的 X 和 Y 坐标允许使用, 来支持多显示器系统, 并将窗口完全移出屏幕.

尽管 WinMove 不能移动最小化状态的窗口, 不过当 DetectHiddenWindows 设置开启时它可以移动隐藏窗口.

WinMove 移动窗口的速度受 SetWinDelay 影响.

已知限制: 如果 WinTitleWinText 包含 (, [{, 但是没有闭合对应的右半部分, 例如 WinMove, KEDIT - [, 参数自动解释为一个表达式, 从而导致错误消息. 为了避免这种情况, 可以使用百分号空格前缀强制表达式, 例如 WinMove % "KEDIT - [".

在具有不同 DPI 设置的多个屏幕的系统上, 由于操作系统 DPI 缩放, 返回的位置和大小可能与预期不同.

ControlMove, WinGetPos, WinHide, WinMinimize, WinMaximize, WinSet

示例

打开计算器, 等待它的存在并将其移动到屏幕的左上角.

Run, calc.exe
WinWait, Calculator
WinMove, 0, 0 ; 使用 WinWait 找到的窗口.

创建一个固定大小的弹出窗口, 显示剪贴板的内容, 并将其移动到屏幕的左上角.

SplashTextOn, 400, 300, Clipboard, The clipboard contains:`n%Clipboard%
WinMove, Clipboard, , 0, 0
MsgBox, Press OK to dismiss the SplashText
SplashTextOff

在屏幕上使窗口居中.

CenterWindow("ahk_class Notepad")

CenterWindow(WinTitle)
{
    WinGetPos,,, Width, Height, %WinTitle%
    WinMove, %WinTitle%,, (A_ScreenWidth/2)-(Width/2), (A_ScreenHeight/2)-(Height/2)
}