WinSetTransparent

使指定的窗口半透明.

WinSetTransparent N, WinTitle, WinText, ExcludeTitle, ExcludeText

参数

N

类型: 整数字符串

要启用透明度, 请指定一个 0 到 255 之间的数字, 以表示透明度: 0 表示完全透明, 而 255 表示完全不透明.

单词 "Off"(不区分大小写) 可以完全关闭窗口的透明度. 这在功能上与 WinSetTransColor "Off", WinTitle 相同. 指定 "Off" 与指定 255 的区别是, 这样可以提升性能并降低系统资源的占用(但可能仅在禁用 DWM 时).

WinTitle, WinText, ExcludeTitle, ExcludeText

类型: 字符串, 整数对象

如果这些都未设置或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示). 如果 DetectHiddenText 已经打开, 则检测隐藏文本元素. 标题或文本包含 ExcludeTitleExcludeText 的窗口将不被考虑.

错误处理

如果找不到窗口, 则抛出 TargetError.

如果无法应用更改, 则抛出 OSError.

备注

例如, 要使任务栏透明, 请使用 WinSetTransparent 150, "ahk_class Shell_TrayWnd". 类似地, 要使经典的开始菜单透明, 请参阅示例 #2. 要使开始菜单的子菜单透明, 还需要包含示例 #2 中的脚本.

在使用 "Off" 之前, 将透明级别设置为 255, 可以避免窗口重绘问题, 比如黑色背景. 如果窗口仍无法正确重绘, 那么请参阅 WinRedraw 了解可能的解决方法.

鼠标光标下的窗口的 ID 可以使用 MouseGetPos 来获取.

窗口标题和文本是区分大小写的. 除非 DetectHiddenWindows 被打开, 否则不会检测隐藏窗口.

WinSetTransColor, 窗口函数, 控件函数

示例

让记事本变得有点透明.

WinSetTransparent 200, "Untitled - Notepad"

使经典开始菜单透明(若要使开始菜单的子菜单透明, 请参阅示例 #3).

DetectHiddenWindows True
WinSetTransparent 150, "ahk_class BaseBar"

使所有或选定的菜单一出现就在整个系统中变得透明. 请注意, 尽管这样的脚本不能使自己的菜单透明, 但它可以使其他脚本的菜单透明.

SetTimer WatchForMenu, 5

WatchForMenu()
{
    DetectHiddenWindows True  ; 可以更早的检测菜单.
    if WinExist("ahk_class #32768")
        WinSetTransparent 150  ; 使用上面一行找到的窗口.
}

演示 WinSetTransparent 和 WinSetTransColor 效果的一些热键. 注意: 如果在鼠标光标悬停在 TransColor 造成的不可见的像素上时按下其中一个热键, 则这个像素下面可见的窗口将会被替代!

#t::  ; 按下 Win+T 来让鼠标光标下的颜色透明.
{
    MouseGetPos &MouseX, &MouseY, &MouseWin
    MouseRGB := PixelGetColor(MouseX, MouseY)
    ;  似乎有必要首先关闭任何现有的透明度:
    WinSetTransColor "Off", MouseWin
    WinSetTransColor MouseRGB " 220", MouseWin
}

#o::  ; 按下 Win+O 来关闭鼠标下窗口的透明度.
{
    MouseGetPos ,, &MouseWin
    WinSetTransColor "Off", MouseWin
}

#g::  ; 按下 Win+G 来显示鼠标下窗口的当前透明设置.
{
    MouseGetPos ,, &MouseWin
    Transparent := WinGetTransparent(MouseWin)
    TransColor := WinGetTransColor(MouseWin)
    ToolTip "Translucency:`t" Transparent "`nTransColor:`t" TransColor
}
unixetc