#cpp #winapi
В Windows 7 можно управлять громкостью как всей системы в целом, так и каждого процесса в отдельности. Как можно программным способом отключить звук для текущего процесса?
Ответы
Ответ 1
Это легко можно сделать с помощью AudioEndpoint API. Работает, начиная с Windows 7. Здесь можно прочесть, что такое Audio Endpoint Devices. По правде говоря, приложение может иметь не только одну аудио-сессию. Сессии идентифицируются по GUID. Но для простоты положим, что сессия только одна, и передадим GUID_NULL. _COM_SMARTPTR_TYPEDEF(IAudioSessionManager2, __uuidof(IAudioSessionManager2)); bool MuteCurrentProcess() { IAudioSessionManager2Ptr mgr; CreateSessionManager(&mgr); ISimpleAudioVolumePtr volume; if (SUCCEEDED(mgr->GetSimpleAudioVolume(&GUID_NULL, false, &volume))) { ISimpleAudioVolumePtr vol; volume->QueryInterface(__uuidof(IAudioEndpointVolume), (void**)&vol); if (SUCCEEDED(volume->SetMute(TRUE, 0))) { return true; } } return false; }
Комментариев нет:
Отправить комментарий