对匹配指定条件的窗口进行一系列的设置,例如设置“总在最前”,以及透明度等。
WinSet, Attribute, Value [, WinTitle, WinText, ExcludeTitle, ExcludeText]
Attribute, Value | 查看下面的列表。 |
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 的时候才能检测到。 |
ExcludeTitle | 标题中包含该参数指定的文字的窗口将被除外。 |
ExcludeText | 文本元素中包含该参数指定的文字的窗口将被除外。 |
AlwaysOnTop, [On|Off|Toggle]:让一个窗口处于置顶状态。使用 ON 开启设置,使用 OFF 关闭设置,使用 TOOGLE 切换设置。如果省略,默认是 TOOGLE。也可以使用单词 Topmost 替换 AlwaysOnTop。
Bottom:将一个窗口放到最底端,也就是所有窗口的下面。这个效果类似使用 Alt-Escape 快捷键。例如:WinSet, Bottom,, WinTitle
Top:将一个窗口放到最前端而不进行 激活 。但是,大多数情况下系统都会自动激活它。另外,当系统禁止切换窗口焦点的时候该命令可能没有效果(这取决于当前窗口类型以及用户当前的操作)。要应付这种情况,可以让窗口暂时 置顶 ,再取消置顶。
Disable 或 Enable:停用或启用一个窗口。当一个窗口处于停用状态的时候,用户不能移动它或利用它的控件进行交互。另外,停用的窗口也不会出现在 alt-tab 列表中。
Redraw:通过通知系统某个窗口区域需要重绘,来刷新一个窗口的界面和内容。如果对某个窗口不起作用,尝试 WinMove 。如果还不起作用,尝试:
WinHide, WinTitle
WinShow, WinTitle
Style,N 或 ExStyle,N:分别设置窗口的样式或扩展样式。如果 N 中的第一个字符是加号或减号,则窗口会增加或移除 N 中指定的样式(可同时指定多个样式,下同);如果第一个字符是符号“`”,窗口将对 N 中指定的样式进行切换操作;如果第一个字符是数字,窗口原来的所有样式将被覆盖,彻底变成 N 中指定的样式。
如果样式设置失败,ErrorLevel/错误等级 设置为 1 ,成功为 0 。当没有匹配窗口或窗口不能应用指定的样式的时候(一般发生在 Windows 9x 中)会设置失败。
更改了一个窗口的样式之后,可能需要对窗口进行重绘,使用命令 WinSet Redraw (具体见下面)。最后,一些常用的样式代码可以参看 样式列表 。一些例子:
WinSet, Style, -0xC00000, A ; 移除当前激活窗口的标题栏(WS_CAPTION)。 WinSet, ExStyle, ^0x80, WinTitle ; 切换窗口的 WS_EX_TOOLWINDOW 属性,可以将窗口添加到/移除于 alt-tab 列表中。
更改一个窗口的形状为指定的方形,椭圆形,或多边形。如果 Options 参数留空,窗口将恢复到原来的形状。否则,可以指定下面的一个或多个参数,用空格分隔:
Wn:方形或椭圆形的宽度。例如:w200
Hn:方形或椭圆形的高度。例如:h300
X-Y:X轴 和 Y轴 坐标。例如,200-0 中的 200 表示 X轴 坐标,0 表示 Y轴 坐标。
E:将窗口形状设置为椭圆形,而不是方形。这个参数只有在同时指定了 W 和 H 参数的时候才有效。
R[w-h]:设置方形窗口的圆角。例如,R30-30 表示圆角大小为 30x30 。如果省略 w-h ,默认使用 30-30 。R 参数只有在同时指定了 W 和 H 参数的时候才有效。
方形或椭圆形:如果同时指定了 W 和 H 参数,窗口的形状将变成方形,方形区域左上角的位置坐标为 X-Y 参数指定的坐标(以窗口左上角为原点)。但是,如果同时使用了 E 参数的话,窗口的形状将变成椭圆形。例如:WinSet, Region, 50-0 W200 H250 E, WinTitle
多边形:如果同时指定了 W 和 H 参数,并且在 X-Y 参数中指定了多组坐标,窗口的形状将变成多边形(每组坐标以窗口左上角为原点)。例如,如果指定了 3 组坐标,大多数情况下窗口的形状会变成三角形,具体的形状取决于 3 组坐标的顺序。此外,在 Options 参数中也可以加上单词 Wind ,这将会使用一种弯曲的方式来决定多边形的形状。
如果形状设置失败,ErrorLevel/错误等级 设置为 1 ,成功为 0 。失败的原因有:1)没有匹配窗口;2)Options 中有一个或多个参数无效;3)指定了超过 2000 组坐标;4)指定的形状无效或不适用与目标窗口。
更多示例请查看本页最下方的示例代码。
设置窗口为半透明状态。指定 N 为一个 0 到 255 的数字来表示透明度:0 表示完全透明,255 表示完全不透明。使用单词 OFF 彻底关闭窗口的透明效果。和设置透明度为 255 不同,使用 OFF 会提升系统性能并降低系统资源的占用。
已知的关于透明度和 TransColor/透明色 的限制:
小贴士:要设置任务栏的透明度,使用 WinSet, Transparent, 150, ahk_class Shell_TrayWnd 。类似的,要设置开始菜单的透明度,参照这个例子:
DetectHiddenWindows, on
WinSet, Transparent, 150, ahk_class BaseBar ; 要让开始菜单的子菜单也透明,继续加入下面的代码。
要让当前选择的菜单或系统所有的菜单透明,运行下面这个脚本。注意虽然这个脚本不能让它自己的菜单透明,但是可以让其它脚本的菜单透明:
#Persistent SetTimer, WatchForMenu, 5 return ; 结束自动运行区域。 WatchForMenu: DetectHiddenWindows, on ; 以立即检测到菜单。 IfWinExist, ahk_class #32768 WinSet, Transparent, 150 ; 使用上一行找到的窗口。 return
让目标窗口中所有符合指定颜色的区域完全透明(在 Windows 9x 和 NT4 中无效)。如果用户点击窗口中的透明部分,点击事件会“穿透”该窗口传递给下面的窗口。Color 参数可以是一个颜色名称或一个 RGB 值(关于颜色详细请参看 颜色图表 ,或者使用 PixelGetColor 的 RGB 模式)。要让目标窗口中符合指定颜色的区域半透明,在颜色参数之后添加一个表示透明度的数字(0 - 255)。例如:WinSet, TransColor, EEAA99 150, WinTitle
TransColor/透明色 常被用来制作屏幕菜单(OSD)或窗口特效。有一个关于屏幕菜单的例子在 Gui 命令帮助页的最下面 。
单词 OFF 用来完全关闭窗口的透明设置。下面两个脚本的功能是一样的:
WinSet, Transparent, Off, WinTitle
WinSet, TransColor, Off, WinTitle
已知的限制:参看 上面的列表 。
除了上面明确说明的地方外,ErrorLevel/错误等级 不会被该命令修改。
虽然 Windows 2000/XP 及之后的系统都支持设置透明,但是只有 XP 之后的系统才能获取到窗口的透明度设置(通过 WinGet 命令)。
可以用下面的脚本取消一个脚本的 SplashText 窗口的置顶状态:
WinSet, AlwaysOnTop, Off, My Splash Window Title
窗口的标题和窗口中的文字是大小写敏感的。要检测隐藏窗口,必须打开 DetectHiddenWindows 。
WinGet, WinHide, WinSetTitle, WinMove, WinActivate, Control
WinSet, Transparent, 200, Untitled - Notepad ; 让窗口稍微有点透明效果 WinSet, TransColor, White, Untitled - Notepad ; 让窗口中白色的部分透明 WinSet, AlwaysOnTop, toggle, Calculator ; 切换计算器的“总在最前”状态 ; 长一点的例子: ; 这里有一些快捷键用来演示“Transparent/透明度”和“TransColor/透明色”的效果 ; 注意:如果你按下快捷键的时候鼠标正指在 TransColor/透明色 ; 设置的窗口透明部分上,则快捷键影响的就是透明窗口下方的窗口。 ; 同样,快捷键 Win + G 只有在 Windows XP 上才有效果, ; 因为 Windows 2000 不能获取窗口的透明设置 #t:: ; 快捷键 Win+T 让窗口中符合鼠标所指颜色的部分透明 MouseGetPos, MouseX, MouseY, MouseWin PixelGetColor, MouseRGB, %MouseX%, %MouseY%, RGB ; 设置新的透明效果之前需要关闭窗口当前的透明效果 WinSet, TransColor, Off, ahk_id %MouseWin% WinSet, TransColor, %MouseRGB% 220, ahk_id %MouseWin% return #o:: ; 快捷键 Win+O 关闭鼠标所指窗口的透明效果 MouseGetPos,,, MouseWin WinSet, TransColor, Off, ahk_id %MouseWin% return #g:: ; 快捷键 Win+G 显示鼠标所指窗口当前的透明效果设置 MouseGetPos,,, MouseWin WinGet, Transparent, Transparent, ahk_id %MouseWin% WinGet, TransColor, TransColor, ahk_id %MouseWin% ToolTip Translucency:`t%Transparent%`nTransColor:`t%TransColor% return ; “WinSet Region”的例子 WinSet, Region, 50-0 W200 H250, WinTitle ; 让窗口只显示指定的方形部分 WinSet, Region, 50-0 W200 H250 R40-40, WinTitle ; 和上面的一样,不过有 40 x 40 的圆角。 WinSet, Region, 50-0 W200 H250 E, WinTitle ; 椭圆形窗口 WinSet, Region, 50-0 250-0 150-250, WinTitle ; 倒三角形窗口 WinSet, Region,, WinTitle ; 将窗口恢复原状 ; 更加复杂的 Region 例子,在窗口中创建了一个方形的“洞”。 ; 这里指定了 2 个方形,一个内部的一个外部的。每个方形使用 5 组坐标 WinSet, Region, 0-0 300-0 300-300 0-300 0-0 100-100 200-100 200-200 100-200 100-100, WinTitle