主要用SetWindowCompositionAttribute未公开函数
完整案例:
#SingleInstance Force
Gui +ToolWindow +AlwaysOnTop -Caption +Border +hwndGui
Global Gui:=Gui
Gui Color ,0 ,0
Gui Add ,Text ,x386 y3 w10 h10 cffffff g×g,×
Gui Add ,Edit ,x100 y50 w200 h18 -E0x200 +Border cffffff ,请输入账号
Gui Add ,Edit ,x100 y80 w200 h18 -E0x200 +Border cffffff ,请输入密码
Gui Add ,Button ,x100 y110 w200 h18 ,登录
Gui Show,w400 h200 NoActivate ,幽月
SetStyle(Gui,4)
Return
×g:
ExitApp
WM_MOVE() { ;窗口移动事件·防止Acrylic效果拖动窗口时滞后
Static init:=OnMessage(0x3, "WM_MOVE")
SetStyle(Gui,2)
}
WM_EXITSIZEMOVE() { ;窗口结束移动事件·防止Acrylic效果拖动窗口时滞后
Static init:=OnMessage(0x232, "WM_EXITSIZEMOVE")
SetStyle(Gui,4)
}
WM_LBUTTONDOWN() { ;窗口鼠标左键按下事件·用于窗口随意拖动
Static init:=OnMessage(0x201, "WM_LBUTTONDOWN")
PostMessage, 0xA1, 2
}
SetStyle(hwnd ,style) {
;【style】1颜色2淡蓝色3模糊4亚克力6透明
VarSetCapacity(data1 ,16) ;开辟一个内存空间
NumPut(style ,data1 ,0)
NumPut(0x78000000,data1 ,8) ;0x78为16进制的Alpha透明度,000000为背景色
VarSetCapacity(data2 ,12) ;开辟一个内存空间
NumPut(19 ,data2 ,0)
NumPut(&data1 ,data2 ,4)
NumPut(16 ,data2 ,8)
DllCall("user32SetWindowCompositionAttribute", "ptr", hwnd, "ptr", &data2)
WinSet, Transparent, 254, ahk_id %hwnd% ;防止鼠标穿透窗体
}
!!!重点:
Gui +hwndGui ;初始化好窗口的句柄放在Gui变量中,SetStyle函数需用到!
Gui Color ,0 ,0 ;设置窗口背景颜色,控件背景颜色,这里简写0代表黑色(必须设置)!
<可以调制自己喜欢的颜色,可以用Font设置控件文本颜色>
SetStyle()函数可以写成单独的SetStyle.ahk里放在Lib中,方便其他程序直接调用
!!!注意:
因为SetWindowCompositionAttribute函数在个别系统中拖动窗口时候会卡顿,所以用了WM_MOVE()和WM_EXITSIZEMOVE()两个事件配合,让窗口拖动时候不至于卡顿。
WM_LBUTTONDOWN() 事件用于无标题窗口的随意拖动
为啥我的没有效果
要支持SetWindowCompositionAttribute的win10系统版本才可以
我检查了下代码,的确不可以使用但是我对比了正确的代码是完全一样的。是SetStyle函数的问题但是我找不出原因,我发一个能正确使用的源码文件AHK。
https:
//wwa.
lanzoui.com
/iCps1sio8tc
有截图吗?下载的示例也无效。win10下GUI界面是黑色
看看你是不是有命令是“Gui Color ,0 ,0”,这个出来就是黑色,要写进去自己想要的颜色值
供下载的实例是有效的,并能在我的电脑上正常运行。
确保你是win10系统并且版本号高于Windows 10 1709,才有(Acrylic)特效。
直接复制代码是黑色的,可以下载示例(复制代码好像有问题暂时还未找出原因)
我是WIN7???
(o゜▽゜)o☆
win10测试 正常 赞
不错?
不错
win11测试无效