This AutoIt script is intended to improve how taskbar autohide works in Windows. The script works by disabling the taskbar while it is hidden, until either the Windows (WIN) key is pressed, or the user hovers the bottom of the screen for a few seconds.
A problem in Windows causes the taskbar to sometimes re-appear unintentionally, and sometimes it also becomes unresponsive when a window is maximized. This script should solve these problems by simply disabling the taskbar when hidden, and only make it re-appear when the user wants it to appear.
I hope that Microsoft will one day improve the taskbar, and fix these long lived issues. But until then, this script might be of help.
This only works as intended if your taskbar is located at the bottom. The script was tested with a 1920x1080 screen resolution, but should also work with other resolutions.
You will need to download and install AutoIt to run the script. Save the script in a .au3 file, then right-click on it to run the script. Alternatively you can also compile the script into a stand-alone exe using AutoIt.
#include <MsgBoxConstants.au3> Sleep(1000) Local $hWnd = WinWait("[CLASS:Shell_TrayWnd]", "", 10) Local $aPos = WinGetPos($hWnd) Global $hidden_position = $aPos Global $TaskBarFocus = 1 Global $hover_timer = 0 WinSetState($hWnd, "", @SW_DISABLE) While 1 TaskBarDisable() TaskBarEnable() Sleep(50); WEnd Func _IsPressed($hexKey) Local $aR, $bO $hexKey = '0x' & $hexKey $aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey) If Not @error And BitAND($aR, 0x8000) = 0x8000 Then Return 1 Else Return 0 EndIf EndFunc Func TaskBarDisable() while $TaskBarFocus = 1 Local $TaskBarPos = WinGetPos($hWnd) If $TaskBarPos = $hidden_position Then WinSetState($hWnd, "", @SW_DISABLE) $TaskBarFocus = 0 EndIf Wend EndFunc Func TaskBarEnable() Local $aPos = MouseGetPos() If _IsPressed("5B") Or _IsPressed("5C") Then WinSetState($hWnd, "", @SW_ENABLE) $TaskBarFocus = 1 Sleep(1000) ElseIf $aPos > $hidden_position-40 Then sleep(1000) $hover_timer = $hover_timer+1 If $hover_timer > 2 Then WinSetState($hWnd, "", @SW_ENABLE) $TaskBarFocus = 1 $hover_timer = 0 sleep(500) EndIf Else $hover_timer = 0 EndIf EndFunc