Skelbimas
Argi nebūtų puiku, jei kaskart atjungdami ausines galėtumėte automatiškai nutildyti kompiuterio garso išvestį? Tai užkirstų kelią netyčia pabusti savo bendramoksliams mažomis ryto valandomis arba per klaidą viešai atskleisti jūsų meilę Britney Spears.
Be abejo, garsiakalbius ir ausines galite nutildyti kiekvienu atveju naudodami „Volume Mixer“. (Sužinokite daugiau apie garso pritaikymą „Windows 10“.) Tačiau sąžiningai nereikia to daryti, kai galite automatizuoti naudodami „PowerShell“.
Štai kaip automatiškai nutildyti kompiuterio garsą, kai pašalinate ausines, panašiai kaip tai daro išmanieji telefonai.
Norėdami pradėti, atidarykite užrašų knygelę. Tada įklijuokite šį kodą į tuščią dokumentą:
[cmdletbinding ()] „Param“) # Apibrėžimų pridėjimas norint pasiekti garso įrašo API. Pridėti tipą -TypeDefinition @ ' naudojant sistemą. Klaida. Tarpusavio paslaugos; [„Guid“ („5CDF2C82-841E-4546-9722-0CF74078229A“), „InterfaceType“ („ComInterfaceType“. InterfaceIsIUnknown)] sąsaja „IAudioEndpointVolume“ { // f (), g (),... yra nepanaudoti COM metodo laiko tarpsniai. Apibrėžkite juos, jei jums rūpi. int f (); int g (); int h (); int i (); int „SetMasterVolumeLevelScalar“ („float fLevel“, sistema. Guid pguidEventContext); int j (); int „GetMasterVolumeLevelScalar“ („float pfLevel“); int k (); int l (); int m (); int n (); int SetMute ([MarshalAs (UnmanagedType. Bool)] bool bMute, sistema. Guid pguidEventContext); int GetMute (out bool pbMute); } [„Guid“ („D666063F-1587-4E43-81F1-B948E807363F“), „InterfaceType“ („ComInterfaceType“). InterfaceIsIUnknown)] sąsaja IMMDevice { int aktyvuoti (ref. Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev); } [„Guid“ („A95664D2-9614-4F35-A746-DE8DB63617E6“), „InterfaceType“ („ComInterfaceType“. InterfaceIsIUnknown)] sąsaja IMMDeviceEnumerator { int f (); // Nenaudojamas. int „GetDefaultAudioEndpoint“ (int dataFlow, int roll, out IMMDevice endpoint); } [„ComImport“, „Guid“ („BCDE0395-E52F-467C-8E3D-C4579291692E“)] klasės „MMDeviceEnumeratorComObject“ {} viešosios klasės garsas { statinis „IAudioEndpointVolume Vol“ () { var enumerator = new MMDeviceEnumeratorComObject () kaip IMMDeviceEnumerator; IMMDevice dev = nulis; Maršalas. „ThrowExceptionForHR“. „GetDefaultAudioEndpoint“ (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = nulis; var epvid = typeof (IAudioEndpointVolume) .GUID; Maršalas. „ThrowExceptionForHR“ (dev. Suaktyvinti (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv)); grįžti epv; } viešo statinio plūdės tūris { gauti {plūduriuoti v = -1; Maršalas. „ThrowExceptionForHR“ („Vol“). „GetMasterVolumeLevelScalar“ (iš v)); grįžti v;} nustatyti {maršalas. „ThrowExceptionForHR“ („Vol“). „SetMasterVolumeLevelScalar“ (vertė, sistema. Guidas. Tuščia));} } viešas statinis garsas Nutildyti { gauti {bool nutildyti; Maršalas. „ThrowExceptionForHR“ (Vol (). GetMute (nutildyti)); grąžinti nutildymą; } nustatyti {maršalas. „ThrowExceptionForHR“ („Vol“). „SetMute“ (vertė, sistema. Guidas. Tuščia)); } } } '@ -Verbozė Kol (tiesa, $) { # Išvalykite visus dabartinės sesijos įvykius, nes ji yra begalinėje kilpoje, kad prasidėtų nauja kilmė. Renginių renginys | Pašalinti įvykį - „ErerorAction“ SilentlyContinue # Įregistruoti įvykį ir laukti, kol įvyks įvykis. Registruotis-WmiEvent -Class Win32_DeviceChangeEvent. „Wait-Event“ - „OutVariable “įvykis |„ Out-Null “$ EventType = $ Event.sourceargs.newevent | ` Objektas „Sort-Object TIME_CREATED“ - mažėjančia tvarka | ` „Select-Object EventType -ExpandProperty“ „EventType“ -Pirmasis 1 #Techninė tvarkymo logika: Kada nutildyti / nutildyti įrenginį naudojant „Audio API“. Jei ($ EventType -eq 3) { [Audio]:: Nutildyti = $ tiesa. Rašomasis žodinis žodis "Nutildytas [$ ((gavimo data) .tostring ())]" } elseif ($ EventType -eq 2 ir [Audio]:: Nutildyti -eq $ true) { [Garsas]:: Nutildyti = $ klaidinga. Rašomasis žodinis žodis „Neįjungta [$ ((gavimo data) .tostring ())]“ } }
Dabar turite išsaugoti failą PS1 formatu. Peržiūrėdami dialogo langą Įrašyti failą, pasirinkite Visi failai iš išskleidžiamojo meniu ir paskambinkite į failą „AutoMute.ps1“. Pats failo pavadinimas nėra svarbus, todėl tiesiog pasirinkite tai, ką lengva atsiminti.
Norėdami suaktyvinti scenarijų, dešiniuoju pelės mygtuku spustelėkite naujai sukurtą failą ir pasirinkite Bėk. Scenarijus bus aktyvus, kol neišjungsite savo kompiuterio.
Tai tik vienas iš daugelio būdų „PowerShell“ gali padidinti jūsų produktyvumą Padidinkite produktyvumą naudodami „Windows PowerShell“ scenarijusO kas, jei galėtumėte „Linux“ padidinti „Windows“ produktyvumą? Daugelis „Linux“ diskų yra su galingu „Bash“ apvalkalu. „PowerShell“ yra toks pat galingas „Windows“ terminalas. Skaityti daugiau . Yra daug „PowerShell“ cmdlet, kurie pagerins jūsų „Windows“ patirtį „Powershell“ rinkiniai, kurie pagerins jūsų „Windows“ administratoriaus įgūdžius„Powershell“ yra lygios dalys komandinės eilutės įrankis ir scenarijų kalba. Tai suteikia galimybę automatizuoti kompiuterį tomis pačiomis komandomis, kurias naudojate jam administruoti. Skaityti daugiau .
Vaizdo kreditas: peus / Depositphotos
Danas yra emigrantas iš Britanijos, gyvenantis Meksikoje. Jis yra MUO seserų svetainės „Blocks Decoded“ generalinis redaktorius. Įvairiais laikais jis buvo MUO socialinis redaktorius, kūrybinis redaktorius ir finansų redaktorius. Galite rasti jį klaidžiojantį parodų salėje CES Las Vegase (PR žmonės, susisiekite!), Be to, jis dirba daugybėje užkulisių svetainių...