Что нового

Громкость микшера

VadimKHL

Новичок
Сообщения
155
Репутация
0
Добрый день!

Каким способом можно получить текущий уровень громкости микшера (главного устройства)?
 
Автор
V

VadimKHL

Новичок
Сообщения
155
Репутация
0
Re: Микшер Windows

Redline сказал(а):
Библиотека во вложении, сам не тестировал.
Посмотри вот эти функции:
Код:
_SoundSetMasterVolume($iVolume)               - Sets the Master Volume. Does not control an application's volume
_SoundGetMasterVolume                         - Gets the Master Volume level
_SoundSetMicrophoneVolume                     - Sets the Microphone input volume
_SoundGetMicrophoneVolume                     - Gets the Microphone volume level

Добрый день!
А как скачать библиотеку?
 
Автор
V

VadimKHL

Новичок
Сообщения
155
Репутация
0
Re: Re: Микшер Windows

Не получается управлять и считывать громкость микшера.
Подскажите, что делаю не так?
Код:
#include <SoundGetSetQuery.au3>
_SoundSetMasterVolume(60)
MsgBox(0, "Volume", _SoundGetMasterVolume())
Exit
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Re: Re: Микшер Windows

Какая у Вас операционная система ?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Re: Re: Микшер Windows

Эта UDF с Windows Vista и выше работать не будет - об этом прямо внутри библиотеки написано.
 
Автор
V

VadimKHL

Новичок
Сообщения
155
Репутация
0
Re: Re: Микшер Windows

Печаль.
А как тогда можно с микшером работать в Win7?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Re: Re: Микшер Windows

Есть програмка "NirCmd ", которая позволяет из командной строки регулировать уровень громкости звука (и ещё много других параметров) . Это первое, что на ум пришло :scratch:
Код:
Run('nircmd.exe setsysvolume 65535')

Только учтите, что "65535" соответствует максимальной громкости.
 
Автор
V

VadimKHL

Новичок
Сообщения
155
Репутация
0
Re: Re: Микшер Windows

Но у ней нет команды считать текущую громкость? :scratch:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
VadimKHL вы видели что тема решена, зачем туда писать?! Неужели так трудно продолжить свою тему!

P.S. Ну что за мания у людей! :mad:
 
Автор
V

VadimKHL

Новичок
Сообщения
155
Репутация
0
Garrett сказал(а):
VadimKHL вы видели что тема решена, зачем туда писать?! Неужели так трудно продолжить свою тему!

P.S. Ну что за мания у людей! :mad:

Ок.

Что же делать с моим вопросом? Как еще можно получить громкость микшера?
Мне конкретно нужно отловить 0%.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
; создание объекта IAudioEndpointVolume
$oVolume = GetVolumeObject()
If @error Then Exit ConsoleWrite("!Error " & @error & @CRLF)

; текущий уровень (от 0.0 до 1.0)
Global $iLevel
$oVolume.GetMasterVolumeLevelScalar($iLevel)
ConsoleWrite("Уровень звука : " & Round($iLevel * 100) & "%" & @CRLF)

; установка уровня (от 0.0 до 1.0)
$iLevel = 0.34 ; 34%
$oVolume.SetMasterVolumeLevelScalar($iLevel, 0)

; включение (0) или отключение (1) звука
Global $fMute = True
$oVolume.SetMute($fMute, 0)

; проверка отключения звука
$oVolume.GetMute($fMute)
ConsoleWrite("Звук отключён : " & ($fMute = True) & @CRLF)

; --------------------

Func GetVolumeObject()
  Local Const $CLSCTX_INPROC_SERVER = 0x1
  Local Const $sCLSID_MMDeviceEnumerator = "{BCDE0395-E52F-467C-8E3D-C4579291692E}"
  Local Const $sIID_IMMDeviceEnumerator = "{A95664D2-9614-4F35-A746-DE8DB63617E6}"
  Local Const $tagIMMDeviceEnumerator = "EnumAudioEndpoints hresult(dword;dword;ptr*);" & _
                                        "GetDefaultAudioEndpoint hresult(dword;dword;ptr*);" & _
                                        "GetDevice hresult(wstr;ptr*);" & _
                                        "RegisterEndpointNotificationCallback hresult(ptr);" & _
                                        "UnregisterEndpointNotificationCallback hresult(ptr);"
  Local Const $sIID_IMMDevice = "{D666063F-1587-4E43-81F1-B948E807363F}"
  Local Const $tagIMMDevice = "Activate hresult(clsid;dword;variant*;ptr*);" & _
                              "OpenPropertyStore hresult(dword;ptr*);" & _
                              "GetId hresult(ptr*);" & _
                              "GetState hresult(dword*);"
  Local Const $sIID_IAudioEndpointVolume = "{5CDF2C82-841E-4546-9722-0CF74078229A}"
  Local Const $tagIAudioEndpointVolume = "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 $oMMDeviceEnumerator = ObjCreateInterface($sCLSID_MMDeviceEnumerator, $sIID_IMMDeviceEnumerator, $tagIMMDeviceEnumerator)
  If Not IsObj($oMMDeviceEnumerator) Then Return SetError(1, 0, 0)
  Local $eRender, $eConsole, $pDefaultDevice, $pEndpointVolume
  $oMMDeviceEnumerator.GetDefaultAudioEndpoint($eRender, $eConsole, $pDefaultDevice)
  Local $oDefaultDevice = ObjCreateInterface($pDefaultDevice, $sIID_IMMDevice, $tagIMMDevice)
  If Not IsObj($oDefaultDevice) Then Return SetError(2, 0, 0)
  $oDefaultDevice.Activate($sIID_IAudioEndpointVolume, $CLSCTX_INPROC_SERVER, 0, $pEndpointVolume)
  Local $oEndpointVolume = ObjCreateInterface($pEndpointVolume, $sIID_IAudioEndpointVolume, $tagIAudioEndpointVolume)
  If Not IsObj($oEndpointVolume) Then Return SetError(3, 0, 0)
  Return $oEndpointVolume
EndFunc
 
Автор
V

VadimKHL

Новичок
Сообщения
155
Репутация
0
InnI, Все получилось! Спасибо.

Как я понял в примере есть такие функции:
Код:
"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*)"


А их описание есть где, как их пользовать?
 
Верх