向高手请教:用什么API函数能把Windows的系统声音关小 请问,第一步,用什么API函数能把Windows的系统声音关小?近接着,第二步, 能把Windows的系统声音定位在总大小的1/3处?(就是控制面板的那个声音的主音量在最大的1/3处)? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 mciSendString可以,但用法很复杂 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; } 最后,获得了调整主音量的Control,就可以设置音量了。 MIXERCONTROLDETAILS mxcd; MIXERCONTROLDETAILS_UNSIGNED mxcd_u[2]; mxcd.cbStruct=sizeof(mxcd); mxcd.cChannels=m_mxl.cChannels; mxcd.dwControlID=m_mxctrl.dwControlID; mxcd.paDetails=&mxcd_u; mxcd.cbDetails=4; mxcd.cMultipleItems=m_mxctrl.cMultipleItems; mxcd_u[0].dwValue=m_mxctrl.Bounds.dwMaximum; //左声道音量,值从0到m_mxctrl.Bounds.dwMaximum mxcd_u[1].dwValue=m_mxctrl.Bounds.dwMaximum; //右声道音量,,值从0到m_mxctrl.Bounds.dwMaximum mixerSetControlDetails((HMIXEROBJ)m_hmx,&mxcd,MIXER_SETCONTROLDETAILSF_VALUE); char *如何转换为TCHAR * 登录窗口屏蔽回车键 找工作中……每天散100分 关于继承自定义dialog的问题 怎么更改默认的控件变量数据类型 怎么知道一个窗口是否已关闭? 关于HTML文件解析的问题?请大虾指点! 请教在oracle中怎样建立一个有唯一ID的表,ID自动增长? 如何显示类的帮助提示? 又是位图问题 关于CToolBarCtrl的疑问 请教DirectShow单帧播放的问题
可以,但用法很复杂
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;
}
最后,获得了调整主音量的Control,就可以设置音量了。
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_UNSIGNED mxcd_u[2];
mxcd.cbStruct=sizeof(mxcd);
mxcd.cChannels=m_mxl.cChannels;
mxcd.dwControlID=m_mxctrl.dwControlID;
mxcd.paDetails=&mxcd_u;
mxcd.cbDetails=4;
mxcd.cMultipleItems=m_mxctrl.cMultipleItems;
mxcd_u[0].dwValue=m_mxctrl.Bounds.dwMaximum;
//左声道音量,值从0到m_mxctrl.Bounds.dwMaximum
mxcd_u[1].dwValue=m_mxctrl.Bounds.dwMaximum;
//右声道音量,,值从0到m_mxctrl.Bounds.dwMaximum
mixerSetControlDetails((HMIXEROBJ)m_hmx,&mxcd,MIXER_SETCONTROLDETAILSF_VALUE);