After much searching i came across this post on the AutoHotkey forum, with an example that seemed to actually work, albeit not quite right since it has a message box etc.
I managed to re-shape it in to a little AutoHotkey script that draws an invisible window that seems to successfully reserve the area, and prevent other windows from overlapping it when they are maximized:
Code: Select all
;------------------------------------------------------
;Save as filename: ReserveScreenSpace.ahk
;------------------------------------------------------
;Based on code by AutoHotkey forum user "shimanov"
;Prevent 175 pixels from the bottom of the screen from being overlapped by maximised windows.
;Exit via icon in system tray.
#Persistent
w := A_ScreenWidth
h := 175
x := 0
y := A_ScreenHeight-h
Gui, +AlwaysOnTop -Caption
Gui, Show, x%x% y%y% w%w% h%h%
;Prevents the script from being shown in Alt-Tab window.
WinSet, ExStyle, ^0x80, ReserveScreenSpace.ahk
;Set it to transparent (0) - (255) Opaque.
WinSet, Transparent , 0, ReserveScreenSpace.ahk
;Uncommenting these next two lines will also hide the taskbar:
;WinHide, ahk_class Shell_TrayWnd
;WinHide, Start ahk_class Button
EncodeInteger( A_ScreenWidth, 4, &area, 8 )
EncodeInteger( A_ScreenHeight-h, 4, &area, 12 )
DllCall( "SystemParametersInfo", "uint", 0x2F, "uint", 0, "uint", &area, "uint", 0 )
EncodeInteger( p_value, p_size, p_address, p_offset )
{
loop, %p_size%
DllCall( "RtlFillMemory"
, "uint", p_address+p_offset+A_Index-1
, "uint", 1
, "uchar", ( p_value >> ( 8*( A_Index-1 ) ) ) & 0xFF )
DllCall( "SystemParametersInfo", "uint", 0x2F, "uint", 0, "uint", &area, "uint", 0 )
}
;------------------------------------------------------
;------------------------------------------------------