如何控制系统音量

2016-02-19 17:54 87 1 收藏

下面是个简单易学的如何控制系统音量教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - 编程语言 】

->'thankstoRickRatayczakofFutureWorksMedia(rickr@execpc.com)
  'savefileandrenamethemto[name].BAS
  
  AttributeVB_Name="MIXER"
  '****************************************************************************
  '*ThisconstantholdsthevalueoftheHighestCustomvolumesetting.The*
  '*lowestvaluewillalwaysbezero.*
  '****************************************************************************
  PublicConstHIGHEST_VOLUME_SETTING=12
  
  'Puttheseintoamodule
  'deviceIDforauxdevicemapper
  PublicConstAUX_MAPPER=-1&
  PublicConstMAXPNAMELEN=32
  
  TypeAUXCAPS
  wMidAsInteger
  wPidAsInteger
  vDriverVersionAsLong
  szPnameAsString*MAXPNAMELEN
  wTechnologyAsInteger
  dwSupportAsLong
  EndType
  
  'flagsforwTechnologyfieldinAUXCAPSstructure
  PublicConstAUXCAPS_CDAUDIO=1'audiofrominternalCD-ROMdrive
  PublicConstAUXCAPS_AUXIN=2'audiofromauxiliaryinputjacks
  
  'flagsfordwSupportfieldinAUXCAPSstructure
  PublicConstAUXCAPS_VOLUME=&H1'supportsvolumecontrol
  PublicConstAUXCAPS_LRVOLUME=&H2'separateleft-rightvolumecontrol
  
  DeclareFunctionauxGetNumDevsLib"winmm.dll"()AsLong
  DeclareFunctionauxGetDevCapsLib"winmm.dll"Alias"auxGetDevCapsA"(ByValuDeviceIDAsLong,lpCapsAsAUXCAPS,ByValuSizeAsLong)AsLong
  
  DeclareFunctionauxSetVolumeLib"winmm.dll"(ByValuDeviceIDAsLong,ByValdwVolumeAsLong)AsLong
  DeclareFunctionauxGetVolumeLib"winmm.dll"(ByValuDeviceIDAsLong,ByReflpdwVolumeAsLong)AsLong
  DeclareFunctionauxOutMessageLib"winmm.dll"(ByValuDeviceIDAsLong,ByValmsgAsLong,ByValdw1AsLong,ByValdw2AsLong)AsLong
  
  '****************************************************************************
  '*PossibleReturnvaluesfromauxGetVolume,auxSetVolume*
  '****************************************************************************
  PublicConstMMSYSERR_NOERROR=0
  PublicConstMMSYSERR_BASE=0
  PublicConstMMSYSERR_BADDEVICEID=(MMSYSERR_BASE 2)
  
  '****************************************************************************
  '*UsetheCopyMemoryfunctionfromtheWindowsAPI*
  '****************************************************************************
  PublicDeclareSubCopyMemoryLib"kernel32"Alias"RtlMoveMemory"(hpvDestAsAny,hpvSourceAsAny,ByValcbCopyAsLong)
  
  '****************************************************************************
  '*UsethisstructuretobreaktheLongintotwoIntegers*
  '****************************************************************************
  PublicTypeVolumeSetting
  LeftVolAsInteger
  RightVolAsInteger
  EndType
  
  SublCrossFader()
  'Vol1=100-Slider1.Value'Left
  'Vol2=100-Slider5.Value'Right
  'E=CrossFader.Value
  'F=100-E
  'IfCheck4.Value=1Then'HalfFaderCheck
  'LVol=(F*Val(Vol1)/100)*2
  'RVol=(E*Val(Vol2)/100)*2
  'IfLVol(50*Val(Vol1)/100)*2Then
  'LVol=(50*Val(Vol1)/100)*2
  'EndIf
  'IfRVol(50*Val(Vol2)/100)*2Then
  'RVol=(50*Val(Vol2)/100)*2
  'EndIf
  'Else
  'LVol=(F*Val(Vol1)/100)
  'RVol=(E*Val(Vol2)/100)
  'EndIf
  'Label1.Caption="Fader:" LTrim$(Str$(LVol)) "x" LTrim$(Str$(RVol))
  '
  EndSub
  
  
  PublicFunctionlSetVolume(ByReflLeftVolAsLong,ByReflRightVolAsLong,lDeviceIDAsLong)AsLong
  '****************************************************************************
  '*ThisfunctionsetsthecurrentWindowsvolumesettingstothespecified*
  '*deviceusingtwoCustomnumbersfrom0toHIGHEST_VOLUME_SETTINGforthe*
  '*rightandleftvolumesettings.*
  '**
  '*ThereturnvalueofthisfunctionistheReturnvalueoftheauxGetVolume*
  '*WindowsAPIcall.*
  '****************************************************************************
  
  DimbReturnValueAsBoolean'ReturnValuefromFunction
  DimVolumeAsVolumeSetting'Typestructureusedtoconvertalongto/from
  'twoIntegers.
  
  DimlAPIReturnValAsLong'ReturnvaluefromAPICall
  DimlBothVolumesAsLong'TheAPIpassedvalueoftheCombinedVolumes
  
  
  '****************************************************************************
  '*CalculatetheIntegers*
  '****************************************************************************
  Volume.LeftVol=nSigned(lLeftVol*65535/HIGHEST_VOLUME_SETTING)
  Volume.RightVol=nSigned(lRightVol*65535/HIGHEST_VOLUME_SETTING)
  
  '****************************************************************************
  '*CombinetheIntegersintoaLongtobePassedtotheAPI*
  '****************************************************************************
  lDataLen=Len(Volume)
  CopyMemorylBothVolumes,Volume.LeftVol,lDataLen
  
  '****************************************************************************
  '*SettheValuetotheAPI*
  '****************************************************************************
  lAPIReturnVal=auxSetVolume(lDeviceID,lBothVolumes)
  lSetVolume=lAPIReturnVal
  
  EndFunction
  
  
  PublicFunctionlGetVolume(ByReflLeftVolAsLong,ByReflRightVolAsLong,lDeviceIDAsLong)AsLong
  '****************************************************************************
  '*ThisfunctionreadsthecurrentWindowsvolumesettingsfromthe*
  '*specifieddevice,andreturnstwonumbersfrom0to*
  '*HIGHEST_VOLUME_SETTINGfortherightandleftvolumesettings.*
  '**
  '*ThereturnvalueofthisfunctionistheReturnvalueoftheauxGetVolume*
  '*WindowsAPIcall.*
  '****************************************************************************
  
  DimbReturnValueAsBoolean'ReturnValuefromFunction
  DimVolumeAsVolumeSetting'Typestructureusedtoconvertalongto/from
  'twoIntegers.
  DimlAPIReturnValAsLong'ReturnvaluefromAPICall
  DimlBothVolumesAsLong'TheAPIReturnoftheCombinedVolumes
  
  '****************************************************************************
  '*GettheValuefromtheAPI*
  '****************************************************************************
  lAPIReturnVal=auxGetVolume(lDeviceID,lBothVolumes)
  
  '****************************************************************************
  '*SplittheLongvaluereturnedfromtheAPIintotoIntegers*
  '****************************************************************************
  lDataLen=Len(Volume)
  CopyMemoryVolume.LeftVol,lBothVolumes,lDataLen
  
  '****************************************************************************
  '*CalculatetheReturnValues.*
  '****************************************************************************
  lLeftVol=HIGHEST_VOLUME_SETTING*lUnsigned(Volume.LeftVol)/65535
  lRightVol=HIGHEST_VOLUME_SETTING*lUnsigned(Volume.RightVol)/65535
  
  lGetVolume=lAPIReturnVal
  EndFunction
  
  PublicFunctionnSigned(ByVallUnsignedIntAsLong)AsInteger
  DimnReturnValAsInteger'ReturnvaluefromFunction
  
  IflUnsignedInt65535OrlUnsignedInt0Then
  MsgBox"ErrorinconversionfromUnsignedtonSignedInteger"
  nSignedInt=0
  ExitFunction
  EndIf
  
  IflUnsignedInt32767Then
  nReturnVal=lUnsignedInt-65536
  Else
  nReturnVal=lUnsignedInt
  EndIf
  
  nSigned=nReturnVal
  
  EndFunction
  
  PublicFunctionlUnsigned(ByValnSignedIntAsInteger)AsLong
  DimlReturnValAsLong'ReturnvaluefromFunction
  
  IfnSignedInt0Then
  lReturnVal=nSignedInt 65536
  Else
  lReturnVal=nSignedInt
  EndIf
  
  IflReturnVal65535OrlReturnVal0Then
  MsgBox"ErrorinconversionfromnSignedtoUnsignedInteger"
  lReturnVal=0
  EndIf
  
  lUnsigned=lReturnVal
  EndFunction->->

