如何初始化setMasterVolume的hresult


#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" initialization":无法从"原始器列表"转换为" hresult"

因此,我的问题是:如何初始化HRESULT因此SetMasterVolume有效?或者,如何设置SetMasterVolume?如果可能的话,请解释为什么我不能写

SetMasterVolume(1.0,NULL);

当我包括audioclient.h

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);

相关内容

  • 没有找到相关文章

最新更新