Uygulamalarım için uygulama ses seviyesi ayarlarında değişiklik yaptım. Her bir birim ayarını sıfırlamak istiyorum, böylece tüm uygulamalar genel birim ayarlarını kullanır. Bunu nasıl yapmalıyım?
Uygulamalarım için uygulama ses seviyesi ayarlarında değişiklik yaptım. Her bir birim ayarını sıfırlamak istiyorum, böylece tüm uygulamalar genel birim ayarlarını kullanır. Bunu nasıl yapmalıyım?
Yanıtlar:
İşe yarayan bir geçici çözüm buldum ama bu biraz garip. Daha iyi bir çözüm tercih ediyorum ama bu arada:
Genel birimi en yüksek seviyeye ayarlayın, her bir uygulama birimini en üst düzeye çıkarın. Ardından küresel sesi kısın. Çalışıyor gibi görünüyor. Tüm uygulama ses seviyesi ayarları şimdi global ayara bağlı.
Bunu all-max yapmak zorundayım -> her zaman sıfırla. Sonunda net bir kısayol tuşu ya da eksik olan combo olduğunu görmek için net aradım. Görünüşe göre öyle değil. : /
Bu yüzden , bunu insanca mümkün olandan daha hızlı yapmak için bir autoit betiği yaptım :) Bunu tools- > build ile derledim ve bu şekilde exe'yi başlat menüsünde arayarak çalıştırabilirim.
Tüm sürgülerin sesini açıp% 50'ye gitmesine neden olur.
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);
Hareketli kaydırıcı kontrolleri hakkında bilgi almak için bu autoit thread'a teşekkürler .
Aşağıdaki .bat
dosya Per4u3e üzerinde Microsoft Forumlar benim için hile yaptı. Geçici olarak ses servislerini durdurarak ve Windows'u varsayılan ses ayarlarına sıfırlamak için kayıt defterini değiştirerek çalışır.
En azından Windows 10'da, betiği yönetici olarak çalıştırmanız gerekebileceğini unutmayın.
@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
Bir Powershell bit, yukarıda Steven'ın paylaştığı cevabın tekrarını yazıyor, burada şık bir koddan biraz ödünç aldım: https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating -powershell-komut /
Neden? Toplu komut dosyasından çok daha hızlı çalışır ve ben bunu çok kullanırım. Paylaşacağımı düşündüm. :)
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
Veya, kaba geri bildirim metni veya kendiliğinden yükselme olmadan tercih ederseniz:
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 betiğini bir süredir kullanıyorum ancak tüm uygulama ses kaydırıcılarını, hepsini% 50 olarak ayarlamak yerine geçerli ana ses düzeyiyle eşleşecek şekilde ayarlamak üzere değiştirdim. Ayrıca değiştirdim, böylece kaydırıcılar üzerinde% 3'ten daha az ayarlanmış kaydırıcılar üzerinde çalışacak.
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")
Credit, orijinal senaryoyu yazmak için ferrix'e gider.