Как инициализировать HRESULT для SetMasterVolume?
#include <iostream>
#include <windows.h>
#include <Audioclient.h>
int main(){
ShellExecute(NULL, "open", "https://www.youtube.com/watch?v=zf2VYAtqRe0", NULL, NULL, SW_SHOWNORMAL);
HRESULT SetMasterVolume(1.0, NULL);
return();
}
Итак, я пытаюсь закодировать эту программу, которая открывает песню YouTube и одновременно увеличивает громкость. Я не понимаю ошибку, которую я получаю.
ОШИБКА: C2440 "Инициализация": невозможно преобразовать из "списка инициализаторов" в "HRESULT"
Итак, поэтому мой вопрос: как мне инициализировать HRESULT
так SetMasterVolume
работает? Или как настроить SetMasterVolume
? И, пожалуйста, если возможно, объясните, почему я не могу просто написать
SetMasterVolume(1.0,NULL);
Когда я включил audioclient.h
2 ответа
ISimpleAudioVolume::SetMasterVolume
это метод COM, это не обычный WinAPI. Вы получаете ошибку компиляции, когда просто вводите функцию. Добавление HRESULT
перед ним возникнет другая ошибка C++.
Используйте этот код вместо SetMasterVolumeLevelScalar
На основе кода из:
Изменить основной объем в Visual C++
#include <Windows.h>
#include <Mmdeviceapi.h>
#include <Endpointvolume.h>
BOOL ChangeVolume(float nVolume)
{
HRESULT hr = NULL;
IMMDeviceEnumerator *deviceEnumerator = NULL;
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER,
__uuidof(IMMDeviceEnumerator), (LPVOID *)&deviceEnumerator);
if(FAILED(hr))
return FALSE;
IMMDevice *defaultDevice = NULL;
hr = deviceEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &defaultDevice);
deviceEnumerator->Release();
if(FAILED(hr))
return FALSE;
IAudioEndpointVolume *endpointVolume = NULL;
hr = defaultDevice->Activate(__uuidof(IAudioEndpointVolume),
CLSCTX_INPROC_SERVER, NULL, (LPVOID *)&endpointVolume);
defaultDevice->Release();
if(FAILED(hr))
return FALSE;
hr = endpointVolume->SetMasterVolumeLevelScalar(nVolume, NULL);
endpointVolume->Release();
return SUCCEEDED(hr);
}
int main()
{
CoInitialize(NULL);
ChangeVolume(0.5);
CoUninitialize();
return 0;
}
Вам нужно дать ему имя и присвоить ему.
HRESULT hResult = SetMasterVolume(1.0, NULL);