AutoHotkey怎么实现窗口透明效果 AutoHotkey如何用脚本设置窗口半透明和点击穿透【技巧】

星杰同学_1685

星杰同学_1685

2026-04-05

227人浏览

原创

autohotkey可通过windows api实现窗口半透明与点击穿透:先设ws_ex_layered样式,再用setlayeredwindowattributes设alpha值;启用穿透需追加ws_ex_transparent标志;支持一键切换、批量处理及独立控制透明/穿透状态。

autohotkey怎么实现窗口透明效果 autohotkey如何用脚本设置窗口半透明和点击穿透【技巧】

如果您希望使用AutoHotkey控制指定窗口的透明度或启用点击穿透功能,则需调用Windows API中的SetLayeredWindowAttributes和WS_EX_TRANSPARENT等机制。以下是实现窗口半透明与点击穿透的具体操作步骤:

一、设置目标窗口为半透明

该方法通过修改窗口扩展样式并调用SetLayeredWindowAttributes函数,使窗口整体呈现指定Alpha值(0–255)的透明效果。窗口必须具备WS_EX_LAYERED扩展样式才能生效。

1、运行AutoHotkey脚本,使用WinGet命令获取目标窗口的HWND句柄。

2、调用DllCall("SetWindowLong", "Ptr", hWnd, "Int", -20, "UInt", 0x80000 | DllCall("GetWindowLong", "Ptr", hWnd, "Int", -20, "UInt"))启用WS_EX_LAYERED样式。

3、执行DllCall("SetLayeredWindowAttributes", "Ptr", hWnd, "UInt", 0, "UChar", 150, "UInt", 2),其中150为透明度值(数值越小越透明,0为完全透明,255为不透明)。

二、启用窗口点击穿透(鼠标穿透)

点击穿透指鼠标事件直接穿透当前窗口,作用于其下方的窗口或桌面。需将WS_EX_TRANSPARENT扩展样式添加至窗口,并确保窗口已设为分层窗口(WS_EX_LAYERED)。

1、确认目标窗口句柄hWnd已获取且已启用WS_EX_LAYERED样式。

2、调用DllCall("SetWindowLong", "Ptr", hWnd, "Int", -20, "UInt", DllCall("GetWindowLong", "Ptr", hWnd, "Int", -20) | 0x20),追加WS_EX_TRANSPARENT标志(0x20)。

3、再次调用SetLayeredWindowAttributes以刷新分层属性,确保穿透生效。

三、一键切换透明/不透明状态

该方案通过热键触发,动态读取当前窗口透明度并反向切换,避免硬编码固定值,提升脚本实用性与交互性。

1、使用WinGet, TransColor, ID, A 获取活动窗口当前透明色设置(若未设置则返回空)。

CreateWise AI
CreateWise AI

一款面向播客创作者的AI内容辅助工具,可处理音频中的口癖并提炼节目亮点,同时辅助生成标题和节目说明。

下载

2、通过WinGet, ExStyle, ID, A 提取窗口当前扩展样式,判断是否含0x20(WS_EX_TRANSPARENT)与0x80000(WS_EX_LAYERED)。

3、若当前为不透明状态,则执行半透明+穿透设置;若已透明,则调用SetLayeredWindowAttributes传入Alpha=255并移除WS_EX_TRANSPARENT样式。

四、按窗口类名或标题批量处理多个窗口

适用于需同时对多个同类窗口(如所有Notepad窗口)应用透明与穿透效果的场景,利用WinExist循环匹配并逐个注入样式。

1、使用Loop, % WinExist("ahk_class Notepad") 或 WinExist("ahk_exe chrome.exe") 枚举符合条件的窗口句柄。

2、对每个匹配到的hWnd,依次执行启用WS_EX_LAYERED、设置Alpha=128、添加WS_EX_TRANSPARENT的操作。

3、在循环末尾加入Sleep, 50 防止API调用过快导致部分窗口未响应。

五、禁用穿透但保留透明度的独立控制

当仅需视觉透明而不影响鼠标操作时,可单独移除WS_EX_TRANSPARENT但维持WS_EX_LAYERED与Alpha值,实现“可见但可点击”的效果。

1、获取目标窗口hWnd后,调用ExStyle := DllCall("GetWindowLong", "Ptr", hWnd, "Int", -20)读取当前扩展样式。

2、执行NewStyle := ExStyle & ~0x20 清除WS_EX_TRANSPARENT位,保留其余样式位。

3、调用DllCall("SetWindowLong", "Ptr", hWnd, "Int", -20, "UInt", NewStyle)写回新样式,并重新调用SetLayeredWindowAttributes保持原有Alpha值。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

autohotkey

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2486

5

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.06

4379

7

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

2026.03.24

3127

22

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

5219

3

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.29

2665

6

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.29

3248

10

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.29

2305

10

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

3019

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

2578

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.2万人学习