打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
音量调节函数 VC
//////////////////////////////////////////////////////////////////////////
// 音量调节函数
//////////////////////////////////////////////////////////////////////////
// 调节系统音量 

//-------------------------------------------------------------------------- 
//  函数: SetVolume(int AudioIndex,long NewPos); 
//  参数: AudioIndex 是音频设备的序列,默认的设备就是0 
//  参数: NewPos: 音量大小,1--100之间 
//--------------------------------------------------------------------------- 
#include <mmsystem.h> 

bool GetVolumeControl( HMIXER hmixer ,long componentType,long ctrlType,MIXERCONTROL* mxc) 
MIXERLINECONTROLS mxlc; 
MIXERLINE mxl; 
mxl.cbStruct = sizeof(mxl); 
mxl.dwComponentType = componentType; 
if(!mixerGetLineInfo((HMIXEROBJ)hmixer, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE)) 
mxlc.cbStruct = sizeof(mxlc); 
mxlc.dwLineID = mxl.dwLineID; 
mxlc.dwControlType = ctrlType; 
mxlc.cControls = 1; 
mxlc.cbmxctrl = sizeof(MIXERCONTROL); 
mxlc.pamxctrl = mxc; 
if(mixerGetLineControls((HMIXEROBJ)hmixer,&mxlc,MIXER_GETLINECONTROLSF_ONEBYTYPE)) 
return 0; 
else 
return 1; 
return 0; 

//--------------------------------------------------------------------------- 
unsigned GetVolumeValue( HMIXER hmixer, MIXERCONTROL *mxc) 
MIXERCONTROLDETAILS mxcd; 
MIXERCONTROLDETAILS_UNSIGNED vol; vol.dwValue=0; 
mxcd.hwndOwner = 0; 
mxcd.cbStruct = sizeof(mxcd); 
mxcd.dwControlID = mxc->dwControlID; 
mxcd.cbDetails = sizeof(vol); 
mxcd.paDetails = &vol; 
mxcd.cChannels = 1; 
if(mixerGetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE)) 
return -1; 
return vol.dwValue; 

//--------------------------------------------------------------------------- 

bool SetVolumeValue( HMIXER hmixer, MIXERCONTROL *mxc, long volume) 
MIXERCONTROLDETAILS mxcd; 
MIXERCONTROLDETAILS_UNSIGNED vol;vol.dwValue = volume; 
mxcd.hwndOwner = 0; 
mxcd.dwControlID = mxc->dwControlID; 
mxcd.cbStruct = sizeof(mxcd); 
mxcd.cbDetails = sizeof(vol); 
mxcd.paDetails = &vol; 
mxcd.cChannels = 1; 
if(mixerSetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_SETCONTROLDETAILSF_VALUE)) 
return 0; 
return 1; 


//--------------------------------------------------------------------------- 
unsigned WINAPI GetVolume(int dev)//得到设备的音量dev=0主音量,1WAVE ,2MIDI ,3 CD
{
long device;unsigned rt=0; 
MIXERCONTROL volCtrl; 
HMIXER hmixer; 

switch (dev) 
case 1: 
device=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break; 
case 2: 
device=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break; 
case 3: 
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break; // cd 音量 
case 4:
device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; break; //麦克风音量 
case 5:
device=MIXERLINE_COMPONENTTYPE_SRC_LINE; break; //PC 扬声器音量 
default: 
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; 

if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0; 
if(!GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_VOLUME,&volCtrl)) 
return 0; 
rt=GetVolumeValue(hmixer,&volCtrl)*100/volCtrl.Bounds.lMaximum; 
mixerClose(hmixer); 
return rt;

//--------------------------------------------------------------------------- 

bool WINAPI SetVolume( long dev, long vol)//设置设备的音量 
// dev =0,1,2 分别表示主音量,波形,MIDI ,CD
// vol=0-100 表示音量的大小 , 设置与返回音量的值用的是百分比,即音量从0 - 100,而不是设备的绝对值 
// retrun false 表示设置音量的大小的操作不成功 
// retrun true 表示设置音量的大小的操作成功 

long device; 
bool rc=false; 
MIXERCONTROL volCtrl; 
HMIXER hmixer;

switch (dev) 
case 1: 
device=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break; 
case 2: 
device=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break; 
case 3: 
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break; // cd 音量 
case 4:
device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; break; //麦克风音量 
case 5:
device=MIXERLINE_COMPONENTTYPE_SRC_LINE; break; //PC 扬声器音量 
default: 
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; 

if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0; 

if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_VOLUME,&volCtrl)) 
vol=vol*volCtrl.Bounds.lMaximum/100; 
if(SetVolumeValue(hmixer,&volCtrl,vol)) 
rc=true; 
mixerClose(hmixer); 
return rc; 
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何获取麦克风实时输入音量,并转换为百分比
求一个自动控制电脑音量的VB程序
如何在网页中插入音乐播放器?
请把音量关细【1】
每日教你学唱歌,如何正确提高音量?
16种最变态的调音量方式,看完摔了手机!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服