WinMove


对匹配指定条件的窗口进行移动或更改大小的操作。

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

参数

X, Y

目标窗口新位置的 X轴 和 Y轴 坐标(单位是像素),以窗口左上角为基准点,可以是 表达式 。屏幕左上角坐标为 0, 0 。

如果只指定了这 2 个参数,其它参数留空,默认目标是 上一次匹配窗口

WinTitle 目标窗口的标题或标题中的部分文字(匹配模式由 SetTitleMatchMode 决定)。如果省略其它 3 个窗口参数,默认目标是 上一次匹配窗口 。如果这个参数使用字母 A ,同时省略其它 3 个窗口参数,则以当前激活的窗口作为目标。要用窗口的 class 名进行匹配,使用 ahk_class 精确 class 名(Window Spy 中可以显示 class 名)。要用窗口的 进程标识符(PID)进行匹配,使用 ahk_pid %PID变量% 。要用 窗口组 ,使用 ahk_group 组名 。要用窗口的 唯一 ID 进行匹配,使用 ahk_id %ID变量% 。要减小检测范围,使用 多重条件 ,例如:My File.txt ahk_class Notepad
WinText 如果使用这个参数,则它应该是目标窗口中某个文本元素的子字符串(在 Window Spy 中会显示出窗口中的文本元素)。隐藏文本只有在 DetectHiddenText 设置为 ON 的时候才能检测到。
Width, Height 目标窗口新大小的宽度和高度(单位是像素),可以是 表达式 。如果其中一个或两个一起留空或省略或使用单词 DEFAULT ,则默认等于原始宽度/高度。
ExcludeTitle 标题中包含该参数指定的文字的窗口将被除外。
ExcludeText 文本元素中包含该参数指定的文字的窗口将被除外。

注意

如果 WidthHeight 参数太小(或负数),大多数带标题栏的窗口最小不会小于 112 x 27 像素(有些类型的窗口可能大小有出入)。如果 WidthHeight 参数太大,大多数窗口最大不会大于 (桌面分辨率 + 12) 像素。

坐标轴参数可以使用负数,这是为了支持多显示器系统,以及可以让窗口完全移出桌面。

虽然 WinMove 不能移动最小化的窗口,但是在 DetectHiddenWindows 打开的情况下它可以移动隐藏窗口。

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

窗口的标题和窗口中的文字是大小写敏感的。要检测隐藏窗口,必须打开 DetectHiddenWindows

相关命令

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(WinTitle)
{
    WinGetPos,,, Width, Height, %WinTitle%
    WinMove, %WinTitle%,, (A_ScreenWidth/2)-(Width/2), (A_ScreenHeight/2)-(Height/2)
}