Had to register to thank for this. Volume2 was the only software I found that had this feature, but it created other problems with my current audio card.
Here is my modification which works on bottom of the screen (40px = approx taskbar height), even in full screen programs, for example when watching videos.
Code: Select all
CoordMode, Mouse, Screen
#If MouseIsOverBottom()
WheelUp::Send {Volume_Up 2}
WheelDown::Send {Volume_Down 2}
#If
MouseIsOverBottom()
{ MouseGetPos,,y
Return y > A_ScreenHeight - 40
}
Here's adapted example of non-flickering OSD that uses SoundSet and unmutes on volume change. It also has "semi-logarithmic" method to change volume by +-2 when under 20% and +-5 if over.
Code: Select all
CoordMode, Mouse, Screen
BarX := ((A_ScreenWidth / 20) * 19) - 260
BarY := (A_ScreenHeight / 20) + 52
Volume_ProgressbarOpts = CW000000 CTFFFFFF CBAAAAAA x%BarX% y%BarY% w260 h52 B1 FS8 WM700 WS700 FM8 ZH12 ZY3 C11
Progress Hide %Volume_ProgressbarOpts%,,Volume,,Tahoma
#If MouseIsOverBottom()
WheelUp::
ChangeVolume("+")
gosub, Volume_Show_OSD
return
WheelDown::
ChangeVolume("-")
gosub, Volume_Show_OSD
return
#If
ChangeVolume(x)
{ SoundGet, vol, Master, Volume
if (x = "+")
nd := Round(vol) < 20 ? 2 : 5
else
nd := Round(vol) <= 20 ? 2 : 5
nv = %x%%nd%
SoundSet, nv, Master, Volume
SoundSet, 0, Master, Mute
}
MouseIsOverBottom()
{ MouseGetPos,,y
Return y > A_ScreenHeight - 40
}
Volume_Show_OSD:
SoundGet, Volume, Master, Volume
Progress % Volume := Round(Volume), %Volume% `%
Progress Show
SetTimer, Remove_Show_OSD, 500
return
Remove_Show_OSD:
SetTimer, Remove_Show_OSD, Off
Progress Hide %Volume_ProgressbarOpts%,,Volume,,Tahoma
return