アプリケーションのアプリケーションごとのボリューム設定を変更しました。すべてのアプリがグローバルボリューム設定を使用するように、個々のボリューム設定をすべてリセットしたい。どうすればいいですか?
アプリケーションのアプリケーションごとのボリューム設定を変更しました。すべてのアプリがグローバルボリューム設定を使用するように、個々のボリューム設定をすべてリセットしたい。どうすればいいですか?
回答:
私は動作する回避策を見つけましたが、それは少しハックです。私はより良い解決策を好むが、その間に試してみてください:
グローバルボリュームを最大に設定し、個々のアプリケーションボリュームも最大に移動します。次に、グローバルボリュームを下に移動します。動作しているようです。これで、すべてのアプリケーションボリューム設定がグローバル設定にバインドされました。
私はこれをすべて最大限に行う必要があります->常にリセットします。私は最終的にネットを検索して、見つからない秘密のホットキーまたはコンボがあるかどうかを確認しました。どうやら。:/
だから私は人間よりも速くこれを行うためのautoitスクリプトを作成しました:)私はtools- > buildを介してそれをコンパイルし、そのようにしてスタートメニューで検索してexeを実行できます。
これにより、すべてのスライダーのミュートが解除され、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);
スライダーコントロールの移動に関する情報については、このautoitスレッドに感謝します。
Microsoft ForumsのPer4u3e.bat
からの次のファイルは、私にとってはうまくいきました。オーディオサービスを一時的に停止し、レジストリを変更してWindowsをデフォルトのオーディオ設定にリセットすることで機能します。
少なくともWindows 10では、管理者としてスクリプトを実行する必要がある場合があることに注意してください。
@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
上記のStevenが共有した回答をPowershellで書き直したものの、私はここの気の利いた自己昇格コードから少し借りました:https : //blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating -powershell-script /
どうして?バッチスクリプトよりもはるかに高速に実行され、私はこの多くを使用します。私は共有すると思いました。:)
If(!(new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) {
$newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell"
$newProcess.Arguments = $myInvocation.MyCommand.Definition
$newProcess.Verb = "runas"
$null = [System.Diagnostics.Process]::Start($newProcess)
Return
}
cls
$ErrorActionPreference = "SilentlyContinue"
Write-Host '--- Reset Windows Audio Mixer ---' -ForegroundColor Cyan;""
Write-Host 'Stopping Service [Audiosrv] : ' -ForegroundColor White -NoNewline
$Error.Clear()
Stop-Service -Name Audiosrv -Force
If($Error) {Write-Host 'Error' -ForegroundColor Red} Else {Write-Host 'OK' -ForegroundColor Green}
Write-Host 'Stopping Service [AudioEndpointBuilder] : ' -ForegroundColor White -NoNewline
$Error.Clear()
Stop-Service -Name AudioEndpointBuilder -Force
If($Error) {Write-Host 'Error' -ForegroundColor Red} Else {Write-Host 'OK' -ForegroundColor Green}
Write-Host 'Deleting Registry Key [PropertyStore] : ' -ForegroundColor White -NoNewline
$Error.Clear()
Remove-Item -Path 'HKCU:Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore' -Force -Recurse
If($Error) {Write-Host 'Error' -ForegroundColor Red} Else {Write-Host 'OK' -ForegroundColor Green}
Write-Host 'Creating Registry Key [PropertyStore] : ' -ForegroundColor White -NoNewline
$Error.Clear()
$null = New-Item -Path 'HKCU:Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\' -Name PropertyStore
If($Error) {Write-Host 'Error' -ForegroundColor Red} Else {Write-Host 'OK' -ForegroundColor Green}
Write-Host 'Starting Service [Audiosrv] : ' -ForegroundColor White -NoNewline
$Error.Clear()
Start-Service -Name Audiosrv
If($Error) {Write-Host 'Error' -ForegroundColor Red} Else {Write-Host 'OK' -ForegroundColor Green}
Sleep -Seconds 5
または、粗野なフィードバックテキストや自己標高なしでそれを好む場合:
Stop-Service -Name Audiosrv -Force
Stop-Service -Name AudioEndpointBuilder -Force
Remove-Item -Path 'HKCU:Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore' -Force -Recurse
$null = New-Item -Path 'HKCU:Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\' -Name PropertyStore
Start-Service -Name Audiosrv
Pause
私は以前からferrixのスクリプトを使用していましたが、すべてを50%に設定するのではなく、すべてのアプリケーションボリュームスライダーを現在のマスターボリュームに一致するように変更しました。また、ボリュームを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")
元のスクリプトを書いた功績はferrixにあります。