# 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 已经打开, 则检测隐藏文本元素. 标题或文本包含 ExcludeTitle 或 ExcludeText 的窗口将不被考虑.

## 错误处理

如果找不到窗口, 则抛出 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
    }

dftg