现在的位置: 首页 > 综合 > 正文

VC 让进程/网页静音的方法

2018年07月14日 ⁄ 综合 ⁄ 共 1418字 ⁄ 字号 评论关闭
BOOL SetMute(BOOL bMute)
{
HMIXER hMixer;
MIXERCONTROL mxc;
MIXERLINE mxl;
MIXERLINECONTROLS mxlc;
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_SIGNED volStruct;
MMRESULT mmr;

//Sound Setting
mmr = mixerOpen(&hMixer, 0, 0, 0, 0);
if (mmr != MMSYSERR_NOERROR) return FALSE;

// 初始化MIXERLINE结构体.
ZeroMemory(&mxl, sizeof(MIXERLINE));
mxl.cbStruct = sizeof(MIXERLINE);

// 指出需要获取的通道,扬声器用MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;

mmr = mixerGetLineInfo((HMIXEROBJ)hMixer, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);
if (mmr != MMSYSERR_NOERROR) return FALSE;

// 取得控制器.
ZeroMemory(&mxlc, sizeof(MIXERLINECONTROLS));
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(mxc);
mxlc.pamxctrl = &mxc;
//mxc.cMultipleItems=0;

ZeroMemory(&mxc, sizeof(MIXERCONTROL));
mxc.cbStruct = sizeof(MIXERCONTROL);
mmr = mixerGetLineControls((HMIXEROBJ)hMixer, &mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE);
if (mmr != MMSYSERR_NOERROR) return FALSE;

// 初始化MIXERCONTROLDETAILS结构体
ZeroMemory(&mxcd, sizeof(MIXERCONTROLDETAILS));
mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_SIGNED);
mxcd.dwControlID = mxc.dwControlID;
mxcd.paDetails = &volStruct;
mxcd.cChannels = 1;

// 获得音量值
volStruct.lValue = bMute;
mmr = mixerSetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE);

mixerClose(hMixer);
return TRUE;
}
转载:http://bbs.csdn.net/topics/390021167

抱歉!评论已关闭.