How to reset per application volume setting in Windows 7 and Vista
How to reset per application volume setting in Windows 7 and Vista
I've altered per application volume settings for my applications. I want to reset every individual volume setting so that all apps use the global volume settings. How should I do that?
"I have to do this all-max -> reset all the time. I finally searched the net to see if there was some secret hot key or combo I was missing. Apparently not. :/
So I made an autoit script to do this more quickly than humanly possible :) I compiled it via tools->build and that way I can run the exe by searching in the start menu.
If Not IsInt($Pct) Or $Pct < 3 Or $Pct > 100 Then SetError(1) Return False EndIf
$CtrlHandle = ControlGetHandle($Win, '', $Ctrl) if not $CtrlHandle Then SetError(2) Return False EndIf
Local $SetValue, $SendValue If $Pct <= 51 Then $SetValue = $Pct + 1 $SendValue = '{UP}' Else $SetValue = $Pct - 1 $SendValue = '{DOWN}' EndIf _GUICtrlSlider_SetPos($CtrlHandle, $SetValue) Local $PrevOpt = Opt('SendKeyDelay', 1) ControlSend($Win, '', $Ctrl, $SendValue) Opt('SendKeyDelay', $PrevOpt)
Return True EndFunc
Func EachSliderTo($Win, $Pct)
WinWait($Win, """") If Not WinActive($Win,"""") Then WinActivate($Win,"""") local $i = 1 If not WinActive($Win,"""") Then WinActivate($Win,"""") While True $Ctrl = ""[CLASS:msctls_trackbar32; INSTANCE:""& $i &""]"" if not SlideTo($Win, $Ctrl, $Pct) Then ExitLoop EndIf $i = $i + 1 WEnd Return True EndFunc
$Win = ""Volume Mixer"" $Prog = ""SndVol.exe"" if Not WinActive($Win,"""") Then if not WinActivate($Win,"""") Then ShellExecute($Prog) If not WinActive($Win,"""") Then WinActivate($Win,"""") EndIf EndIf WinWait($Win) EachSliderTo(""Volume Mixer"",100); EachSliderTo(""Volume Mixer"", 50);
Thanks to this autoit thread for info on moving slider controls."
"I have been using ferrix's script for some time but I modified it to set all application volume sliders to to match the current master volume rather than setting them all to 50%. I also altered it so that it works on sliders with volumes set less than 3%.
If Not IsInt($Pct) Or $Pct < 0 Or $Pct > 100 Then SetError(1) Return False EndIf
$CtrlHandle = ControlGetHandle($Win, '', $Ctrl) If Not $CtrlHandle Then SetError(2) Return False EndIf
Local $SetValue, $SendValue If $Pct <= 51 Then $SetValue = $Pct + 1 $SendValue = '{UP}' Else $SetValue = $Pct - 1 $SendValue = '{DOWN}' EndIf _GUICtrlSlider_SetPos($CtrlHandle, $SetValue) Local $PrevOpt = Opt('SendKeyDelay', 1) ControlSend($Win, '', $Ctrl, $SendValue) Opt('SendKeyDelay', $PrevOpt)
Return True EndFunc ;==>SlideTo
Func EachSliderTo($Win, $Pct)
WinWait($Win, """") If Not WinActive($Win, """") Then WinActivate($Win, """") Local $i = 1 If Not WinActive($Win, """") Then WinActivate($Win, """") While True $Ctrl = ""[CLASS:msctls_trackbar32; INSTANCE:"" & $i & ""]"" If Not SlideTo($Win, $Ctrl, $Pct) Then ExitLoop EndIf $i = $i + 1 WEnd Return True EndFunc ;==>EachSliderTo
$Win = ""Volume Mixer"" $Prog = ""SndVol.exe"" If Not WinActive($Win, """") Then If Not WinActivate($Win, """") Then ShellExecute($Prog) If Not WinActive($Win, """") Then WinActivate($Win, """") EndIf EndIf WinWait($Win)
;Master volume has the highest instance number so find slider with highest instance then return its handle. Local $i = 1 While True Local $h = ControlGetHandle($Win, '', ""[CLASS:msctls_trackbar32; INSTANCE:"" & $i & ""]"") If @error > 0 Then ExitLoop EndIf $i = $i + 1 Local $Handle = $h ;store last sucessful handle to be returned WEnd
Local $CurrMasterVol = _GUICtrlSlider_GetPos($Handle)
;100 is 0% and 0 is 100% ;EachSliderTo(""Volume Mixer"", 100) ;What is the point of doing this first? EachSliderTo(""Volume Mixer"", $CurrMasterVol) WinClose(""Volume Mixer"")
Credit goes to ferrix for writing the original script."