漂亮的Acrylic亚克力·磨砂·材质窗口

写一个漂亮的窗口

主要用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() 事件用于无标题窗口的随意拖动

 

给TA捐赠
共{{data.count}}人
人已捐赠
AHKV1办公学习工具

【鼠标增强】侧键激活窗口

2021-8-9 15:19:17

学习

AutoHotKey 是什么?

2021-8-20 15:22:50

14 条回复 A文章作者 M管理员
  1. ahkjoo

    win11测试无效

  2. zt7456

    不错

  3. zak

    不错👍

  4. 五分钟

    为啥我的没有效果

    • 狐狸的狐狸画

      要支持SetWindowCompositionAttribute的win10系统版本才可以

    • 狐狸的狐狸画

      我检查了下代码,的确不可以使用但是我对比了正确的代码是完全一样的。是SetStyle函数的问题但是我找不出原因,我发一个能正确使用的源码文件AHK。

    • dbgba

      有截图吗?下载的示例也无效。win10下GUI界面是黑色

    • 五分钟

      看看你是不是有命令是“Gui Color ,0 ,0”,这个出来就是黑色,要写进去自己想要的颜色值

    • 狐狸的狐狸画

      供下载的实例是有效的,并能在我的电脑上正常运行。
      确保你是win10系统并且版本号高于Windows 10 1709,才有(Acrylic)特效。

    • 狐狸的狐狸画

      直接复制代码是黑色的,可以下载示例(复制代码好像有问题暂时还未找出原因)

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索