Что нового

Можно ли узнать включён/выключен/в какой позиции звук в системе

Andrey_A

Продвинутый
Сообщения
323
Репутация
68
Подскажите пожалуйста
1. Можно ли узнать включён или выключен звук в системе?
2. Если не выключен как получить процент звука?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
http://autoit-script.ru/index.php/topic,6991.0.html
http://autoit-script.ru/index.php/topic,1342.0.html
 
Автор
A

Andrey_A

Продвинутый
Сообщения
323
Репутация
68
InnI, Спасибо за ссылки, но эта тема для новичков... в одной ссылке для XP, в другой пример с Vista_Vol.dll и функцию я не нашёл...
если честно хотелось бы выборку из этого - я пока не смог этого сделать, если не трудно можно ли здесь выложить общую функцию, чтобы она работала для всех систем.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Andrey_A

Для XP и Win 7:
Код:
#include <GUIConstantsEx.au3>
#include <SoundGetSetQuery.au3>
#include <_AudioEndpointVolume.au3>

$GUI = GUICreate('Звукоизмеритель', 260, 100)
$nButton = GUICtrlCreateButton('Узнать уровень звука в %', 30, 40, 160, 30)
GUISetState(@SW_SHOWNORMAL, $GUI)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			_chek_vol()
	EndSwitch
WEnd

Func _chek_vol()
	Switch @OSVersion
		Case 'WIN_7'
			$Level = _GetMasterVolumeLevelScalar()			
		Case 'WIN_XP'
			$Level = _SoundGetMasterVolume()
	EndSwitch
	MsgBox(64, 'Info', 'Уровень громкости ' & Round($Level))
EndFunc   ;==>_chek_vol


_AudioEndpointVolume.au3 (для Win 7) отсюда:
http://www.autoitscript.com/forum/topic/84834-control-vista-master-volume/

SoundQuery.au3 (для XP) отсюда:
http://autoit-script.ru/index.php?topic=6996.msg48261#msg48261

Для Win 7 работает в Autoit от 3.3.8.0 и выше
 
Автор
A

Andrey_A

Продвинутый
Сообщения
323
Репутация
68
WSWR, спасибо, этот пример работает и на Vista, а будет ли это работать и на XP? или на XP другая функция?
Просто пробую писать утилиту - со многим нет проблем, но со звуком произошла загвоздка. Если есть те, у кого XP отпишитесь пожалуйста.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Проверил на XP и на Win7.
Архив с SoundQuery.au3 и Vista_Vol.dll брать здесь: http://www.autoitscript.com/forum/topic/133088-auto-volume-control/#entry927545
Код:
#include <SoundQuery.au3>

Global $VistaVol, $PluginVol
Global $VistaVolDll = @ScriptDir & '\Vista_Vol.dll'
Global $vol, $mute

_OSCheck()
If $VistaVol Then
  $PluginVol = PluginOpen($VistaVolDll)
EndIf

#AutoIt3Wrapper_Plugin_Funcs = _GetMasterVolumeScalar_Vista, _SetMasterVolumeScalar_Vista, _IsMute_Vista, _SetMute_Vista

If $VistaVol then
  $vol = Round(_GetMasterVolumeScalar_Vista())
  $mute = _IsMute_Vista()
Else
  $vol = Round(_SoundGetMasterVolume())
  $mute = _SoundGetMasterMute()
EndIf

MsgBox(0, "", "Уровень звука: " & $vol & @CRLF & "Звук включён (0-да, 1-нет): " & $mute)

Func _OSCheck()
  If @OSType = 'WIN32_NT' Then
    Switch @OSVersion
      Case 'WIN_2000', 'WIN_XP', 'WIN_2003'
        $VistaVol = 0
        Return
      Case 'WIN_VISTA', 'WIN_2008', 'WIN_7'
        $VistaVol = 1
        Return
    EndSwitch
  EndIf
EndFunc
 
Автор
A

Andrey_A

Продвинутый
Сообщения
323
Репутация
68
InnI, спасибо - то что надо, попробую объединить два примера, чтобы не подключать dll.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Andrey_A [?]
попробую объединить два примера, чтобы не подключать dll
Вам же WSWR написал пример, работающий на обеих системах, и не требующий dll.
 
Автор
A

Andrey_A

Продвинутый
Сообщения
323
Репутация
68
InnI? спасибо, видимо WSWR дописал позже.
Всем огромная благодарность. Вопрос решён быстро и полно!
 
Верх