[Thủ thuật] Tự động tắt âm thanh khi tháo tai nghe trên Windows

Nguyễn_Cương

Well-Known Member
Tham gia
5/10/17
Bài viết
4,446
Được thích
2,518
8768 #1

Bạn thường xuyên nghe nhạc cũng như xem phim trên máy tính, laptop tuy nhiên, mỗi lần bạn rút tai nghe ra là âm thanh lại cứ thế tiếp tục phát hoặc phát trên loa ngoài khiến bạn và người xung quanh khó chịu (đặc biệt với phim "đen" hoặc nhạc remix). Nhưng giờ đây mọi thứ đã “ngon lành” chỉ với một lần kích chuột duy nhất. Hôm nay, Techrum sẽ hướng dẫn bạn thủ thuật tự động tắt âm thanh trên PC khi tháo tai nghe giống như trên smartphone.

B1: Mở Notepad:

Có 2 cách mở notepad:
  • Dùng tổ hợp lệnh nút WIN + R trên bàn phím và gõ notepad vào Run
  • Dùng công cụ tìm kiếm của Windows 10
B2: Sao chép và dán đoạn mã bên dưới vào notepad

Code:
[cmdletbinding()]
Param()

#Adding definitions for accessing the Audio API
Add-Type -TypeDefinition @'
using System.Runtime.InteropServices;
[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IAudioEndpointVolume {
// f(), g(), ... are unused COM method slots. Define these if you care
int f(); int g(); int h(); int i();
int SetMasterVolumeLevelScalar(float fLevel, System.Guid pguidEventContext);
int j();
int GetMasterVolumeLevelScalar(out float pfLevel);
int k(); int l(); int m(); int n();
int SetMute([MarshalAs(UnmanagedType.Bool)] bool bMute, System.Guid pguidEventContext);
int GetMute(out bool pbMute);
}
[Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IMMDevice {
int Activate(ref System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev);
}
[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IMMDeviceEnumerator {
int f(); // Unused
int GetDefaultAudioEndpoint(int dataFlow, int role, out IMMDevice endpoint);
}
[ComImport, Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")] class MMDeviceEnumeratorComObject { }
public class Audio {
static IAudioEndpointVolume Vol() {
var enumerator = new MMDeviceEnumeratorComObject() as IMMDeviceEnumerator;
IMMDevice dev = null;
Marshal.ThrowExceptionForHR(enumerator.GetDefaultAudioEndpoint(/*eRender*/ 0, /*eMultimedia*/ 1, out dev));
IAudioEndpointVolume epv = null;
var epvid = typeof(IAudioEndpointVolume).GUID;
Marshal.ThrowExceptionForHR(dev.Activate(ref epvid, /*CLSCTX_ALL*/ 23, 0, out epv));
return epv;
}
public static float Volume {
get {float v = -1; Marshal.ThrowExceptionForHR(Vol().GetMasterVolumeLevelScalar(out v)); return v;}
set {Marshal.ThrowExceptionForHR(Vol().SetMasterVolumeLevelScalar(value, System.Guid.Empty));}
}
public static bool Mute {
get { bool mute; Marshal.ThrowExceptionForHR(Vol().GetMute(out mute)); return mute; }
set { Marshal.ThrowExceptionForHR(Vol().SetMute(value, System.Guid.Empty)); }
}
}
'@ -Verbose


While($true)
{
#Clean all events in the current session since its in a infinite loop, to make a fresh start when loop begins
Get-Event | Remove-Event -ErrorAction SilentlyContinue

#Registering the Event and Waiting for event to be triggered
Register-WmiEvent -Class Win32_DeviceChangeEvent
Wait-Event -OutVariable Event |Out-Null

$EventType = $Event.sourceargs.newevent | `
Sort-Object TIME_CREATED -Descending | `
Select-Object EventType -ExpandProperty EventType -First 1

#Conditional logic to handle, When to Mute/unMute the machine using Audio API
If($EventType -eq 3)
{
[Audio]::Mute = $true
Write-Verbose "Muted [$((Get-Date).tostring())]"
}
elseif($EventType -eq 2 -and [Audio]::Mute -eq $true)
{
[Audio]::Mute = $false
Write-Verbose "UnMuted [$((Get-Date).tostring())]"
}
}
B3: Lưu tệp


Bây giờ bạn chỉ cần lưu tệp ở định dạng PS1. Khi bạn nhìn thấy hộp thoại Save File, hãy chọn All File từ trình đơn và đặt tên file là AutoMute.ps1. Tên của tập tin không phải là nhất thiết phải giống mẫu, bạn có thể chọn một cái tên gì đó dễ nhớ cũng được.

B4: Chạy tệp


Để kích hoạt bạn hãy nhấp chuột phải vào file mới tạo và chọn Run with PowerShell. Tính năng này sẽ hoạt động cho đến khi bạn tắt máy. Nên cần phải kích hoạt cho những lần sau. Bạn có thể tạo shortcut trên desktop để tiện cho việc kích hoạt mỗi khi mở máy, hoặc bạn có thể thiết lập file tự chạy mỗi khi mở máy bằng Task Scheduler.

Nếu bạn gặp vấn đề khó khăn trong việc tạo file hoặc muốn file tự động chạy mỗi khi mở máy mà không biết làm như thế nào thì bạn có thể comment bên dưới trang để nhận được sự giúp đỡ.

Chúc bạn thực hiện thành công!
Tham khảo - TechPrime
 
Last edited by a moderator:

Ntunglam1002

New Member
Tham gia
9/5/18
Bài viết
2
Được thích
0
#2
Ad ơi chỉ e cáhc tạo file chạy tự động với
 

Chaffee

Well-Known Member
Tham gia
13/2/14
Bài viết
1,838
Được thích
1,196
#5
Cách đơn giản hơn là bật Mix sound lên, giảm âm của driver loa laptop đi, cắm tai vào rồi chỉnh tới mức mong muốn.
Rút tai nghe ra thì nó quay lại mức 0 của loa laptop nhé
 

keyzjn

Active Member
Tham gia
22/6/14
Bài viết
225
Được thích
43
#6
không có tác dụng trên Windows 10 17763 :tire:
 

Theo dõi Youtube

Thành viên online

Không có thành viên trực tuyến lúc này

Quảng Cáo

Quảng Cáo

Có thể bạn quan tâm

Top Bottom