文章目录
- 实现方法
- 代码讲解
- WinGet和WinSet
 
注 本文采用的是V1版本语法
实现方法
窗口透明不仅实用性强,关键是非常炫酷,如果用AHK实现一个实时调节窗口透明度的工具,那么就可以一边敲代码,一边透过半透明的IDE,愉快地摸鱼了。而实现方法也非常简单,只需下面这几行代码
#=:: ;窗口透明化增加或者减弱
    WinGet, ow, id, A
    chWinTrans(ow, 10)
    return
#-:: ;窗口透明化增加或者减弱
    WinGet, ow, id, A
    chWinTrans(ow, -10)
    return
chWinTrans(w, i){
    WinGet, t, Transparent, ahk_id %w%
    t +=  i
    if t > 255 or t<0
        t := 255
    WinSet, Transparent, %t%, ahk_id %w%
    return
}
其实现效果如下

代码讲解
首先,绑定🪟=和🪟-分别用于调节窗口的透明度,这两个快捷键所绑定的脚本几乎相同,都调用了chWinTrans函数,区别只是其中一个用到的参数是10,而另一个是-10而已。
而chWinTrans的逻辑也非常简单,首先用WinGet函数获取当前的透明度,然后加上传入的数值。如果加上传入的数值在255和0之间,就将窗口透明度更改为新的值,否则就重置为255,即不透明。
这样可能会导致一个结果,即没法让窗口完全不透明,这也是出于安全考虑,毕竟窗口变成全透明的,在界面上无法找到,就很悲剧。如果非要实现,只需把判断语句稍作修改就行了
if t>255
    t := 255
if t < 0
    t := 0
WinGet, ow, id, A用于将窗口id赋值给ow,A表示当前活动窗口。
WinGet和WinSet
在上述代码中,用到了一个WinGet和WinSet函数,对初学者来说相对比较陌生,但从其名字的对偶性可以推测,前者用于获取窗口信息,后者用于设置窗口属性,二者定义如下
WinGet, OutputVar , [SubCommand, WinTitle, WinText, ExcludeTitle, ExcludeText]
WinSet, SubCommand, Value , [WinTitle, WinText, ExcludeTitle, ExcludeText]
被方括号圈起来的部分表示非必要参数。
WinGet用于获取属性,所以需要有一个输出,即OutPutVar。WinSet用于设置属性,所以需要有一个设置值,即Value,除此之外,二者的参数几乎都是相同的。
其中SubCommand为子命令,可选以下指令
| 指令 | Get | Set | 说明 | 
|---|---|---|---|
| ID | ✔️ | ❌ | 获取窗口的唯一 ID 号. | 
| IDLast | ✔️ | ❌ | 如果找到多个匹配窗口, 它会获取最后的/最下面的窗口唯一 ID. | 
| PID | ✔️ | ❌ | 获取窗口的进程 ID. | 
| ProcessName | ✔️ | ❌ | 获取拥有窗口的进程名. | 
| ProcessPath | ✔️ | ❌ | 获取拥有窗口的进程的完整路径和名称. | 
| Count | ✔️ | ❌ | 获取与标题/文本参数匹配的现有窗口的数量. | 
| List | ✔️ | ❌ | 与标题/文本参数相匹配的所有现有窗口的唯一 ID 号. | 
| MinMax | ✔️ | ❌ | 获取窗口的最小化/最大化状态. | 
| ControlList | ✔️ | ❌ | 获取窗口中每个控件的控件名. | 
| ControlListHwnd | ✔️ | ❌ | 获取窗口中每个控件的唯一 ID 号. | 
| Transparent | ✔️ | ✔️ | 获取窗口的透明度的等级. | 
| TransColor | ✔️ | ✔️ | 获取在窗口中标记为透明的颜色. | 
| Style | ✔️ | ✔️ | 获取表示窗口样式的 8 位十六进制数字. | 
| ExStyle | ✔️ | ✔️ | 获取表示窗口扩展样式的 8 位十六进制数字. | 
| AlwaysOnTop | ❌ | ✔️ | 让窗口处于置顶状态. | 
| Bottom | ❌ | ✔️ | 发送窗口到堆栈的底部; 即在所有其他窗口的下面. | 
| Top | ❌ | ✔️ | 把窗口带回到堆栈的顶部而不进行激活. | 
| Disable | ❌ | ✔️ | 禁用窗口. | 
| Enable | ❌ | ✔️ | 启用窗口. | 
| Redraw | ❌ | ✔️ | 重绘窗口. | 
| Region | ❌ | ✔️ | 改变窗口的形状为指定的矩形, 椭圆形或多边形. | 









![[MySQL]MySQL视图特性](https://img-blog.csdnimg.cn/img_convert/17636659840f4d197e8c2e90414aee99.png)









