WinSetTransparent

使指定的窗口半透明.

WinSetTransparent N, WinTitle, WinText, ExcludeTitle, ExcludeText

参数

N

类型: 整数字符串

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

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

WinTitle, WinText, ExcludeTitle, ExcludeText

类型: 字符串, 整数对象

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

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

窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindowsDetectHiddenText 进行更改. 默认情况下, 窗口标题的任意位置包含 WinTitleExcludeTitle 就能形成匹配, 除非使用 SetTitleMatchMode 进行了更改.

错误处理

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

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

备注

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

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

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

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
    TransDegree := WinGetTransparent(MouseWin)
    TransColor := WinGetTransColor(MouseWin)
    ToolTip "Translucency:`t" TransDegree "`nTransColor:`t" TransColor
}