Como redefinir a configuração de volume por aplicativo no Windows 7 e Vista
18
Alterei as configurações de volume por aplicativo para meus aplicativos. Desejo redefinir todas as configurações de volume individuais para que todos os aplicativos usem as configurações globais de volume. Como devo fazer isso?
Eu encontrei uma solução alternativa que funciona, mas é um pouco imprudente. Prefiro uma solução melhor, mas, enquanto isso, tente:
Defina o volume global para o máximo, mova cada volume de aplicativo individual para o máximo também. Em seguida, mova o volume global para baixo. Parece estar funcionando. Todas as configurações de volume do aplicativo agora estão vinculadas à configuração global.
Nao funciona para mim. O cliente Last.fm sempre volta para ~ 15% do máximo.
Robert
4
Eu tenho que fazer isso tudo max -> redefinir o tempo todo. Eu finalmente procurei na net para ver se havia alguma tecla de atalho ou combinação secreta que estava faltando. Aparentemente não. : /
Então eu criei um script de autoit para fazer isso mais rapidamente do que humanamente possível :) Eu o compilei através de tools-> build e dessa forma eu posso executar o exe pesquisando no menu Iniciar.
Faz com que todos os controles deslizantes sejam desativados e atinjam 50%.
Volume_Normalize.au3:
#include <GuiConstantsEx.au3>
#include <GuiSlider.au3>
Func SlideTo($Win, $Ctrl, $Pct)
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);
Graças a este tópico de autoit para obter informações sobre como mover controles deslizantes.
O seguinte .batarquivo do Per4u3e nos Fóruns da Microsoft fez o truque para mim. Ele funciona interrompendo temporariamente os serviços de áudio e modificando o registro para redefinir o Windows para as configurações de áudio padrão.
Observe que, pelo menos no Windows 10, pode ser necessário executar o script como administrador.
@ECHO OFF
ECHO Reset Volume Mixer Settings...
NET STOP Audiosrv
NET STOP AudioEndpointBuilder
REG DELETE "HKCU\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore" /F
REG ADD "HKCU\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore"
NET START Audiosrv
Uso o script da ferrix há algum tempo, mas o modifiquei para definir todos os controles deslizantes de volume do aplicativo para corresponderem ao volume principal atual, em vez de configurá-los para 50%. Também a alterei para funcionar em controles deslizantes com volumes definidos abaixo de 3%.
Volume_Normalize_Alt.au3:
#include <GuiConstantsEx.au3>
#include <GuiSlider.au3>
Func SlideTo($Win, $Ctrl, $Pct)
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")
O crédito é atribuído à ferrix por escrever o roteiro original.
Respostas:
Eu encontrei uma solução alternativa que funciona, mas é um pouco imprudente. Prefiro uma solução melhor, mas, enquanto isso, tente:
Defina o volume global para o máximo, mova cada volume de aplicativo individual para o máximo também. Em seguida, mova o volume global para baixo. Parece estar funcionando. Todas as configurações de volume do aplicativo agora estão vinculadas à configuração global.
fonte
Eu tenho que fazer isso tudo max -> redefinir o tempo todo. Eu finalmente procurei na net para ver se havia alguma tecla de atalho ou combinação secreta que estava faltando. Aparentemente não. : /
Então eu criei um script de autoit para fazer isso mais rapidamente do que humanamente possível :) Eu o compilei através de tools-> build e dessa forma eu posso executar o exe pesquisando no menu Iniciar.
Faz com que todos os controles deslizantes sejam desativados e atinjam 50%.
Volume_Normalize.au3:
Graças a este tópico de autoit para obter informações sobre como mover controles deslizantes.
fonte
O seguinte
.bat
arquivo do Per4u3e nos Fóruns da Microsoft fez o truque para mim. Ele funciona interrompendo temporariamente os serviços de áudio e modificando o registro para redefinir o Windows para as configurações de áudio padrão.Observe que, pelo menos no Windows 10, pode ser necessário executar o script como administrador.
fonte
Reescrevendo um pouco a Powershell da resposta compartilhada por Steven acima, peguei emprestado um pouco do código bacana de auto-elevação aqui: https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating -powershell-script /
Por quê? Ele roda muito mais rápido que o script em lote e eu uso muito isso. Achei que eu iria compartilhar. :)
Ou, se preferir, sem o texto bruto de feedback ou a auto-elevação:
fonte
Uso o script da ferrix há algum tempo, mas o modifiquei para definir todos os controles deslizantes de volume do aplicativo para corresponderem ao volume principal atual, em vez de configurá-los para 50%. Também a alterei para funcionar em controles deslizantes com volumes definidos abaixo de 3%.
Volume_Normalize_Alt.au3:
O crédito é atribuído à ferrix por escrever o roteiro original.
fonte