这段代码实现了 隐藏或显示任务栏 的功能。它利用 Windows API 与 SHAppBarMessage
函数交互,动态设置任务栏的状态,同时通过 WinHide
和 WinShow
控制任务栏和相关按钮的可见性。
ABM_SETSTATE := 10 ABS_NORMAL := 0x0 ABS_AUTOHIDE := 0x1 ABS_AlwaysOnTOP := 0x2 VarSetCapacity( APPBARDATA , 36, 0 ) Off := NumPut( 36, APPBARDATA ) Off := NumPut( WinExist("ahk_class Shell_TrayWnd"), Off+0 ) F1:: ;{隐藏或者显示任务栏 IfWinExist,ahk_class Shell_TrayWnd ;判断是否存在任务栏窗口 { NumPut( ABS_AUTOHIDE|ABS_AlwaysOnTOP, Off+24 ) DllCall("Shell32.dll\SHAppBarMessage", UInt,ABM_SETSTATE, UInt,&APPBARDATA ) WinHide ahk_class Shell_TrayWnd WinHide ahk_class Button return }else{ NumPut( ABS_AlwaysOnTOP, Off+24 ) DllCall("Shell32.dll\SHAppBarMessage", UInt,ABM_SETSTATE, UInt,&APPBARDATA ) WinShow ahk_class Shell_TrayWnd WinShow ahk_class Button return }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(3)
你好 博主 发现一个bug并已找到合适的解决方法 问题时当隐藏任务栏时光标所处位置会对调用结果产生不同的影响(例如隐藏时需要按下两次快捷键才能显示任务栏,当隐藏任务栏后光标移动到屏幕下方任务栏会自己移上来,这显然是我们不希望发生的)
解决方法时在12行前条件分支内加上`send, #b`以达到规避这个问题的效果 如需交流q1622741437
这只是一段抛砖引玉的小示例而已,具体需要自己去完善
当隐藏任务栏时光标没有处于任务栏上时,会有上述问题,望采纳