Lautstärkenänderung unter Windows 7
-
#include <stdio.h> #include <windows.h> #include <TCHAR.H> #include <mmdeviceapi.h> #include <endpointvolume.h> void Usage() { printf("Usage: \n"); printf(" SetVolume [Reports the current volume]\n"); printf(" SetVolume -d <new volume in decibels> [Sets the current default render device volume to the new volume]\n"); printf(" SetVolume -f <new volume as an amplitude scalar> [Sets the current default render device volume to the new volume]\n"); } int _tmain(int argc, _TCHAR* argv[]) { HRESULT hr; bool decibels = false; bool scalar = false; double newVolume; if (argc != 3 && argc != 1) { Usage(); return -1; } if (argc == 3) { if (argv[1][0] == '-') { if (argv[1][1] == 'f') { scalar = true; } else if (argv[1][1] == 'd') { decibels = true; } } else { Usage(); return -1; } newVolume = _tstof(argv[2]); } // ------------------------- CoInitialize(NULL); IMMDeviceEnumerator *deviceEnumerator = NULL; hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER, __uuidof(IMMDeviceEnumerator), (LPVOID *)&deviceEnumerator); IMMDevice *defaultDevice = NULL; hr = deviceEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &defaultDevice); deviceEnumerator->Release(); deviceEnumerator = NULL; IAudioEndpointVolume *endpointVolume = NULL; hr = defaultDevice->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_INPROC_SERVER, NULL, (LPVOID *)&endpointVolume); defaultDevice->Release(); defaultDevice = NULL; // ------------------------- float currentVolume = 0; endpointVolume->GetMasterVolumeLevel(¤tVolume); printf("Current volume in dB is: %f\n", currentVolume); hr = endpointVolume->GetMasterVolumeLevelScalar(¤tVolume); printf("Current volume as a scalar is: %f\n", currentVolume); if (decibels) { hr = endpointVolume->SetMasterVolumeLevel((float)newVolume, NULL); } else if (scalar) { hr = endpointVolume->SetMasterVolumeLevelScalar((float)newVolume, NULL); } endpointVolume->Release(); CoUninitialize(); return 0; }Diesen Code habe ich gefunden. Er funktioniert aber nicht. Wieso? GetLastError() gibt 0 aus.
-
Vielleicht ist unter Windows gerade nicht das default device (GetDefaultAudioEndpoint) als output gesetzt?
-
http://blogs.msdn.com/b/larryosterman/archive/2007/04/03/volume-in-windows-vista-part-1-what-is-volume.aspx
http://blogs.msdn.com/b/larryosterman/archive/2007/04/04/volume-in-windows-vista-part-2-types-of-volume-in-windows-vista.aspx
http://blogs.msdn.com/b/larryosterman/archive/2007/05/08/volume-in-windows-vista-part-3-capture-volume.aspxund diverse andere Artikel in diesem Blog zum Thema Audio.
http://blogs.msdn.com/b/larryosterman/archive/tags/Audio/
-
Ok das hat sich erledigt, aber wie kann ich die Lautstärke des Mikrofons ändern?
-
Hat sich auch erledigt, danke!
-
Lässt d uns an deinem erlangten Wissen teilhaben?