qt设置linux主音量,QT windows 7 调整系统主音量方法,给需要的人

需要在.pro文件中加 QT       += axcontainer

#include

#include

#include

//#include

//#include

#include

bool MainWindow::SetVolumeLevel(int level)

{

HRESULT hr;

IMMDeviceEnumerator* pDeviceEnumerator = 0;

IMMDevice* pDevice = 0;

IAudioEndpointVolume* pAudioEndpointVolume = 0;

IAudioClient* pAudioClient = 0;

try {

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&pDeviceEnumerator);

if (FAILED(hr)) throw "CoCreateInstance";

hr = pDeviceEnumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, &pDevice);

if (FAILED(hr)) throw "GetDefaultAudioEndpoint";

hr = pDevice->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_ALL, NULL, (void**)&pAudioEndpointVolume);

if (FAILED(hr)) throw "pDevice->Active";

hr = pDevice->Activate(__uuidof(IAudioClient), CLSCTX_ALL, NULL, (void**)&pAudioClient);

if (FAILED(hr)) throw "pDevice->Active";

if (level == -2) {

hr = pAudioEndpointVolume->SetMute(FALSE, NULL);

if (FAILED(hr)) throw "SetMute";

}

else if (level == -1) {

hr = pAudioEndpointVolume->SetMute(TRUE, NULL);

if (FAILED(hr)) throw "SetMute";

}

else {

if (level<0 || level>100) {

hr = E_INVALIDARG;

throw "Invalid Arg";

}

float fVolume;

fVolume = level / 100.0f;

hr = pAudioEndpointVolume->SetMasterVolumeLevelScalar(fVolume, &GUID_NULL);

if (FAILED(hr)) throw "SetMasterVolumeLevelScalar";

pAudioClient->Release();

pAudioEndpointVolume->Release();

pDevice->Release();

pDeviceEnumerator->Release();

return true;

}

}

catch (...) {

if (pAudioClient) pAudioClient->Release();

if (pAudioEndpointVolume) pAudioEndpointVolume->Release();

if (pDevice) pDevice->Release();

if (pDeviceEnumerator) pDeviceEnumerator->Release();

throw;

}

return false;

}

本人新手,为了实现这个功能,找了好久资料.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值