求助:c++系统控制音量和静音的程序,,万分感谢

时间:2021-07-07 14:16:50
c++系统控制音量和静音的程序,,万分感谢
提供些API也行

9 个解决方案

#1


要看你在什么平台下做了,然后确定用audio的API

#2


函数 waveOutGetVolume() 和 waveOutSetVolume() 可用于设置和检索波形输出设备的音量。
http://support.microsoft.com/kb/139098/zh-cn

#3


这个帖子我在VC/MFC版看到过
而且应该已经解决了吧

#4


google吧,window有相对应的api可以使用

#5


楼主 每天回帖即可获得10分

#6


通过系统API控制系统录音羽播放的音量
  #ifndef   SoundControlH   
  #define   SoundControlH   
  //---------------------------------------------------------------------------   
  #include   <Classes.hpp>   
  #include   <mmsystem.h>   
  #include   <mmreg.h>   
    
    
  bool   GetVolumeControl(HMIXER   hmixer   ,long   componentType,long   ctrlType,MIXERCONTROL*   mxc);   
    
  long   GetMuteValue(HMIXER   hmixer   ,MIXERCONTROL   *mxc)   ;   
  unsigned   GetVolumeValue(HMIXER   hmixer   ,MIXERCONTROL   *mxc);   
  bool   SetVolumeValue(HMIXER   hmixer   ,MIXERCONTROL   *mxc,   long   volume);   
  bool   SetMuteValue(HMIXER   hmixer   ,MIXERCONTROL   *mxc,   bool   mute);   
    
    
  //下面四个是输出函数,可以自己调用   
  bool   WINAPI   SetVolume(long   dev,long   vol);//设置设备的音量   
  unsigned   WINAPI   GetVolume(int   dev);//得到设备的音量dev=0主音量,1WAVE   ,2MIDI   ,3   LINE   IN   
    
  bool   WINAPI   SetMute(long   dev,bool   vol);//设置设备静音   
  bool   WINAPI   GetMute(long   dev);   
  #endif   
    
    
    
  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;   
  }     
  //---------------------------------------------------------------------------     
  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;     
  case   4:   
  device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;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;   
  case   4:   
  device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;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,bool   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;     
  case   4:   
  device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;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;   
  case   4:   
  device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;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;   
    
  }

#7


楼上强人~

#8


引用 6 楼 jay_16 的回复:
通过系统API控制系统录音羽播放的音量
  #ifndef   SoundControlH   
  #define   SoundControlH   
  //---------------------------------------------------------------------------   
  #include   <Classes.hpp>   
  #……

我这个实现的就是像笔记本上音量的控制,,当调节音量的时候,屏幕上进度条随之变化,这个程序对于我这个可以么?

#9


路过观望

#1


要看你在什么平台下做了,然后确定用audio的API

#2


函数 waveOutGetVolume() 和 waveOutSetVolume() 可用于设置和检索波形输出设备的音量。
http://support.microsoft.com/kb/139098/zh-cn

#3


这个帖子我在VC/MFC版看到过
而且应该已经解决了吧

#4


google吧,window有相对应的api可以使用

#5


楼主 每天回帖即可获得10分

#6


通过系统API控制系统录音羽播放的音量
  #ifndef   SoundControlH   
  #define   SoundControlH   
  //---------------------------------------------------------------------------   
  #include   <Classes.hpp>   
  #include   <mmsystem.h>   
  #include   <mmreg.h>   
    
    
  bool   GetVolumeControl(HMIXER   hmixer   ,long   componentType,long   ctrlType,MIXERCONTROL*   mxc);   
    
  long   GetMuteValue(HMIXER   hmixer   ,MIXERCONTROL   *mxc)   ;   
  unsigned   GetVolumeValue(HMIXER   hmixer   ,MIXERCONTROL   *mxc);   
  bool   SetVolumeValue(HMIXER   hmixer   ,MIXERCONTROL   *mxc,   long   volume);   
  bool   SetMuteValue(HMIXER   hmixer   ,MIXERCONTROL   *mxc,   bool   mute);   
    
    
  //下面四个是输出函数,可以自己调用   
  bool   WINAPI   SetVolume(long   dev,long   vol);//设置设备的音量   
  unsigned   WINAPI   GetVolume(int   dev);//得到设备的音量dev=0主音量,1WAVE   ,2MIDI   ,3   LINE   IN   
    
  bool   WINAPI   SetMute(long   dev,bool   vol);//设置设备静音   
  bool   WINAPI   GetMute(long   dev);   
  #endif   
    
    
    
  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;   
  }     
  //---------------------------------------------------------------------------     
  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;     
  case   4:   
  device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;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;   
  case   4:   
  device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;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,bool   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;     
  case   4:   
  device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;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;   
  case   4:   
  device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;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;   
    
  }

#7


楼上强人~

#8


引用 6 楼 jay_16 的回复:
通过系统API控制系统录音羽播放的音量
  #ifndef   SoundControlH   
  #define   SoundControlH   
  //---------------------------------------------------------------------------   
  #include   <Classes.hpp>   
  #……

我这个实现的就是像笔记本上音量的控制,,当调节音量的时候,屏幕上进度条随之变化,这个程序对于我这个可以么?

#9


路过观望