winapi - 设置 Windows 任务栏自动隐藏的命令或消息或 DLL 调用?
问题描述
我需要以编程方式设置或切换 Windows 10 任务栏的自动隐藏。绑定到热键的操作以提高生产力和便利性。是否有命令行命令或 DLL 调用可以实现等效于翻转以下开关:
目前,我通过打开上面的设置窗口并发送按键进行搜索来实现这一点,然后是DownsSpace和Alt+ F4,但它很慢且不可靠。
这个问题不是特定于语言的,因为 DLL 调用在任何地方看起来都几乎相同,尽管我的最终实现将在AutoHotKey中。
预期结果:运行命令后,Windows 资源管理器将更改其行为,就像启用(或禁用或切换)设置在桌面模式下自动隐藏任务栏一样。
解决方案
它是ABM_SETSTATE消息。
在找到正确的 Windows消息后,我还在AutoHotKey 中找到了实现:
ABM_SETSTATE := 10
ABS_NORMAL := 0x0
ABS_AUTOHIDE := 0x1
ABS_ALWAYSONTOP := 0x2
VarSetCapacity(APPBARDATA, 36, 0)
Address := NumPut(36, APPBARDATA)
Address := NumPut(WinExist("ahk_class Shell_TrayWnd"), Address + 0)
NumPut(ABS_NORMAL, Address + 24)
DllCall("Shell32.dll\SHAppBarMessage", UInt, ABM_SETSTATE, UInt, &APPBARDATA)
将第二行中的参数从底部更改ABS_NORMAL
为ABS_AUTOHIDE
以实现预期的其他状态。
推荐阅读
- julia - 查找除第一个元素外的数组尾部
- amazon-elb - Presto Query 通过 ELB 报错“The plain HTTP request was sent to HTTPS”
- html-help - 看不到 Virtual TreeView 的 HTML 帮助内容
- javafx - 如何在输入时在微调器文本字段中选择数字或文本?
- javascript - 使用多个复选框值的字符串更改输入
- xcode - 未找到架构 arm64 的 CoreServices 框架
- markdown - Generate Bibliography file from multiple files with Pandoc
- haskell - 如何使用 StateT、ContT 和 ReaderT 创建 monad?
- java - 使用java将文件从本地文件夹复制到远程文件夹
- mysql - MySQL 查询性能非常慢