◆◆◆◆ 怎样才可以查询windows当前音量?◆◆◆◆

skymartin 2004-11-23 05:22:12
比如我现在放一首mp3,电脑的音量肯定时刻在变化,我怎么才能够查询出当前的音量呢?

我说的音量不是只右下角那个黄色小喇叭可以调节的那个音量,那个音量如果你不去动他,基本上是固定不变的。

windows有没有提供什么api完成上面的功能的呢?
...全文
297 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mybios 2004-11-29
  • 打赏
  • 举报
回复
成功了告诉一声!我也想用。
yszmax 2004-11-29
  • 打赏
  • 举报
回复
gz
NowCan 2004-11-24
  • 打赏
  • 举报
回复
用低级音频函数。
waveInGetNumDevs();
waveInGetDevCaps (0, &m_WaveInDevCaps, sizeof(WAVEINCAPS));}
WaveInitFormat(1/* mono*/,m_WaveInSampleRate /* khz */,16 /* bits */);
waveInOpen( &m_WaveIn,0, &m_WaveFormat,(DWORD)
waveInPrepareHeader( m_WaveIn, &m_WaveHeader, sizeof(WAVEHDR) ); }
waveInAddBuffer( m_WaveIn, &m_WaveHeader, sizeof(WAVEHDR) );
waveInStart( m_WaveIn );
www.csdn.net/develop/Read_Article.asp?Id=9780

除此之外,还要将录音源设置为“Mixer Out”或者是“Wave Out”
oyljerry 2004-11-24
  • 打赏
  • 举报
回复
waveOutGetVolume
skymartin 2004-11-24
  • 打赏
  • 举报
回复
谢谢大侠们,正在尝试中^_^
kingzai 2004-11-23
  • 打赏
  • 举报
回复
用低级音频函数。
waveInGetNumDevs();
waveInGetDevCaps (0, &m_WaveInDevCaps, sizeof(WAVEINCAPS));}
WaveInitFormat(1/* mono*/,m_WaveInSampleRate /* khz */,16 /* bits */);
waveInOpen( &m_WaveIn,0, &m_WaveFormat,(DWORD)
waveInPrepareHeader( m_WaveIn, &m_WaveHeader, sizeof(WAVEHDR) ); }
waveInAddBuffer( m_WaveIn, &m_WaveHeader, sizeof(WAVEHDR) );
waveInStart( m_WaveIn );
www.csdn.net/develop/Read_Article.asp?Id=9780
skymartin 2004-11-23
  • 打赏
  • 举报
