如何控制系统音量

zxy453884057

zxy453884057

2016-02-19 17:54

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

展开更多 50%)
分享

猜你喜欢

如何控制系统音量

编程语言 网络编程
如何控制系统音量

Maya 设置腿部骨骼控制系统

设计软件 平面设计软件 广告设计软件
Maya 设置腿部骨骼控制系统

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

实现基于Spring框架应用的权限控制系统

编程语言 网络编程
实现基于Spring框架应用的权限控制系统

CVS RCS HOWTO 原始程式码版本控制系统 (3)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
CVS RCS HOWTO 原始程式码版本控制系统 (3)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

CVS RCS HOWTO 原始程式码版本控制系统 (2)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
CVS RCS HOWTO 原始程式码版本控制系统 (2)

CVS RCS HOWTO 原始程式码版本控制系统 (1)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
CVS RCS HOWTO 原始程式码版本控制系统 (1)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

URL编码处理

URL编码处理

一个极有可能引发ExecutionEngineException的情况

一个极有可能引发ExecutionEngineException的情况
下拉加载更多内容 ↓