无法将程序从Alt-Tab列表移除,WinSet代码失效及Win11兼容疑问
问题:Windows 11中AutoHotkey代码无法将记事本从Alt-Tab列表中排除
数月前验证过一段AutoHotkey代码,用于将程序从Alt-Tab列表中排除,本次以记事本为例测试:
WinSet, ExStyle, ^0x80, notepad
但记事本仍出现在Alt-Tab列表中,之前这段代码是可用的,请问是Windows 11新的Alt-Tab功能破坏了兼容性,还是操作有误?
解答
操作层面的可能问题
你使用的^0x80是切换WS_EX_TOOLWINDOW扩展样式(该样式用于让窗口不在Alt-Tab中显示),但如果目标窗口原本就没有这个样式,或者同时存在WS_EX_APPWINDOW样式(该样式强制窗口显示在Alt-Tab列表),仅切换0x80可能无效。
可以先检查记事本窗口的当前扩展样式,确认是否成功修改:WinGet, currentExStyle, ExStyle, notepad MsgBox, 当前扩展样式: %currentExStyle%如果结果中不包含
0x80,说明样式未成功添加,可能是窗口匹配问题(比如多个记事本窗口同时打开,命令只作用于第一个匹配的窗口)。Windows 11的兼容性变化
Windows 11的Alt-Tab机制确实有调整,主要体现在两点:- UWP版本记事本的特殊处理:部分Windows 11版本中的记事本是UWP应用,其窗口由
ApplicationFrameHost.exe托管,直接针对notepad.exe设置样式不会生效,需要定位到对应的ApplicationFrame窗口。 - 默认Alt-Tab模式的影响:Windows 11默认的Alt-Tab会显示“打开的窗口和所有应用标签”,部分系统应用窗口即使设置了
WS_EX_TOOLWINDOW,仍可能被纳入显示列表。你可以在「设置>系统>多任务>Alt-Tab」中切换为“仅打开的窗口”模式,再测试代码是否生效。
- UWP版本记事本的特殊处理:部分Windows 11版本中的记事本是UWP应用,其窗口由
可行的修复方案
针对Win32版本的记事本,建议明确移除WS_EX_APPWINDOW并添加WS_EX_TOOLWINDOW,而不是用切换符号:; 移除强制显示在Alt-Tab的WS_EX_APPWINDOW样式 WinSet, ExStyle, -0x40000, notepad ; 添加隐藏在Alt-Tab的WS_EX_TOOLWINDOW样式 WinSet, ExStyle, +0x80, notepad针对UWP版本的记事本,需要先找到其托管的ApplicationFrame窗口:
WinGet, hNotepad, ID, ahk_exe Notepad.exe WinGet, hFrame, ID, ahk_exe ApplicationFrameHost.exe ahk_parent %hNotepad% WinSet, ExStyle, -0x40000 +0x80, ahk_id %hFrame%
内容的提问来源于stack exchange,提问作者hellen_dorandt89
相关产品推荐
相关产品推荐

