#include "SoundController.h" #include #include #include SoundController::SoundController(QObject *parent) : QObject(parent) { HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { qDebug() << "Failed to initialize COM"; return; } hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&deviceEnumerator); if (FAILED(hr)) { qDebug() << "Failed to create the device enumerator"; CoUninitialize(); return; } hr = deviceEnumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, &device); if (FAILED(hr)) { qDebug() << "Failed to get the default audio endpoint"; deviceEnumerator->Release(); CoUninitialize(); return; } hr = device->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_ALL, NULL, (void**)&endpointVolume); if (FAILED(hr)) { qDebug() << "Failed to activate the endpoint volume interface"; device->Release(); deviceEnumerator->Release(); CoUninitialize(); return; } } int SoundController::getSystemVolume() { float fVolume; HRESULT hr = endpointVolume->GetMasterVolumeLevelScalar(&fVolume); if (FAILED(hr)) { qDebug() << "Failed to get the current volume"; return -1; } return static_cast(fVolume * 100); } bool SoundController::setSystemVolume(int volume) { float fVolume = static_cast(volume) / 100.0f; HRESULT hr = endpointVolume->SetMasterVolumeLevelScalar(fVolume, NULL); if (FAILED(hr)) { qDebug() << "Failed to set the volume"; return false; } return true; }