文件名称:
Monitor Audio Volume Levels 监视音量
开发工具:
文件大小: 3kb
下载次数: 0
上传时间: 2006-02-23
详细说明: #include #include MMRESULT rc; // Return code. HMIXER hMixer; // Mixer handle used in mixer API calls. MIXERCONTROL mxc; // Holds the mixer control data. MIXERLINE mxl; // Holds the mixer line data. MIXERLINECONTROLS mxlc; // Obtains the mixer control. // Open the mixer. This opens the mixer with a deviceID of 0. If you // have a single sound card/mixer, then this will open it. If you have // multiple sound cards/mixers, the deviceIDs will be 0, 1, 2, and // so on. rc = mixerOpen(&hMixer, 0,0,0,0); if (MMSYSERR_NOERROR != rc) { // Couldn‘t open the mixer. } // Initialize MIXERLINE structure. ZeroMemory(&mxl,sizeof(mxl)); mxl.cbStruct = sizeof(mxl); // Specify the line you want to get. You are getting the input line // here. If you want to get the output line, you need to use // MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT. mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN; rc = mixerGetLineInfo((HMIXEROBJ)hMixer, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE); if (MMSYSERR_NOERROR == rc) { // Couldn‘t get the mixer line. } // Get the control. ZeroMemory(&mxlc, sizeof(mxlc)); mxlc.cbStruct = sizeof(mxlc); mxlc.dwLineID = mxl.dwLineID; mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_PEAKMETER; mxlc.cControls = 1; mxlc.cbmxctrl = sizeof(mxc); mxlc.pamxctrl = &mxc; ZeroMemory(&mxc, sizeof(mxc)); mxc.cbStruct = sizeof(mxc); rc = mixerGetLineControls((HMIXEROBJ)hMixer,&mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if (MMSYSERR_NOERROR != rc) { // Couldn‘t get the control. } // After successfully getting the peakmeter control, the volume range // will be specified by mxc.Bounds.lMinimum to mxc.Bounds.lMaximum. MIXERCONTROLDETAILS mxcd; // Gets the control values. MIXERCONTROLDETAILS_SIGNED volStruct; // Gets the control values. long volume; // Holds the final volume value. // Initialize the MIXERCONTROLDETAILS structure ZeroMemory(&mxcd, sizeof(mxcd)); mxcd.cbStruct = sizeof(mxcd); mxcd.cbDetails = sizeof(volStruct); mxcd.dwControlID = mxc.dwControlID; mxcd.paDetails = &volStruct; mxcd.cChannels = 1; // Get the current value of the peakmeter control. Typically, you // would set a timer in your program to query the volume every 10th // of a second or so. rc = mixerGetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_GETCONTROLDETAILSF_VALUE); if (MMSYSERR_NOERROR == rc) { // Couldn‘t get the current volume. } volume = volStruct.lValue; // Get the absolute value of the volume. if (volume < 0) volume = -volume; ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.