来源:http://www.tulaoshi.com/n/20160219/1616348.html

延伸阅读
标签: 电脑入门
当我们在认真的电脑打电话语音的时候,有时候会出现一些突如其来的声音,比如QQ上下线声,比如一些软件发出的声响,如果我们音量开的较大,这些声音也会相应的变大,会影响到我们看电影或者玩游戏,那么在Win8系统下我们如何把这些其它声音音量减小呢?Win8实现自动调整其他声音的音量的方法如下: 1、右键单击桌面空白处,桌面下方弹出所有应...
编者按:Authorware是我们制作课件时常用的工具。在Authorware中,要想随心所欲地控制课件中音乐的音量不是那么容易。平时也看到过一些介绍控制音量的文章:有的是用两个按钮来控制,一个控制音量增大,一个控制音量减小;另外也有用滑动条来实现的。以上方法往往都要用外部函数来实现,而且效果并不能尽如人意--用按钮控制的话不够直观,而用...
标签: 电脑入门
在电脑出现了问题,或者是不在电脑面前的时候,我们可以通过远程控制来达到我们的目的。不过许多MAC用户不知道该如何在MAC中开启远程控制。现在图老师小编就教大家如何在MAC系统中开启远程控制吧。 原理 mac的屏幕共享功能根本就是vnc-based的,而vnc则是一个还算广泛使用的远程控制通讯指令,可以进行夸平台操作,所以它是可以供其它os...
本人用Authorware制作课件已有三年历史了,因此常有同事向我请教。这不,又来了一个问题:“用Authorware制作课件时,如何加入音量控制程序?”。考虑到Authorware的外部函数功能比较强大,因此决定使用外部函数调用Windows自带的音量控制程序从而实现音量控制。 具体方法如下: 1. 启动Authorware6.5,新建一个文件并且保存,文...
孩子戴耳机听歌影响听力 * 男孩 天天带耳机听音乐 成了小“聋”人 陈颖(化名)是名15岁的广州仔,一周前,他就感觉早上起来耳朵痛、有嗡鸣声、听话不清,他原以为是熬夜打游戏过头,但休息两天也不见好。其母告知医生,6月中考结束后就给宝贝买了台PSP,他随时随地都在听音乐,坐车也听、...

经验教程

787

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部