আমি আমার অ্যাপ্লিকেশনগুলির জন্য প্রতি অ্যাপ্লিকেশন ভলিউম সেটিংস পরিবর্তন করেছি। আমি প্রতিটি স্বতন্ত্র ভলিউম সেটিংটি পুনরায় সেট করতে চাই যাতে সমস্ত অ্যাপ্লিকেশন গ্লোবাল ভলিউম সেটিংস ব্যবহার করে। আমি এটা কিভাবে করব?
আমি আমার অ্যাপ্লিকেশনগুলির জন্য প্রতি অ্যাপ্লিকেশন ভলিউম সেটিংস পরিবর্তন করেছি। আমি প্রতিটি স্বতন্ত্র ভলিউম সেটিংটি পুনরায় সেট করতে চাই যাতে সমস্ত অ্যাপ্লিকেশন গ্লোবাল ভলিউম সেটিংস ব্যবহার করে। আমি এটা কিভাবে করব?
উত্তর:
আমি এমন একটি কাজের সন্ধান পেয়েছি যা কাজ করে তবে এটি কিছুটা হ্যাকিশ। আমি আরও ভাল সমাধান পছন্দ করি তবে এর মধ্যে চেষ্টা করুন:
সর্বোচ্চ পরিমাণে বিশ্বব্যাপী ভলিউম সেট করুন, প্রতিটি পৃথক অ্যাপ্লিকেশন ভলিউমকে সর্বাধিকও সরিয়ে দিন। তারপরে গ্লোবাল ভলিউমটি নীচে সরান। এটি কাজ করছে বলে মনে হচ্ছে। সমস্ত অ্যাপ্লিকেশন ভলিউম সেটিংস এখন বিশ্বব্যাপী সেটিংসে আবদ্ধ।
আমাকে এই সর্ব্বোচ্চ -> সর্বদা রিসেট করতে হবে। আমি কোনও গোপন হট কী বা কম্বো অনুপস্থিত ছিল কিনা তা দেখতে অবশেষে নেটটি অনুসন্ধান করেছিলাম। দৃশ্যত না. : /
সুতরাং আমি এটি মানবিক সম্ভাবনার চেয়ে আরও দ্রুত করার জন্য একটি অটোইট স্ক্রিপ্ট তৈরি করেছি :) আমি এটি সরঞ্জাম-> বিল্ডের মাধ্যমে সংকলন করেছি এবং সেভাবে আমি স্টার্ট মেনুতে অনুসন্ধান করে এক্সিকে চালাতে পারি।
এটি সমস্ত স্লাইডারগুলিকে নিঃশব্দ করতে এবং 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);
স্লাইডার নিয়ন্ত্রণগুলিতে সরানো সম্পর্কিত তথ্যের জন্য এই অটোটি থ্রেডকে ধন্যবাদ ।
নিম্নলিখিত .bat
থেকে ফাইল Per4u3e উপর মাইক্রোসফট ফোরাম আমার জন্য কৌতুক করেনি। এটি অস্থায়ীভাবে অডিও পরিষেবাগুলি বন্ধ করে এবং উইন্ডোজকে ডিফল্ট অডিও সেটিংসে রিসেট করতে রেজিস্ট্রি সংশোধন করে কাজ করে।
নোট করুন, কমপক্ষে উইন্ডোজ 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
উপরে স্টিভেন দ্বারা ভাগ করা উত্তরটির পাওয়ারশেল পুনর্লিখনের বিট, আমি নিফটির স্ব-উত্তোলন কোডটি থেকে এখানে কিছুটা ধার নিয়েছি: https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating -powershell-স্ক্রিপ্ট /
কেন? এটি ব্যাচের স্ক্রিপ্টের চেয়ে অনেক বেশি দ্রুত চলে এবং আমি এই প্রচুর ব্যবহার করি। ভেবেছি আমি ভাগ করে নিই। :)
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
আমি কিছু সময়ের জন্য ফেরিক্সের স্ক্রিপ্ট ব্যবহার করছি তবে আমি এটিকে সমস্ত অ্যাপ্লিকেশন ভলিউম স্লাইডারগুলিকে বর্তমান মাস্টার ভলিউমের সাথে মিলিয়ে সেট করতে 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")
মূল স্ক্রিপ্ট লেখার জন্য ক্রেডিট ফেরিক্সে যায়।