回复
试过了, 的确可以, 但是我要的不是右下角黄色喇叭中设置的那个音量啊:(

换个说法问法把: 播mp3时, 怎么可以得到声卡中当前声音波形的振幅.

当然不同频率有不同频率的波形.

请问大侠有其他办法吗? 不过真的很谢谢您^_^
kingzai 2004-11-23
  • 打赏
  • 举报
回复
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;
http://search.csdn.net/Expert/topic/1431/1431476.xml?temp=.8853113
skymartin 2004-11-23
  • 打赏
  • 举报
回复
好像出了点问题.

mmr = mixerOpen(&m_hmx, 0, (DWORD)m_hWnd, 0L, CALLBACK_WINDOW);
一句中m_hWnd是必须的吗? 我最终的程序是控制台程序,没有窗口怎么办?

还有m_mxctrl.Metrics.cbCustomData我估计就是音量了,但是为什么无论我放什么mp3, 其值总为192啊, 不明白为什么~~~
skymartin 2004-11-23
  • 打赏
  • 举报
回复
是放在MIXERLINECONTROLS的LPMIXERCONTROL pamxctrl成员中吗?

pamxctrl是一个MIXERCONTROL结构,但是MIXERCONTROL中也没有发现有音量的属性啊.

还请教大侠~~
kingzai 2004-11-23
  • 打赏
  • 举报
回复
m_mxlc 是MIXERLINECONTROLS变量,你查询MIXERLINECONTROLS结构
skymartin 2004-11-23
  • 打赏
  • 举报
回复
音量值是保存在m_mxlc中吗?
但是我MSDN查了一下,没有发现m_mxlc中那个成员表示音量的.
kingzai 2004-11-23
  • 打赏
  • 举报
回复
MMRESULT mmr;
HMIXER m_hmx;
MIXERCAPS m_mxcaps;
MIXERLINE m_mxl;
MIXERLINECONTROLS m_mxlc;
MIXERCONTROL m_mxctrl;
ULONG cConnections,v;
mmr = mixerGetDevCaps(0, &m_mxcaps, sizeof(m_mxcaps));
if (MMSYSERR_NOERROR != mmr)
{
MessageBox("Can't Get Device Caps.");
return TRUE;
}
mmr = mixerOpen(&m_hmx, 0, (DWORD)m_hWnd, 0L, CALLBACK_WINDOW);
if (MMSYSERR_NOERROR != mmr)
{
MessageBox("Can't Open Mixer Device.");
return TRUE;
}
m_mxl.cbStruct = sizeof(m_mxl);
m_mxl.dwDestination = 0;
mmr = mixerGetLineInfo((HMIXEROBJ)m_hmx, &m_mxl, MIXER_GETLINEINFOF_DESTINATION);
if (MMSYSERR_NOERROR != mmr)
{
MessageBox("Can't Get Mixer Device Line Info For Volume Controls");
return TRUE;
}
cConnections=m_mxl.cConnections;
m_mxlc.cbStruct = sizeof(m_mxlc);
m_mxlc.dwLineID = m_mxl.dwLineID;
m_mxlc.cControls = m_mxl.cControls;
m_mxlc.cbmxctrl = sizeof(m_mxctrl);
m_mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
m_mxlc.pamxctrl = &m_mxctrl;
mmr = mixerGetLineControls((HMIXEROBJ)m_hmx, &m_mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE);
if (MMSYSERR_NOERROR != mmr)
{
MessageBox("Can't Get Line Info For Volume Controls");
return TRUE;
}
不平衡电网下基于延时相消法(DSC)的T型三电平LCL逆变器(Simulink仿真实现)内容概要:本文针对不平衡电网条件下T型三电平LCL逆变器的并网性能问题,提出基于延时相消法(DSC)的序分量分离控制策略,并通过Simulink进行仿真实现。研究重点在于解决电网电压不平衡引起的负序分量导致的并网电流畸变、功率波动及系统不稳定等问题。通过DSC方法实现正负序分量的快速、精确分离,结合三电平逆变器的中点电位控制与LCL滤波器的谐振抑制,优化系统在非理想电网下的动态响应与稳态性能。文中详细阐述了控制策略的设计、仿真模型的构建及关键参数的整定,并通过仿真结果验证了该方法在抑制电流畸变、平衡功率输出和提升系统鲁棒性方面的有效性。; 适合人群:具备电力电子、自动控制或电气工程相关专业背景,熟悉Simulink仿真工具,从事新能源发电、逆变器控制或微电网系统研究的研发人员及高年级研究生。; 使用场景及目标:①研究不平衡电网下三电平逆变器的并网控制策略;②掌握延时相消法(DSC)在序分量分离中的应用;③学习LCL型逆变器的建模与控制方法;④提升在复杂工况下电力电子系统稳定性分析与仿真能力。; 阅读建议:建议读者结合Simulink模型同步学习,重点关注DSC模块的实现逻辑、序分量控制环路设计及中点电位平衡策略,同时可通过修改电网不平衡度、负载扰动等工况进行仿真验证,深入理解控制策略的适应性与鲁棒性。
内容概要:本文对认知无线电中的双阈值能量检测方法进行了系统性仿真研究,并提供了完整的Matlab代码实现。通过引入高低两个能量阈值,该方法在复杂无线环境中能够更精确地区分授权用户信号与噪声或干扰,显著提升了频谱感知的准确性与可靠性。研究深入分析了算法原理,构建了详细的仿真模型,并从多个维度评估其性能,尤其在低信噪比条件下展现出相比传统单阈值方法更为优越的检测能力。文章还系统探讨了不同参数配置对检测性能的影响,为实际系统中的参数优化和工程应用提供了理论依据和技术支持。; 适合人群:具备一定通信工程、信号处理及Matlab编程基础的高校研究生、科研人员以及从事无线通信技术研发的工程技术人员。; 使用场景及目标:①用于认知无线电系统中高性能频谱感知技术的研发与性能优化;②作为高校相关课程的教学案例,帮助学生深入理解能量检测原理及其改进算法的设计思路;③为科研工作者提供可复现、可扩展的Matlab仿真平台,以支持对新型频谱感知算法的进一步探索与验证。; 阅读建议:建议读者结合提供的Matlab代码逐行研读,重点理解双阈值的设计理念、判决逻辑的实现流程以及仿真结果的分析方法。在学习过程中,应积极动手调整信号参数(如信噪比、采样点数、阈值大小等),观察其对检测概率、虚警概率等关键指标的影响,从而深化对算法性能边界的认知。

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