怎样调整 PC 喇叭的音量? rt 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/code/listcode.asp?mclsid=7&sclsid=707&page=2 音频技术源代码:ADMixer_Volume 音频技术源代码:ADMixer_Mute //----------------------------设定音量---------------------------------------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;elsereturn 1;}return 0;}//---------------------------------------------------------------------------long GetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc){MIXERCONTROLDETAILS mxcd;MIXERCONTROLDETAILS_BOOLEAN mxcdMute;mxcd.hwndOwner = 0;mxcd.cbStruct = sizeof(mxcd);mxcd.dwControlID = mxc->dwControlID;mxcd.cbDetails = sizeof(mxcdMute);mxcd.paDetails = &mxcdMute;mxcd.cChannels = 1;mxcd.cMultipleItems = 0;if (mixerGetControlDetails((HMIXEROBJ)hmixer, &mxcd,MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE))return -1;return mxcdMute.fValue;}//---------------------------------------------------------------------------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 SetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc, bool mute){MIXERCONTROLDETAILS mxcd;MIXERCONTROLDETAILS_BOOLEAN mxcdMute;mxcdMute.fValue=mute;mxcd.hwndOwner = 0;mxcd.dwControlID = mxc->dwControlID;mxcd.cbStruct = sizeof(mxcd);mxcd.cbDetails = sizeof(mxcdMute);mxcd.paDetails = &mxcdMute;mxcd.cChannels = 1;mxcd.cMultipleItems = 0;if (mixerSetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_SETCONTROLDETAILSF_VALUE))return 0;return 1;}//---------------------------------------------------------------------------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 LINE IN{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 音量// device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; break; //麦克风音量// device=MIXERLINE_COMPONENTTYPE_SRC_LINE; break; //PC 扬声器音量device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break;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 ,LINE IN// 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;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;}//---------------------------------------------------------------------------bool WINAPI SetMute(long dev,long vol)//设置设备静音{// dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN// vol=0,1 分别表示取消静音,设置静音// 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;default:device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;}if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_MUTE,&volCtrl))if(SetMuteValue(hmixer,&volCtrl,(bool)vol))rc=true;mixerClose(hmixer);return rc;}//---------------------------------------------------------------------------bool WINAPI GetMute(long dev)//检查设备是否静音{//dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN// 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;default:device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;}if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_MUTE,&volCtrl))rc=GetMuteValue(hmixer,&volCtrl);mixerClose(hmixer);return rc;}使用://调节音量void __fastcall TForm1::TrackBar0Change(TObject *Sender){SetVolume(0,TrackBar0->Position*10);}//静音void __fastcall TForm1::CheckBox0Click(TObject *Sender){SetMute(0,CheckBox0->Checked);} 好像用这些高级函数无法控制吧。我要控制的是开机时“嘀”一声的那个喇叭。我现在可以用 Beep 让它发声了,可是声音太小。 原来如此好象的用汇编,记得书上有让pc发生的程序,你可以看看《ibm汇编》 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;}unsigned 怎么能返回 -1 呢?? 电脑出故障了,程序运行之后,好像马上就被挂起了,请大家帮忙解决一下。 达人们,帮我看个程序吧!种子填充算法~ 怎么实现程序的注销功能 有关树形控件的问题 引用出错!!!接口 象联众这样的客户端程序是用什么工具开发的? 新手问题,请各位帮忙救急!谢谢! 调用nero sdk写个刻录软件 关于对话框的问题 求大整数加,减,乘,除,的经典算法,急! 在vc中如何产生0~1之间的随机数 高分求原代码:关于图象的获取传输!
音频技术源代码:ADMixer_Volume
音频技术源代码:ADMixer_Mute
{
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;
}
//---------------------------------------------------------------------------
long GetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_BOOLEAN mxcdMute;
mxcd.hwndOwner = 0;
mxcd.cbStruct = sizeof(mxcd);
mxcd.dwControlID = mxc->dwControlID;
mxcd.cbDetails = sizeof(mxcdMute);
mxcd.paDetails = &mxcdMute;
mxcd.cChannels = 1;
mxcd.cMultipleItems = 0;
if (mixerGetControlDetails((HMIXEROBJ)hmixer, &mxcd,MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE))
return -1;
return mxcdMute.fValue;
}//---------------------------------------------------------------------------
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 SetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc, bool mute)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_BOOLEAN mxcdMute;mxcdMute.fValue=mute;
mxcd.hwndOwner = 0;
mxcd.dwControlID = mxc->dwControlID;
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(mxcdMute);
mxcd.paDetails = &mxcdMute;
mxcd.cChannels = 1;
mxcd.cMultipleItems = 0;
if (mixerSetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_SETCONTROLDETAILSF_VALUE))
return 0;
return 1;
}//---------------------------------------------------------------------------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 LINE IN
{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 音量
// device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; break; //麦克风音量
// device=MIXERLINE_COMPONENTTYPE_SRC_LINE; break; //PC 扬声器音量
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break;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 ,LINE IN
// 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;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;
}//---------------------------------------------------------------------------bool WINAPI SetMute(long dev,long vol)//设置设备静音
{
// dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN
// vol=0,1 分别表示取消静音,设置静音
// 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;default:
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
}if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;
if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_MUTE,&volCtrl))
if(SetMuteValue(hmixer,&volCtrl,(bool)vol))
rc=true;
mixerClose(hmixer);
return rc;
}//---------------------------------------------------------------------------bool WINAPI GetMute(long dev)//检查设备是否静音
{
//dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN
// 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;
default:
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
}if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_MUTE,&volCtrl))
rc=GetMuteValue(hmixer,&volCtrl);
mixerClose(hmixer);
return rc;}使用:
//调节音量
void __fastcall TForm1::TrackBar0Change(TObject *Sender)
{
SetVolume(0,TrackBar0->Position*10);
}//静音
void __fastcall TForm1::CheckBox0Click(TObject *Sender)
{
SetMute(0,CheckBox0->Checked);
}
我要控制的是开机时“嘀”一声的那个喇叭。
我现在可以用 Beep 让它发声了,可是声音太小。
好象的用汇编,记得书上有让pc发生的程序,你可以看看《ibm汇编》
{
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;
}unsigned 怎么能返回 -1 呢??