设为首页 加入收藏

TOP

调节系统音量VC++(适合win和xp系统) 打开静音 增减和减小系统音量 (一)
2014-11-23 19:05:49 】 浏览:655
Tags:调节 系统 音量 适合 win 打开 静音 增减 减小

#include
#include
#include
#pragma comment(lib, "winmm.lib")

以下程序为:如果系统处于静音状态 则打开系统音量:

//Windows 系统音量设置

IMMDevice *device = NULL;

HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
return FALSE;
}

IMMDeviceEnumerator *deviceEnumerator = NULL;
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER,
__uuidof(IMMDeviceEnumerator), (LPVOID *)&deviceEnumerator);

if (FAILED(hr))
{
// xp 系统调节音量
HMIXER hMixer;
MIXERLINE mixerline;
MIXERLINECONTROLS mlcs;
MIXERCONTROL mc;
MIXERCONTROLDETAILS_BOOLEAN mcdMute;
MIXERCONTROLDETAILS mcd;
LONG lvalue;
try{
if (MMSYSERR_NOERROR == mixerOpen(&hMixer, 0, 0, 0, 0))
{
RtlZeroMemory(&mixerline, sizeof(MIXERLINE));
mixerline.cbStruct = sizeof(MIXERLINE);
mixerline.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
if (MMSYSERR_NOERROR == mixerGetLineInfo((HMIXEROBJ)hMixer, &mixerline, MIXER_GETLINEINFOF_COMPONENTTYPE))
{
RtlZeroMemory(&mlcs, sizeof(MIXERLINECONTROLS));
mlcs.cbStruct = sizeof(MIXERLINECONTROLS);
mlcs.dwLineID = mixerline.dwLineID;
mlcs.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE;
mlcs.cControls = 1;
mlcs.cbmxctrl = sizeof(MIXERCONTROL);
mlcs.pamxctrl = & mc;
if (MMSYSERR_NOERROR == mixerGetLineControls((HMIXEROBJ)hMixer, &mlcs, MIXER_GETLINECONTROLSF_ONEBYTYPE))
{
RtlZeroMemory(&mcd, sizeof(MIXERCONTROLDETAILS));
mcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
mcd.dwControlID = mc.dwControlID;
mcd.cChannels = 1;
mcd.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
mcd.paDetails = &mcdMute;

if (MMSYSERR_NOERROR == mixerGetControlDetails((HMIXEROBJ)hMixer, &mcd, MIXER_GETCONTROLDETAILSF_VALUE))
{
lvalue = mcdMute.fValue;
if (lvalue != 0 )
{
RtlZeroMemory(&mcd, sizeof(MIXERCONTROLDETAILS));
mcdMute.fValue = FALSE; //静音设置,0非静音,1静音
mcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
mcd.dwControlID = mc.dwControlID;
mcd.cChannels = 1;
mcd.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
mcd.paDetails = &mcdMute;
mixerSetControlDetails((HMIXEROBJ)hMixer, &mcd, MIXER_SETCONTROLDETAILSF_VALUE);
}
}
}
}

MIXERLINE mxl;
MIXERCONTROL mxc;
MIXERLINECONTROLS mxlc;
MIXERCAPS m_mxcaps;

mixerOpen(&hMixer,0,NULL,
NULL,MIXER_OBJECTF_MIXER | CALLBACK_WINDOW);
mixerGetDevCaps((UINT)hMixer, &m_mxcaps, sizeof(MIXERCAPS));
mxl.cbStruct = sizeof(MIXERLINE);
mxl.dwComponentType =MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;

mixerGetLineInfo((HMIXEROBJ)hMixer,&mxl,
MIXER_OBJECTF_HMIXER|MIXER_GETLINEINFOF_COMPONENTTYPE);


mxlc.cbStruct = sizeof(mxlc); // 微软用此办法判断版本
mxlc.dwLineID = mxl.dwLineID; // 上面取得的声卡音频输出线路标识
// 控制类型为控制音量
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
mxlc.cControls = 1; // 使用 MIXERCONTROL 结构体变量个数
mxlc.pamxctrl = &mxc; // MIXERCONTROL 结构体变量指针
mxlc.cbmxctrl = sizeof(mxc); // MIXERCONTROL 结构体变量字节大小

// 取得控制器信息
mixerGetLineControls((HMIXEROBJ)hMixer,
&mxlc,
MIXER_GETLINECONTROLSF_ONEBYTYPE);

MIXERCONTROLDETAILS_UNSIGNED mxcdVolume;
MIXERCONTROLDETAILS mxcd;
mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
mxcd.d

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VC维的图像解释 下一篇wmi 获取当前登录用户名

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目