Что нового

Как правильно записать функцию _SoundGetMasterVolume() (прикрепил видео)?

agikon

Знающий
Сообщения
789
Репутация
17
Зашел в тупик.
вот хочу написать порграммку которая бы измеряла уровень звука в процентах.
чтобы при нажатии на кнопку появлялся окошко с числовым представлением сколько громкость в процентах на данном компьютере.

подскажите пожалуйста что не так делаю?
Код:
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>
#include <GUICtrlCreateTFLabel.au3>
#include <_Audio.au3>     ;  

Opt("TrayMenuMode",0) ;3

$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()
	$Level = _SoundGetMasterVolume()
	MsgBox(64,'Info','Уровень громкости '&$Level&'  !!!' ) ;
EndFunc


вот инклуд аудио http://zalil.ru/31823591
 

Arei

Скриптер
Сообщения
938
Репутация
115
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

подскажите пожалуйста что не так делаю?
По меньшей мере,надо прикрепить библиотеки.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

В аттаче нормальная библиотека, используйте ее.
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

да почему-то вообще не реагирует на _SoundGetMasterVolume()

вот даже так не реагирует, сразу скрипт закрывается, но окошко не появляется.
Код:
Func _chek_vol()
if _SoundGetMasterVolume() > 50 then
	MsgBox(64,'Info', 'громкость больше 50') ;
Else
        MsgBox(64,'Info', 'громкость меньше 50') ;
endif
EndFunc
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

agikon
Какая у тебя система, ХР или Вин 7?


Добавлено:
Сообщение автоматически объединено:

По совету AZJIO нашел здесь http://www.autoitscript.com/forum/topic/84834-control-vista-master-volume/ vista_vol.dll от wraithdu
Позволяет получить громкость в Вин 7, и многое другое

agikon

Вот так попробуй(vista_vol.dll должна быть в папке со скриптом):


Код:
#include <GUIConstantsEx.au3>

Opt("TrayMenuMode",0) ;3
$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()
$hDLL = PluginOpen("vista_vol.dll")
$Level = _GetMasterVolumeScalar_Vista()
PluginClose($hDLL)   
MsgBox(64,'Info','Уровень громкости '&Round($Level)&'  !!!' ) ;
EndFunc
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

на первом компе XP, на втором 7.
все вот эти скрипты компилирую и запускаю в xp.
в 7-ке не проверял ещё.

WSWR
спасибо за 7-к но мне бы сначала понять как в xp это сделать.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

agikon
на первом компе XP, на втором 7.
все вот эти скрипты компилирую и запускаю в xp.
в 7-ке не проверял ещё.
Ну, вот и проверишь :smile:
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

WSWR
но мне бы надо для XP, для 7 мне не надо, во всяком случае пока не надо, мне главней xp :scratch:

а у вас работает функция SoundGetMasterVolume() на XP ?
может я инклуд не тот использую?
я использую _Audio.au3. я его он выложил выше.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

agikon
Audio.au3 - не работает, бери SoundGetSetQuery.au3, выше Yashied
ее выложил

Такой вариант должен работать на обеих системах:
Код:
#include <GUIConstantsEx.au3>
#include <SoundGetSetQuery.au3>

Opt("TrayMenuMode",0) ;3
$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()
Select
Case @OSVersion == "WIN_7"
$hDLL = PluginOpen("vista_vol.dll")
$Level = _GetMasterVolumeScalar_Vista()
PluginClose($hDLL) 
Case @OSVersion == "WIN_XP" 
$Level =_SoundGetMasterVolume()
EndSelect
MsgBox(64,'Info','Уровень громкости '&Round($Level)&'  !!!' ) ;
EndFunc
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

WSWR
Yashied выложил SoundQuery.au3 (она у меня не работает, ошибки при компиляции), а вы говорите про SoundGetSetQuery.au3.
вот вы используете именно SoundGetSetQuery.au3, скиньте пожалуйста её.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

agikon
http://www.autoitscript.com/forum/topic/54048-audioau3/page__hl__soundgetsetquery__fromsearch__1
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

WSWR
вот такуую ошибку выдаёт при компиляции вашего кода

Код:
C:\Program Files\AutoIt3\Include\SoundGetSetQuery.au3(1219,130) : WARNING: $LVS_REPORT: possibly used before declaration.
	Local $hListView = GUICtrlCreateListView("MixerID|ComponentType|CompInst|ControlType|Value", 10, 10, 380, 530, BitOR($LVS_REPORT,
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\SoundGetSetQuery.au3(1219,149) : WARNING: $LVS_NOSORTHEADER: possibly used before declaration.
	Local $hListView = GUICtrlCreateListView("MixerID|ComponentType|CompInst|ControlType|Value", 10, 10, 380, 530, BitOR($LVS_REPORT, $LVS_NOSORTHEADER)
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\SoundGetSetQuery.au3(1219,130) : ERROR: $LVS_REPORT: undeclared global variable.
	Local $hListView = GUICtrlCreateListView("MixerID|ComponentType|CompInst|ControlType|Value", 10, 10, 380, 530, BitOR($LVS_REPORT,
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\Admin\Рабочий стол\звук\звук.au3(23,39) : ERROR: _GetMasterVolumeScalar_Vista(): undefined function.
$Level = _GetMasterVolumeScalar_Vista()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\Admin\Рабочий стол\звук\звук.au3 - 2 error(s), 2 warning(s)




инклудом лежит в папку инклудов SoundGetSetQuery.au3
vista_vol.dll лежит п папке с скриптом.
компилирую в XP
 

AZJIO

Меценат
Меценат
Сообщения
2,878
Репутация
1,194
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

agikon
Для начала проверь, работает ли утилитка VolCon.
И попробуй ещё так
Код:
#include <SoundGetSetQuery.au3>
MsgBox(0, 'Message', _SoundGetMasterVolume())


Кстати, я же говроил о SoundGetSetQuery.au3, а не про Audio.au3
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Re: Как правильно записать функцию _SoundGetMasterVolume() ?

вот видео http://zalil.ru/31827872

что можете посоветовать?
 

Dm666

Осваивающий
Сообщения
221
Репутация
48
agikon [?]
что можете посоветовать?
Пример от WSWR (#8) вполне себе рабочий, во всяком случае на ХР. Да, ругается при компиляции, но ведь работает же! :ok:
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
ну вы видите что на видео две ошибки выдаёт.
так как быть?

я не пойму как вы говорите что ругается но работает. как онможет работать если он даже не компилирует?
где экзешник взять?
обьясните пожалуйста.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
У меня компилирует нормально :whistle:
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
WSWR
скиньте пожалуйста ваш #include <SoundGetSetQuery.au3>
возможно у меня он старый.
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
мда
получилось!
а знаете как?
при компиляции нажал на кнрпку "continue anyway", и оно скомпилировало, и экзешник запускается и нормально робит.
от такие чудеса случаются.
 
Верх