Hello. You can do something like this.
Opt("MustDeclareVars", 1)
Global Enum $eRender, $eCapture, $eAll, $EDataFlow_enum_count
;~ AudioSessionState
Global Const $CLSCTX_INPROC_SERVER = 0x01
Global Const $eMultimedia = 1
Global Const $sCLSID_MMDeviceEnumerator = "{BCDE0395-E52F-467C-8E3D-C4579291692E}"
Global Const $sIID_IMMDeviceEnumerator = "{A95664D2-9614-4F35-A746-DE8DB63617E6}"
Global Const $sTagIMMDeviceEnumerator = _
"EnumAudioEndpoints hresult(int;dword;ptr*);" & _
"GetDefaultAudioEndpoint hresult(int;int;ptr*);" & _
"GetDevice hresult(wstr;ptr*);" & _
"RegisterEndpointNotificationCallback hresult(ptr);" & _
"UnregisterEndpointNotificationCallback hresult(ptr)"
Global Const $sIID_IMMDevice = "{D666063F-1587-4E43-81F1-B948E807363F}"
Global Const $sTagIMMDevice = _
"Activate hresult(struct*;dword;ptr;ptr*);" & _
"OpenPropertyStore hresult(dword;ptr*);" & _
"GetId hresult(wstr*);" & _
"GetState hresult(dword*)"
Global Const $sIID_IAudioSessionEnumerator = "{e2f5bb11-0570-40ca-acdd-3aa01277dee8}"
Global Const $sTagIAudioSessionEnumerator = "GetCount hresult(int*);GetSession hresult(int;ptr*)"
Global Const $sIID_IAudioEndpointVolume = "{5CDF2C82-841E-4546-9722-0CF74078229A}"
Global Const $sTagIAudioEndpointVolume = _
"RegisterControlChangeNotify hresult(ptr);" & _
"UnregisterControlChangeNotify hresult(ptr);" & _
"GetChannelCount hresult(uint*);" & _
"SetMasterVolumeLevel hresult(float;ptr);" & _
"SetMasterVolumeLevelScalar hresult(float;ptr);" & _
"GetMasterVolumeLevel hresult(float*);" & _
"GetMasterVolumeLevelScalar hresult(float*);" & _
"SetChannelVolumeLevel hresult(uint;float;ptr);" & _
"SetChannelVolumeLevelScalar hresult(uint;float;ptr);" & _
"GetChannelVolumeLevel hresult(uint;float*);" & _
"GetChannelVolumeLevelScalar hresult(uint;float*);" & _
"SetMute hresult(int;ptr);" & _
"GetMute hresult(int*);" & _
"GetVolumeStepInfo hresult(uint*;uint*);" & _
"VolumeStepUp hresult(ptr);" & _
"VolumeStepDown hresult(ptr);" & _
"QueryHardwareSupport hresult(dword*);" & _
"GetVolumeRange hresult(float*;float*;float*)"
Local $pIMMDevice = 0
Local $oMMDevice = 0
Local $oMMDeviceEnumerator = ObjCreateInterface($sCLSID_MMDeviceEnumerator, $sIID_IMMDeviceEnumerator, $sTagIMMDeviceEnumerator)
If Not IsObj($oMMDeviceEnumerator) Then Exit
If FAILED($oMMDeviceEnumerator.GetDefaultAudioEndpoint($eCapture, $eMultimedia, $pIMMDevice)) Then Exit
ConsoleWrite("$pIMMDevice: " & $pIMMDevice & @CRLF)
$oMMDevice = ObjCreateInterface($pIMMDevice, $sIID_IMMDevice, $sTagIMMDevice)
If Not IsObj($oMMDevice) Then Exit
ConsoleWrite("IsObj($oMMDevice): " & IsObj($oMMDevice) & @CRLF)
Local $pIAudioEndpointVolume = 0
Local $oIAudioEndpointVolume = 0
If FAILED($oMMDevice.Activate(__uuidof($sIID_IAudioEndpointVolume), $CLSCTX_INPROC_SERVER, 0, $pIAudioEndpointVolume)) Then Exit
ConsoleWrite("$pIAudioEndpointVolume: " & $pIAudioEndpointVolume & @CRLF)
$oIAudioEndpointVolume = ObjCreateInterface($pIAudioEndpointVolume, $sIID_IAudioEndpointVolume, $sTagIAudioEndpointVolume)
ConsoleWrite("IsObj($oIAudioEndpointVolume): " & IsObj($oIAudioEndpointVolume) & @CRLF)
Local $bMute = 0
$oIAudioEndpointVolume.GetMute($bMute)
ConsoleWrite("Mute: " & $bMute & @CRLF)
Sleep(3000)
$bMute = $bMute ? 0 : 1 ;Set Mute Exchange State
ConsoleWrite("Set Mute To: " & $bMute & @CRLF)
$oIAudioEndpointVolume.SetMute($bMute, 0)
Exit
Func FAILED($hr)
Return ($hr < 0)
EndFunc ;==>FAILED
Func __uuidof($sGUID)
Local $tGUID = DllStructCreate("ulong Data1;ushort Data2;ushort Data3;byte Data4[8]")
DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", $sGUID, "struct*", $tGUID)
If @error Then Return SetError(@error, @extended, 0)
Return $tGUID
EndFunc ;==>__uuidof
Saludos