gapkiller 发表于 2012-3-28 15:29:33

如何获取系统播出的音量大小??

本帖最后由 gapkiller 于 2012-3-29 16:34 编辑

不是system master volume
是系统内播出的声音大小, win7下可以看到, 如下图绿色部分, 是一个值, 根据系统播出声音大小可变.


搜索了一下论坛, 都是系统音量大小, 而且win7 下都不能用...

请教~~

再次说明一下, 想要获取的, 不是系统音量大小, 是播出音量大小.
就算系统音量固定为100%, 播出的声音也是有大有小, 我是想要这个值, 类似于声音的波形.
再加300...

shqf 发表于 2012-3-28 16:26:21

感觉bass.dll中有函数应该可以达到楼主的功能要求。

lixiaolong 发表于 2012-3-28 20:06:29

本帖最后由 lixiaolong 于 2012-3-28 20:08 编辑

回复 1# gapkiller

想不到其他方法,把afan版主的代码改了一点.
#include <GuiToolbar.au3>
$vol = GetSystemVolume()
MsgBox(0, '', $vol)

Func GetSystemVolume($frag = 0)
        Local $info, $sR, $i, $i_C, $txt
        Local $hTb = ControlGetHandle('', '', 'ToolbarWindow321')
        For $i = 0 To _GUICtrlToolbar_ButtonCount($hTb) - 1
                $i_C = _GUICtrlToolbar_IndexToCommand($hTb, $i)
                $txt = _GUICtrlToolbar_GetButtonText($hTb, $i_C)

                $sR = StringRegExp($txt, '^扬声器\:\h?(\d+)%', 3)
                If Not @error Then
                        If $frag < UBound($sR) Then
                                $info = $sR[$frag]
                        Else
                                $info = 'error'
                        EndIf
                EndIf
        Next
        Return $info
EndFunc   ;==>GetSystemVolume

zldfsz 发表于 2012-3-28 20:10:04

回复 3# lixiaolong


    要是音量图标被隐藏的就获取不到哦

lixiaolong 发表于 2012-3-28 20:14:01

回复 4# zldfsz

对,就是有这个缺点,论坛里没找到方法...
这个我也想知道方法,我找找其他方法吧.

vason1019 发表于 2012-3-28 20:46:54

不懂调试 看高手解答

zldfsz 发表于 2012-3-28 21:33:22

本帖最后由 zldfsz 于 2012-3-28 22:35 编辑

回复 5# lixiaolong


    不过这样已经好多了,加上你的 这个http://www.autoitx.com/forum.php?mod=viewthread&tid=19941&highlight=
设置音量就更方便了,加个判断,没获取到就用原来的方法,获取到了就根据值的大小来最大或减小,就不用减小到0再增大的方法了,当然如果隐藏时也能判断那就更好了

lixiaolong 发表于 2012-3-28 22:37:55

回复 7# zldfsz

搞定~
#include <GuiToolbar.au3>

MsgBox(0, '', SystemVolume())

Func SystemVolume()
        Local $vol = Win7GetSystemVolume()
        If Not $vol Then $vol = Win7GetSystemVolume(1)
        Return $vol
EndFunc   ;==>SystemVolume

Func Win7GetSystemVolume($frag = 0)
        Local $info, $sR, $i, $i_C, $txt
        Local $Handle = ''
        If $frag Then $Handle = ''
       
        Local $hTb = ControlGetHandle($Handle, '', 'ToolbarWindow321')

        For $i = 0 To _GUICtrlToolbar_ButtonCount($hTb) - 1
                $i_C = _GUICtrlToolbar_IndexToCommand($hTb, $i)
                $txt = _GUICtrlToolbar_GetButtonText($hTb, $i_C)

                $sR = StringRegExp($txt, '^扬声器\:\h?(\d+)%', 1)
                If Not @error Then
                        $info = $sR
                EndIf
        Next
        Return $info
EndFunc   ;==>Win7GetSystemVolume

shuangsexing 发表于 2012-3-28 22:54:35

受用~,学习了~!!

gapkiller 发表于 2012-3-28 22:55:53

回复 8# lixiaolong


    我已经说了, 想得到的不是系统音量大小, 而是播出声音大小.

就是系统产生声音时, 跳动的绿色的部分的值.

lixiaolong 发表于 2012-3-28 23:00:59

回复 10# gapkiller

不好意思,是我没看请{:face (207):}

au3x 发表于 2012-3-28 23:12:13

哇..................................

zldfsz 发表于 2012-3-28 23:20:43

回复 8# lixiaolong


    这真是太爽了,呵呵

afan 发表于 2012-3-29 00:52:07

不知道 gapkiller 搜过类似频谱之类的没有,有用否?

p.s, 8楼的2位评分者的头像上演了一出喜剧……

zldfsz 发表于 2012-3-29 00:56:18

不知道 gapkiller 搜过类似频谱之类的没有,有用否?

p.s, 8楼的2位评分者的头像上演了一出喜剧……
afan 发表于 2012-3-29 00:52 http://www.autoitx.com/images/common/back.gif
呵呵,观察细微,佩服
页: [1] 2 3
查看完整版本: 如何获取系统播出的音量大小??